如何在matlab中解二阶初值问题?
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/06 14:18:47
如何在matlab中解二阶初值问题?
最近在编相关的程序,就差这一点了!
最近在编相关的程序,就差这一点了!
![如何在matlab中解二阶初值问题?](/uploads/image/z/6110488-64-8.jpg?t=%E5%A6%82%E4%BD%95%E5%9C%A8matlab%E4%B8%AD%E8%A7%A3%E4%BA%8C%E9%98%B6%E5%88%9D%E5%80%BC%E9%97%AE%E9%A2%98%3F)
方程为:
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)]
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)]