您的位置:首页 > 其它

微分方程解特殊差分模型

2011-07-06 10:33 225 查看
微分方程解特殊差分模型

由前面两种模型之间的联系,我们可以获得一些共同点;一部分的差分模型比较难解,我们可

以转化为微分方程的近似解来完成;

比如差分模型为:

n*{a(n)-a(n-1)}-0.0001*a(n-1)=0.0001*n^3

GO

n*a(n)-(n+0.0001)*a(n-1)=0.0001*n^3

如果是直接给出下面这个差分方程,要算出它的通项公式比较困难;因为它与上面一种等价,

我们对上面一种差分模型采用微分方法获得近似解答,然后再回代获得差分的解答;

对应的微分方程为x*y'-0.01*y=0.01*x^3 (100比1的关系)

采用标准解法有:

Go

y'-0.01/x*y=9*x^2

GO

可以解得u(x)=C/x^0.01

这样有{y*C/x^0.01}'=9*x^2*C/x^0.01

Go

{y*C/x^0.01}'=C*x^1.99

Go

y*C/x^0.01=A*x^2.99+B

Go

y=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)))))))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: