MATLAB學習筆記(八)——MATLAB數值積分與微分


(一)數值積分

一、數值積分的MATLAB實現方法:

1、變步長辛普生法(quad)法:

(1)調用格式:

[I,n]=quad('fname',a,b,tol,trace);

   fname是被積函數;

   a,b是積分上下限;

   tol來控制積分精度,默認為0.001;

   trace控制是否展現積分過程,默認為0,不展現;若trace≠0,則展現。

(2)fname使用的兩種方法:

   建立函數文件:

function f=fesin(x)
f=……;

   另一種則是使用內聯函數(據說14后的版本會刪除這個):

g=inline('exp(-0.5*x)',x);

2、牛頓——科特斯法

[I,n]=quad8('fname',a,b,tol,trace);

   形參完全同上,但是效果比較好。

3、當被積函數只有離散解時積分的方法:

trapz(X,Y);

  X,Y是等長的向量,滿足Y=f(X);

二、二重定積分的數值求解

I=dblquad(f,a,b,c,d,tol,trace);

  f為被積函數,同樣可以有兩中給出方式

  a,b,c,d定義了被積區間

  tol為精度

  trace為是否展示過程

(二)數值微分

一、數值差分與差商

1、導數的定義:

image

2、差分定義:

image

3、差商定義:

image

image

二、數值微分的實現:

一共三種方法:

(1)使用多項式或者樣條函數進行擬合,對擬合函數進行求導,得到需要點的導數

(2)使用差商作為導數

(3)如果被積函數可導,可直接求導,再帶入。

一個demo

image

MATLAB三種方式編程求解:

f=inline('sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2');
g=inline('(3*x.^2+4*x-1)./sqrt(x.^3+2*x.^2-x+12)/2+1/6./(x+5).^(5/6)+5');

x=-3:0.01:3;    %求導數點
%方法一
p=polyfit(x,f(x),5);
dp=polyder(p);
dpx=polyval(dp,x);
%方法二
dx=diff(f([x,3.01]))/0.01;
%方法三
gx=g(x);
plot(x,dpx,x,dx,'.',x,gx,'-');

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM