目錄
6.1數值微分與數值積分
6.2線性方程求解
6.3非線性方程求解與函式極值計算
6.4常微分方程數值求解
dx = diff(x) 計算向量x的向前差分,dx(i)=x(i+1)-x(i)dx = diff(x, n) 計算向量x的n階向前差分
dx = diff(a, n, dim) 計算矩陣的n階差分,dim=1時(預設狀態),按列計算差分,dim=2,按行計算差分
[l, n] = quad(filename, a, b, tol, trace ) 基於自適應辛普森方法其中,filename是被積函式名; a和b是定積分的上限和下限(積分限必須是有限的),tol用來控制積分情況,預設時取[l, n] = quadl(filename, a, b, tol, trace ) 基於自適應辛普森方法
l = integral(filename, a, b ) 基於全域性自適應積分方法其中,,filename是被積函式名;a和b是定積分的上限和下限(積分限可以為無窮大),返回引數i即為定積分的值
[l, err] = quadgk(filename, a, b) 基於自適應高斯-克朗羅德方法其中,err返回近似誤差範圍,其他引數的含義和用法與quad函式相同.積分上下限可以實無窮大(-inf或inf),也可以是複數.如果積分上下限是複數,則quadgk函式在復平面上求積分.
l = trapz(x, y) 基於梯形積分法其中,向量x,y定義函式關係y=f(x)
l = integral2(filename, a, b, c, d)l = quad2d(filename, a, b, c, d)
l = dblquad(filename, a, b, c, d, tol)
l = integral3(filename, a, b, c, d, e, f)l = triplequad(filename, a, b, c, d, e, f, tol)
ax=b,因此x=a\b若右端項為n*m的矩陣,則x=a\b可同時獲得稀疏矩陣a相同的m個線性方程組的數值解x,x為n*m的矩陣.即x(:,j)=a\b(:,j),j=1,2,...,m
a=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]';
x=a\b
主要分為以下三種分解方式
lu分解(以此為例)基本思想如下:qr分解
cholesky分解
分解函式
[l,u]=lu(a) 產生乙個上三角陣u和乙個變換形式的下三角陣l,使之滿足a=lu,注意,這裡的矩陣a必須是方陣,最後x=u\(l\b)[l,u,p]=lu(a) 產生乙個上三角陣u和乙個下三角陣以及乙個置換矩陣p,使之滿足pa=lu,最後x=u\(l\p*b)
如果x收斂了,則就是所解的值.
x0為設定的初值,n為迭代次數,下同function [y,n]=jacobi(a,b,x0,ep)
d=diag(diag(a));
l=-tril(a,-1);
u=-triu(a,1);
b=d\(l+u);
f=d\b;
y=b*x0+f;
n=1;
while norm(y-x0)>=ep
x0=y;
y=b*x0+f;
n=n+1;
end
function [y,n]=gauseidel(a,b,x0,ep)
d=diag(diag(a));
l=-tril(a,-1);
u=-triu(a,1);
b=(d-l)\u;
f=(d-l)\b;
y=b*x0+f;
n=1;
while norm(y-x0)>=ep
x0=y;
y=b*x0+f;
n=n+1;
end
x=fzero(filename,x0) 其中filename是待求解方程左端的函式表示式,x0是初始值x=fsolve(filename,x0,option) option為優化引數,可設定為optimset('display','off'),可以求解非線性方程組
f=@(x) [sin(x(1))+x(2)+x(3)^2*exp(x(1)),x(1)+x(2)+x(3),x(1)*x(2)*x(3)];
f([1,1,1])
x=fsolve(f,[1,1,1],optimset('display','off'))
f(x)
[xmin, fmin] = fminbnd(filename, x1, x2, option)其中x1,x2為研究區間的左右邊界,x0是表示極值點的初值[xmin, fmin] = fminsearch(filename, x0, option)
[xmin, fmin] = fminunc(filename, x0, option)
線性不等式約束線性等式約束
非線性不等式約束
非線性等式約束
x的上界和下界
[xmin, fmin] = fmincon(filename, x0, a, b, aep, bep, lbnd, ubnd, nonf, option)其中xmin, fmin, fiename, x0, option的含義與求最小值函式相同.其餘引數為約束條件,包括線性不等式約束,線性等式約束,x的下界和上界以及定義非線性約束的函式.如果某個約束不存在,則用空矩陣表示.
[t, y] = solver(filename, tspan, y0, option)f=@(t,y) (y^2-t-2)/4/(t+1);
[t,y]=ode23(f,[0,10],2);
y1=sqrt(t+1)+1;
plot(t,y,'b:',t,y1,'r');
求解函式ode15s,使用方法和上面的一樣Matlab 數值微積分與方程求解
專題六 數值微積分與方程求解 目錄 一 數值微分與數值積分 1.數值微分 2.數值積分 二 線性方程組求解 先說差分。差分可以分為向前差分,向後差分和中心差分。三者分別如下表述 matlab提供了求向前差分的函式diff,其呼叫格式有3種 舉個例子 求向量 1,34,54,32,56,78 的一階向...
MATLAB 數值微積分
學習筆記 郭彥甫 yan fu kuo 台大生機系 matlab教學 10數值微積分 representing polynomials in matlab values of polynomials polyval a 9,5,3,7 x 2 0.01 5 f polyval a,x plot x,...
MATLAB數值法與微積分
函式之微分為求函式對自變數之導數,或為其斜率 利用數值方法則可以解出其他相關之問題,其應用部份已在前章討論。數值微分有兩種應用,其一是在資料收集完備後,分析其變化速度 其二為即時估計或量測速率。後者需要快速演演算法才能有立即反應。計算斜率,依其定義即為dy dx,在數值分析上必須轉化為可量測之變化量...