練習一:向前尤拉法解方程y′
(t)y
(0)=
−2y(
t)+t
=1演算法解釋:對於一般的常微分方程 y′
(t)y
(t0)
=f(t
,y)=
y0yi+
1−yi
δt=f
(ti,
yi)⇒
yi+1
=yi+
f(ti
,yi)
δt
clear;
%方程的係數
a=1.;
b=-2.;
c=1.;
%開始結束時間
tinit=0.;
tmax=5.;
%時間步數
maxt=3000;
dt=(tmax-tinit)/maxt;
%初始條件
y(1)=1.;
t(1)=tinit;
%時間迴圈(loop)
forj=1:maxt;
y(j+1)=y(j)+dt*(b*y(j)+c*t(j))/a;
t(j+1)=tinit+j*dt;
end;
%繪圖plot(t,y)
title('尤拉向前差分')
xlabel('t')
ylabel('y(t)')
練習二:中點法(精度比向前向後尤拉高一階) yi
+1=y
i−1+
2f(t
i,yi
)δt
有點疑惑的是:初值需要給在i=
0,1 兩處;可否用向後尤拉法yi
+1=y
i+f(
ti+1
,yi+
1)δt
求出另外乙個?比如y0
=y1−
f(t1
,y1)
δt,但是這樣的話就會有乙個問題,向後尤拉法精度低一階。
解析解與數值解的區別
科學網 這段時間一直在聽數學學院的課,反反覆覆聽到 解析解 和 數值解 始終不明白這兩者的區別。經學長解釋,總算有點眉目 解析解就是給出解的具體函式形式,從解的表示式中就可以算出任何對應值 數值解就是用數值方法求出解,給出一系列對應的自變數和解。e.g.eq x 2 5 solution x sqr...
常微分方程數值解上機
二步顯式 adams 法和gear 法求解,y 0 1,步長分別為h 0.1和h 0.05 1.程式文字 二步顯式 adams法 clc y 1 1 h 0.1 y 2 y 1 2 h y 1 3 h n 1 h fori 2 n y i 1 y i 3 h y i h y i 1 3 h endt...
數值自乘(遞迴與非遞迴解)
如果m和n是正整數,那麼m n就是把m連乘n次,這是乙個很沒效率的方法。其實用分置 遞迴可以更有效地解決該問題!首先來看看我最初寫的程式吧 int r power int m,int n 其中用到的其實是非常樸素的遞迴方式,無法是將m n均分成兩部分,但是可能會存在奇偶等問題的干擾,所以乾脆將兩個遞...