微分方程组matlab

来源:百度知道 编辑:UC知道 时间:2024/07/08 19:25:33
m*y''=a+b*f*x'+c*sqrt(x'^2+y'^2)*y'
m*x''=b*f*y'+c*sqrt(x'^2+y'^2)*x'
怎么解?(符号表示不规范,sqrt(x'^2+y'^2)表示x,y的平方开根号)

dsolve('m*D2y-a-b*f*Dx-sqrt(Dx*Dx+Dy*Dy)*Dy','m*D2x-b*f*Dy-c*sqrt(Dx*Dx+Dy*Dy)*Dx')

正常情况使用上面的命令就可以解决问题
但是很惋惜的时,该题Matalb无能为力

那只能使用数值解法了,建议你看看这个帖子【微分方程Matlab求解方法详解和汇总 】http://www.matlabsky.com/thread-526-1-1.html

下面时该题的数值解法代码,有很详细的注释,并且运行通过

%取a=1;b=1;f=1;c=1;
%假设初值条件都为0
%取状态变量x1=x,x2=x',x3=y,x4=y'
% x1'=x2
% x2'=(b*f*x4+c*sqrt(x2^2+y'^2)*x2)/m
% x3'=x4
% x4'=(a+b*f*x2+c*sqrt(x2^2+y'^2)*x4)/m
%by dynamic
%see also http://www.mathsky.cn
%2009.1.31

a=1;b=1;f=1;c=1;m=1;
odefun=@(t,x)[x(2)
(b*f*x(4)+c*sqrt(x(2)^2+x(4)^2)*x(2))/m
x(4)
(a+b*f*x(2)+c*sqrt(x(2)^2+x(4)^2)*x(4))/m]
[t,y]=ode45(odefun,[0 10],[0 0 0 0])