好長時間沒更新了,趁你年輕多去努力拼搏一些你想要的東西,不要像小編一樣安圖享逸,頭條封面就是小編下地幹活的真實寫照 。 今天幫別人做了個【Lamb頻散曲線快速繪製軟體】,一起欣賞一下。
後續幾期,向大家介紹微積分問題的MATLAB求解,今天講解極限,積分和微分方程的求解。
1. 極限
MATLAB提供了求極限函數limit(),
函數調用格式為:y = limit(fun,x,x0)。
其中,y為返回的函數極限值;
fun為要求解的函數;
x為函數自變量;
x0位函數自變量的取值,x趨近於x0
MATLAB求解極限問題有專門的函數,
編程如下:
clc,clear,close all
syms x a
I1=limit('(sin(x)-sin(3*x))/sin(x)',x,0)
I2=limit('(tan(x)-tan(a))/(x-a)',x,a)
I3=limit('(3*x-5)/(x^3*sin(1/x^2))',x,inf)
運行程序輸出結果如下:
I1 =
-2
I2 =
tan(a)^2 + 1
I3 =
3
2.導數
diff是求微分最常用的函數,其輸入參數既可以是函數表達式,也可以是符號矩陣。
MATLAB常用的格式是:diff(f, x, n);
其中,f關於x求n階導數。
MATLAB求解導數問題,編程如下:
clc,clear,close all
syms x y
f=sym('exp(-2*x)*cos(3*x^(1/2))')
diff(f,x)
g=sym('g(x,y)') %建立抽象函數。
f=sym('f(x,y,g(x,y))') %建立複合抽象函數。
diff(f,x)
diff(f,x,2)
運行程序輸出結果如下:
f =
exp(-2*x)*cos(3*x^(1/2))
ans =
- 2*exp(-2*x)*cos(3*x^(1/2)) - (3*exp(-2*x)*sin(3*x^(1/2)))/(2*x^(1/2))
3 微分方程的數值解
求解微積分方程你的數值解常用的MATLAB函數調用如下:
[t, x] = ode23(『xprime』, t0, tf, x0, tol, trace)
[t, x] = ode45(『xprime』, t0, tf, x0, tol, trace)
或
[t, x] = ode23(『xprime』, [t0, tf], x0, tol, trace)
[t, x] = ode45(『xprime』, [t0, tf], x0, tol, trace)
說明:
(1)兩個指令的調用格式相同,均為Runge-Kutta法。
(2)該指令是針對一階常微分設計的。因此,假如待解的是高階微分方程,那麼它必修先演化為形如 的一階微分方程組,即「狀態方程」。
(3)』xprime』是定義 的函數名。該函數文件必須以 為一個列向量輸出,以 為輸入參量(注意輸入變量之間的 關係,先「時間變量」後「狀態變量」)。
(4)輸入參量 和 分別是積分的起始值和終止值。
(5)輸入參量 為初始狀態列向量。
(6)輸出參量 和 分別給出「時間」向量和相應的狀態向量。
(7)tol控制解的精度,可預設。預設時,ode23默認tol=1.e-3;ode23默認tol=1.e-6。
(8)輸入參量trace控制求解的中間結果是否顯示,可預設,預設時,默認為tol=0,不顯示中間結果。
(9)一般地,兩者分別採用自適應變步長(即當解的變化較慢時採用較大的步長,從而使得計算速度快;當解的變化速度較快時步長會自動地變小,從而使得計算精度更高)的二、三階Runge-Kutta算法和四、五階Runge-Kutta算法,ode45比ode23的積分分段少,而運算速度快。
建立方程組的函數文件如下:
function dz=dzdx1(x,z)
dz(1)=z(2);
dz(2)=z(3);
dz(3)=z(3)*x^(-1)-3*x^(-2)*z(2)+2*x^(-3)*z(1)+9*x^3*sin(x);
dz=[dz(1);dz(2);dz(3)];
end
編寫主程序如下:
clc,clear,close all
H=[0.1,60];
z0=[1;1;1];
[x,z]=ode15s('dzdx1',H,z0);
plot(x,z(:,1),'g--',x,z(:,2),'b*--',x,z(:,3),'mp--')
xlabel('軸\it x');
ylabel('軸\it y')
grid on
legend('方程解z1的曲線','方程解z2的曲線', '方程解z3的曲線')
明天將介紹大家數值分析課中頭疼的龍哥庫塔函數的理解與編寫。
在學習中得到樂趣,在樂趣中收穫學習,歡迎關注和分享公眾號【AbsorbedinU】。如果您有什麼建議可以公眾號直接回復即可,期待您的加入,也希望您分享給您身邊有需要的人。