注意:diff函式計算的是向量元素間的差分,故差分向量元素的個數比原向量少了
乙個。同樣,對於矩陣來說,差分後的矩陣比原矩陣少了一行或一列。
另外,計算差分之後,可以用f(x)在某點處的差商作為其導數的近似值。
matlab提供了求向前差分的函式diff,其呼叫格式有三種:
dx=diff(x):計算向量x的向前差分,dx(i)
=x(i+1)-x(i),i=1,2,…,n-1。 dx=diff(x,n):計算向量x的n階向前差分。例如,diff(x,2)
=diff(diff(x))。 dx=diff(a,n,dim):計算矩陣a的n階差分,dim=1時(預設狀態),按列計算
差分;dim=2,按行計算差分。
基於自適應辛普森方法
[i,n]
=quad(filename,a,b,tol,trace)
基於自適應gauss-lobatto方法
[i,n]
=quadl(filename,a,b,tol,trace)
其中,filename是被積函式名;a和b分別是定積分的下限和上限,積分限[a,b]
必須是有限的,不能為無窮大(inf);tol用來控制積分精度,預設時取
tol=10-6;trace控制是否展現積分過程,若取非0則展現積分過程,取0則不展
現,預設時取trace=0;返回引數i即定積分的值,n為被積函式的呼叫次數。
基於全域性自適應積分方法 i=
integral
(filename,a,b)
其中,i是計算得到的積分;filename是被積函式;a和b分別是定積分的下限和
上限,積分限可以為無窮大。
>
> f=@(x)1./
(x.*
sqrt(1
-log
(x).^2
));>
>i=
integral
(f,1
,exp(1
))i=
1.5708
基於自適應高斯-克朗羅德方法 [i
,err]
=quadgk
(filename,a,b)
其中,err返回近似誤差範圍,其他引數的含義和用法與quad函式相同。積分
上下限可以是無窮大(−inf或inf),也可以是複數。如果積分上下限是複數,
則quadgk函式在復平面上求積分。
例5 設x=1:6,y=[6,8,11,7,5,2],用trapz函式計算定積分。
x=1:6;y=[6,8,11,7,5,2];
plot(x,y,』-ko』);
grid on
axis([1,6,0,11]);
i1=trapz(x,y)
i1 =
35
i2=sum(diff(x).*(y(1:end-1)+y(2:end))/2)i2 =
35
求二重積分的數值解i=
integral2
(filename,a,b,c,d)i=
quad2d
(filename,a,b,c,d)i=
dblquad
(filename,a,b,c,d,tol)
求三重積分的數值解:i=
integral3
(filename,a,b,c,d,e,f)i=
triplequad
(filename,a,b,c,d,e,f,tol)
>
> f1=@(x,y)
exp(
-x.^2/
2).*
sin(x.^2
+y);
>
>i1=
quad2d
(f1,-2
,2,-
1,1)
i1=1.574
>
> f2=@(x,y,z)
4*x.
*z.*
exp(
-z.*z.
*y-x.
*x);
>
>i2=
integral3
(f2,
0,pi,
0,pi,0,
1)i2=
1.7328
數值分析實驗 二 之數值積分與微分
1 用復化梯形公式的自動控制誤差演算法求積分。2 romberg積分演算法求積分。復化梯形公式 sy2 1.m檔案 myint 0,1,100 fun1.m檔案 function f fun1 x if x 0 x 1 f 1 else f sin x x endmyint,m檔案 function...
Matlab數值積分
function gc,ak,xk guasschebyshev fun,n 高斯 勒讓德數值積分 引數說明 fun 積分表示式,可以是函式控制代碼 inline函式 匿名函式 字串表示式,但是必須可以接受向量輸入 a,b 積分上下限只能 1 1 故忽略 n 積分階數,可以任意正整數,但是不建議設定...
matlab 數值積分!
1.梯形格式 2.其他格式 matlab提供了quad quadl 等函式命令計算一元函式的數值積分,其中quad 採用遍歷的自適應simpson法計算函式的數值積分,quadl採用遍歷的自適應lobatto法計算函式的數值積分。其呼叫格式一般為 q,fcnt quad function,a,b 其...