非线性方程怎么求差分方程的数值解啊如题,a(n+1)-a(n)=k*(m-a(n))*a(n)m,k是一个常数就是类似于这种形式的怎么求数值解啊
2019-05-07
非线性方程怎么求差分方程的数值解啊
如题,a(n+1)-a(n)=k*(m-a(n))*a(n)
m,k是一个常数
就是类似于这种形式的怎么求数值解啊
优质解答
数值解了话,可直接给定一个初始条件a(0),不断反覆迭代,在一段时间后可以看看这个模型是否会落在一个定点或出现周期现象.(直接代入法)
解析解了话,可将
a(n+1)-a(n)=delta a(n)==k*(m-a(n))*a(n)
化为微分方程
a'=k*(ma)*a ,这时就很好处理了(注意a=a(n)
da/[(m-a)*a] = k*dn.(1)
又1/[(m-a)*a] =(1/m-a +1/a)*(1/m)
(1)积分后得
ln(a)-ln(ma)=m*k*n+ c .(2) (c为任意常数)
(带入n=0,则ln(a(0))-ln(ma(0))=c (暂且继续写c)
整理(2),先对左右两边带入自然对数
a/(m-a) =A*e^(m*k*n) (其中A=e^c)
将a分离于等号的其中一边,最后得到
a(n)=[m*A*e^(m*k*n)]/[1+A*e^(m*k*n)]
done.
ps .这种形式的差分方程叫logistic equation,跟生物系统或人口成长等有关,譬如说a(n)比较小时,-a(n)^2非主导系统的项,所以短时间内delta a(n )>0,a(n)会上升.当a(n)慢慢变大时,delta a(n)>0的程度会变小,直到等于零,这代表人口a(n)达到饱和,若一开始a(n)就很大,使delta a(n)
数值解了话,可直接给定一个初始条件a(0),不断反覆迭代,在一段时间后可以看看这个模型是否会落在一个定点或出现周期现象.(直接代入法)
解析解了话,可将
a(n+1)-a(n)=delta a(n)==k*(m-a(n))*a(n)
化为微分方程
a'=k*(ma)*a ,这时就很好处理了(注意a=a(n)
da/[(m-a)*a] = k*dn.(1)
又1/[(m-a)*a] =(1/m-a +1/a)*(1/m)
(1)积分后得
ln(a)-ln(ma)=m*k*n+ c .(2) (c为任意常数)
(带入n=0,则ln(a(0))-ln(ma(0))=c (暂且继续写c)
整理(2),先对左右两边带入自然对数
a/(m-a) =A*e^(m*k*n) (其中A=e^c)
将a分离于等号的其中一边,最后得到
a(n)=[m*A*e^(m*k*n)]/[1+A*e^(m*k*n)]
done.
ps .这种形式的差分方程叫logistic equation,跟生物系统或人口成长等有关,譬如说a(n)比较小时,-a(n)^2非主导系统的项,所以短时间内delta a(n )>0,a(n)会上升.当a(n)慢慢变大时,delta a(n)>0的程度会变小,直到等于零,这代表人口a(n)达到饱和,若一开始a(n)就很大,使delta a(n)