微分方程解特殊差分模型

2021-05-26 11:50:02 字數 3225 閱讀 1137

微分方程解特殊差分模型

由前面兩種模型之間的聯絡,我們可以獲得一些共同點;一部分的差分模型比較難解,我們可

以轉化為微分方程的近似解來完成;

比如差分模型為:

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 人口數量的變化是封閉的,即人口數量的增加與減少只取決於人口中個體的 生育和死亡,且每乙個體都具有同樣的生育能力與死亡率...