如何在matlab中解二阶初值问题?最近在编相关的程序,就差这一点了!

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 12:53:02
如何在matlab中解二阶初值问题?最近在编相关的程序,就差这一点了!

如何在matlab中解二阶初值问题?最近在编相关的程序,就差这一点了!
如何在matlab中解二阶初值问题?
最近在编相关的程序,就差这一点了!

如何在matlab中解二阶初值问题?最近在编相关的程序,就差这一点了!
方程为:
x*y''=k(1+y'^2)^0.5 (y''表示y的二阶导数,y'表示y的一阶导数,y'^2表示y的一阶导数的平方,(1+y'^2)^0.5表示(1+y'^2)开根号)
其中 k=a/b
初始条件为:
y(x0)=y0
y'(x0)=y0/x0
【注意,Matlab默认t为微分方程的自变量,Dy相当于对于dy/dx,D2y相当于二阶微分d2y/dx2.】
>> y=dsolve('t*D2y=k*(1+Dy^2)^0.5','y(x0)=y0,Dy(x0)=y0/x0')
>> y=subs(y,t,'x')
运行结果:
y =
[ 1/2/(1+k)*x*exp(k*(log(x)+log(1/2/x0*(2*y0-2*(y0^2+x0^2)^(1/2))/exp(log(x0)*k))/k))+1/2*x/(-1+k)*exp(-k*(log(x)+log(1/2/x0*(2*y0-2*(y0^2+x0^2)^(1/2))/exp(log(x0)*k))/k))+2*k*(-x0-1/2*y0/x0*(2*y0-2*(y0^2+x0^2)^(1/2))+1/2*k*y0/x0*(2*y0-2*(y0^2+x0^2)^(1/2)))*x0/(2*y0-2*(y0^2+x0^2)^(1/2))/(-1+k^2)]
[ 1/2/(1+k)*x*exp(k*(log(x)+log(1/2/x0*(2*y0+2*(y0^2+x0^2)^(1/2))/exp(log(x0)*k))/k))+1/2*x/(-1+k)*exp(-k*(log(x)+log(1/2/x0*(2*y0+2*(y0^2+x0^2)^(1/2))/exp(log(x0)*k))/k))+2*k*(-x0-1/2*y0/x0*(2*y0+2*(y0^2+x0^2)^(1/2))+1/2*k*y0/x0*(2*y0+2*(y0^2+x0^2)^(1/2)))*x0/(2*y0+2*(y0^2+x0^2)^(1/2))/(-1+k^2)]