微分方程解特殊差分模型
由前面兩種模型之間的聯絡,我們可以獲得一些共同點;一部分的差分模型比較難解,我們可
以轉化為微分方程的近似解來完成;
比如差分模型為:
n*-0.0001*a(n-1)=0.0001*n^3
gon*a(n)-(n+0.0001)*a(n-1)=0.0001*n^3
如果是直接給出下面這個差分方程,要算出它的通項公式比較困難;因為它與上面一種等價,
我們對上面一種差分模型採用微分方法獲得近似解答,然後再回代獲得差分的解答;
對應的微分方程為x*y'-0.01*y=0.01*x^3 (100比1的關係)
採用標準解法有:
goy'-0.01/x*y=9*x^2
go可以解得u(x)=c/x^0.01
這樣有'=9*x^2*c/x^0.01
go'=c*x^1.99
goy*c/x^0.01=a*x^2.99+b
goy=a*x^3+b*x^0.01
將這個值代入原始模型中可以得a=9/(3-0.01),現在假定y(1)=(12-0.01)/(3-0.01),這樣就可
以得到b=1
通過原方程的形式還可以知道一條資訊y(0)=0;
這對應於原來的a(0)=0,和a(100)=3/(3-0.01),
下面寫程式來證明:
(setq a (/ 9
(- 3 0.01)))
(setq b 1)
(defun pow (num count)
(if (or (> count 1) (eq count 1) )
(* num
(pow num
(- count 1) ) )
1))(defun slayer ( count)
(if (or (> count 1) (eq count 1) )
(* count
(slayer
(- count 1) ) )
1))(defun slayerex (num count)
(if (or (> count 1) (eq count 1) )
(* num
(slayerex
(- num 1)
(- count 1) ) )
1))y'-0.01/x*y=0.01*x^2
(defun expr (x1 y1 )
(+ y1
(* 0.01
(+ (* 9
(pow x1 2))
(/ (* 0.01
y1)x1)))))
(defun calc (n x)
(if (eq n 0)
1.0(+ (calc (1- n)
x)(* (pow x
n)(/ 1
(slayer n))))))
(setq e (calc 10 1))
(defun formula (x)
(if (eq x 0)
0(+ (* a
(pow x 3))
(* b
(calc 10
(* 0.01
(log x)))))))
(defun exprhelp (x1 )
(if (< (abs (- x1 0))
0.01)
(formula 0)
(expr x1
(exprhelp (- x1
0.01)))))
(defun test (n)
(if (> n 0)
(progn
(print (exprhelp n))
(print 'compare)
(print (formula n))
(test (- n 1)))
(print 'over)))
[200]> (test 20)
24097.682
compare
24081.299
20661.563
compare
20646.848
17568.674
compare
17555.543
14800.9375
compare
14789.322
12340.311
compare
12330.125
10168.744
compare
10159.89
8268.159
compare
8260.558
6620.4917
compare
6614.0693
5207.694
compare
5202.3633
4011.7046
compare
4007.3787
3014.4636
compare
3011.0566
2197.9077
compare
2195.3364
1543.9823
compare
1542.1581
1034.6248
compare
1033.461
651.7748
compare
651.1853
377.37396
compare
377.27042
193.36166
compare
193.6561
81.67573
compare
82.28195
24.260286
compare
25.087223
3.0551095
compare
4.0100336
over
over
從這個結果可以發現,兩者的結果是相當類似,從這裡我們可以得出乙個結論,可能有的差分
方程沒有解,不過採用微分的方法是可以獲得近似解的;
另外關於求x^0.01次方的方法,這裡採用以下方式獲得:
(calc 10
(* 0.01
(log x)))))))
微分方程,差分方程
自變數連續,一般自變數為時間t,因變數 函式值 連續,如 y t t 2 2t 1 如 y t 2y t 3y t 5 u t 3u t 其中y和u都是t的連續函式,y u 都是對自變數求導,即對t求導 自變數是離散的,一般自變數取k,所以因變數也是離散的,即k 0,1,2,3,n 差分方程一般有三...
matlab解微分方程
1.dsolve函式 這是最簡單的一種求解微分方程的一種方法 符號解法。一般來說,在matlab中解常微分方程有兩種方法,一種是符號解法,另一種是數值解法。在本科階段的微分數學題,基本上可以通過符號解法解決。用matlab解決常微分問題的符號解法的關鍵命令是dslove命令。該命令中可以用d表示微分...
微分方程模型(一)
人口模型 量化人口增長的趨勢 1.malthus 模型 模型假設 i 設x t 表示t時刻的人口數,且x t 連續可微。ii 人口的增長率r 是常數 增長率 出生率 死亡率 iii 人口數量的變化是封閉的,即人口數量的增加與減少只取決於人口中個體的 生育和死亡,且每乙個體都具有同樣的生育能力與死亡率...