如何使用Matlab求解复杂的微分方程组
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/19 17:10:20
如何使用Matlab求解复杂的微分方程组
用最简单的dsolve提示Explicit solution could not be found.然后就不知道自己列的方程是否出错了,(应该没错),所以想知道求解复杂微分方程的一些代码或者思路
用最简单的dsolve提示Explicit solution could not be found.然后就不知道自己列的方程是否出错了,(应该没错),所以想知道求解复杂微分方程的一些代码或者思路
这说明此微分方程没有显示解,应用数值方法求解,例如ode45等函数
就一个例子(选自matlab帮助文档)
解入下微分方程组
1,建立方程组函数
function dy = rigid(t,y)
dy = zeros(3,1); % a column vector
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
2,
[T,Y] = ode45(@rigid,[0 12],[0 1 1]);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')
结果
再问: 这种方法是用迭代拟合的还是什么? 能得到正确的解吗? 还有就是,这种方法可以不可以含有字母常量 例如DY=a,a为常数的形式
再答: 这种方法是基于 Runge-Kutta算法,数值算法,得到的是精确解,可以算正确解。 不可以含字母,那是符号求解用dsolve。
就一个例子(选自matlab帮助文档)
解入下微分方程组
1,建立方程组函数
function dy = rigid(t,y)
dy = zeros(3,1); % a column vector
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
2,
[T,Y] = ode45(@rigid,[0 12],[0 1 1]);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')
结果
再问: 这种方法是用迭代拟合的还是什么? 能得到正确的解吗? 还有就是,这种方法可以不可以含有字母常量 例如DY=a,a为常数的形式
再答: 这种方法是基于 Runge-Kutta算法,数值算法,得到的是精确解,可以算正确解。 不可以含字母,那是符号求解用dsolve。