dx=0.05 %x方向步长
xleft=0%区域的左边界
xright=10%区域的右边界
xx=xleft:dx:xright %一系列离散的点
n=length(xx) %点的个数
y0=1
%%(1)欧拉法
Euler=y0
for i=2:n
Euler(i)=Euler(i-1)+dx*f(xx(i-1),Euler(i-1))
end
%%(2)龙格库塔法
RK=y0
for i=2:n
k1=f(xx(i-1),RK(i-1))
k2=f(xx(i-1)+dx/2,RK(i-1)+k1*dx/2)
k3=f(xx(i-1)+dx/2,RK(i-1)+k2*dx/漏正2)
k4=f(xx(i-1)+dx,RK(i-1)+k3*dx)
RK(i)=RK(i-1)+dx*(k1+2*k2+2*k3+k4)/6
end
%%Euler和Rk法结果比较
plot(xx,Euler,xx,RK)
hold on
%精确斗搜中解用作图
syms x
rightsolve=dsolve('Dy=-y+x+1','y(0)=1','x')%求出解析解
rightdata=subs(rightsolve,xx)%将xx代入解析解,得到解析解对应的数值
plot(xx,rightdata,'r*')
legend('Euler','空山Runge-Kutta','analytic')
http://zhidao.baidu.com/question/117345902.html?fr=qrl&cid=983&index=1&fr2=query
数列的递推公式到一般式的转返伏化问题可以用MATLAB的MuPad解决
如图
解得 K(n)=C4*a^n - b/(a - 1) 其中C4是一个常数
然后就用这个公式代漏扒携入自己需要的值就行了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)