当前位置:求职简历网 > 知识 > 正文

微分方程组

matlab怎样求解含参数的微分方程组 可以借助于嵌套函数或匿名函数实现附加参数的传递,例如 function main y0 = [1.4; 0.1; 0.1]; A = linspace(eps, 10, 20); Y = A * NaN; for ii = length(A

matlab怎样求解含参数的微分方程组

可以借助于嵌套函数或匿名函数实现附加参数的传递,例如

function main
y0 = [1.4; 0.1; 0.1];
A = linspace(eps, 10, 20);
Y = A * NaN;
for ii = length(A)
a = A(ii);
y = ode45(@eq2, [0 a], y0);
Y(ii) = y(end, 1);
end
plot(A, Y)

function dy=eq2(t,y)
dy = y*0;
dy(1)=-(a*y(2))/(4*exp(a*t/4));
dy(2)=-(a/4)*(exp(a*t/4))*(y(1)+0.5)+(a/4)*y(2)-y(3)*((exp(a*t/4))^2);
dy(3)=4*y(2);
end
end

但微分方程组似乎是刚性的,不过换用ode15s、ode23s等适合刚性系统的算法效果也不理想(可以调用ode*函数时不返回参数,观察求解的过程)。


如何用matlab求解一个二阶常系数微分方程组

第一种方法:利用dsolve函数求微分方程的符号解(通解):对于一些不是很难,要求出通解的微分方程,用dsolve函数求解。1、 打开Matlab软件-->点击新建脚本菜单,新建一个脚本文件用于编写微分方程求解程序。2、 输入微分方程求解程序-->点击保存-->点击运行。3、在matlab的命令窗口即可看到求解结果,是一个关于参数a,b的表达式第二种方法:利用Matlab中的solver函数(包括ode45、ode23、ode15s等)来求解微分方程的数值解,这种方法是最常用的方法,对于dsolve函数难以求解的方程就可以利用这种方法求解方程的数值解。1、 打开Matlab-->新建一个脚本文件用于编写求解程序。2、 在脚本文件中输入求解程序-->点击保存-->点击运行。3、 这里需要先编写一个函数文件用于表示方程-->点击保存-->编写求解程序-->点击保存-->点击运行。4、在figure页面就可以看到所求解的微分方程的图形。

matlab 解微分方程组

解微分方程啊,这是matlab的一大功能啊,这里不好全讲,你最好看下书。这里讲下注意问题
你要解析结果,还要图像!
其实只有少数的微分方程有解析解,而且一些方程的解析解很难求得。matlab中有dsolve可求微分方程的解析解,但大多数微分方程要通过ode45,ode23(龙格库塔算法)等命令求解数值解。
首先你可参见help或者相关书籍将你的方程以函数文件(也可以写成隐函数)写成标准形式。
下面根据调用的命令填写函数句柄值:方程(@。。。),这里要解决常微分方程的初值问题,你要赋一个初值,填写精度,自变量范围等
下面运行ode45,ode23等命令就可以得到数值解了,这里要注意你得到一个矩阵,这个矩阵把每个要求的变量(从一阶到最高阶按列排布)按列排布,这和你写方程的顺序有关啊,可以参见学长给我的指导:http://zhidao.baidu.com/question/510834501.html?quesup2&oldq=1
通过矩阵元素名你就可以操作这数值解了,最简单的就是用plot命令组将你想要的结果输出为图像形式。
这是plot的help解析,讲的不错,可以看看。http://hi.baidu.com/464865331/item/e1a0b2df8606b51cd68ed0bf
一段时间没研究matlab了,可能存在错误,请谅解。


如何用matlab求解微分方程组的数值解

在Matlab下输入:edit zhidao_feiying.m,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=zhidao_feiying(t,x)
a=1;
b=2;
c=3;
d=4;
%%比方说
%f=a*x+y-z;
%g=b*sin(x*y)-c*cos(z);
%h=d*y-a*x;
%%注意x用x(1)代,y用x(2)代,z用x(3)代

f=a*x(1)+x(2)-x(3);
g=b*sin(x(1)*x(2))-c*cos(x(3));
h=d*x(2)-a*x(1);
y=[f;g;h];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下面输入:
t_end=5;
x0=[1;1;1];
[t,x]=ode45('zhidao_feiying',[0,t_end],x0);
plot(t,x)
legend('x','y','z')

上面只是固定d的情况,
你如果想做出随d的变化,估计比较麻烦一些,一方面ode45并不是等不长的。
另一方面,参数不好弄。


知识相关

知识推荐

求职简历网为你分享个人简历、求职简历、简历模板、简历范文等求职简历知识。

Copyrights 2018-2024 求职简历网 All rights reserved.