如何用matlab求解向量微分方程
发布网友
发布时间:2022-04-19 11:18
我来回答
共1个回答
热心网友
时间:2023-06-26 19:25
ODE部分--------ODE--->ordinary
differential
equations先总述一下:D 1、ode的求解器ode
ODE的求解器有很多,在help里可以查到。列出了每一种求解器的适应范围(stiff或者nonstiff)以及它采用的数学原理,比如Runge-Kutta,Adams,NDFs之类。(这个在数值分析课中会学到,可惜偶当时觉得很无聊,后悔中)。
大家有时间多去了解了解,懂了来给大家分享分享:D
。
如果不懂那么多理论,优先采用ode45,如果你发现它计算的效率特别低下或者是计算根本出不来,则考虑换ode15s。
sol是任意名字。对于怎么把要求解的方程写为function,2楼例子。所以你告诉求解器这三样东西(输入参数),它就可以为你求解出y。
sol
=
ode45(@yourfun,[tmin,tmax],[y0,y0'])
你的公式
积分范围
初值
sol=ode45(@vdp1,[0,20],[2,0]);
把以上代码命令行里直接执行,这是matlab自带的一个例子。在workspace里你会看到多了一个变量叫sol.没错这就是求解器的返回值。它是一个1*1的结构体。双击它,你会看到它的内部组织,各个field以及它们的“形状”。每一个你都可以双击它,继续深入看它的结构。我现在关心的只有X,Ysolverextdata,x,y,stats,idata================================================================================2、求解计算完毕后,我们可以做什么
首先,当然是得到结果。
deval(sol,x,1)
sol如上,写在求解等号左边的变量名字,是返回来的handles。x是一组向量,是你期望求值的点。数字1就表示你要y第一行的值(这个是在求解微分方程组的情况。不明白什么叫第一行,就去双击sol,再双击y),如果去掉1,则返回矩阵,也就是所有y的值。在matlab命令行运行以下代码:
sol=ode45(@vdp1,[0,20],[2,0]);x=linspace(0,20,100);y=deval(sol,x,1);plot(x,y);
此外,我们还可以扩展,matlab叫做odextend。扩展什么?
odextend(sol,odefun,tfinal)
看到最后一个变量名了吧,t_final
这样明显一点。也就是,我之前算过的微分方程组,原来算到t1,我现在要接着继续计算到新的t_final。默认以上次计算的y终值,作为此次计算的初值。
odextend(sol,odefun,tfinal,yinit)
当然,如果你想重新给它赋初值,也可以加入参数yinit。(友情提示:获取上次计算的Y的终值:y=sol.y(:,end))
sol=odextend(sol,@vdp1,20);plot(sol.x,sol.y(1,:))=====================================================================================
3、求解器的参数设置
也
就是option这个东西,既然是选项,则也可以不设置它,采用默认值。
要设置的话,可以用odeset这个命令。怎么用?
option=odeset('name1',value1,'name2',value2......) (matlab所有参数设置基本上都是这种形式)
name自然就是属性名字。value就是你赋予它的值。求解器可以设置哪些参数,而设置了这些参数有什么影响,而这些参数应该则么设置。在命令行里输入
help
odeset:D
。看到的绝对比我讲得详细。所以我不多说了。(友情提醒,如果使用ode15什么来着,可以为它设置Jacobian这个参数,以更快更准更好的求解。如何设置,不懂的话,偶过后会贴。)
O=odeget(option,'name')
编过GUI的话这两个命令再熟悉不过了:D
matlab解微分方程组
matlab解微分方程组方法是:1、首先,在matlab中解常微分方程有两种方法,一种是符号解法,另一种是数值解法。在本科阶段的微分数学题,基本上可以通过符号解法解决。2、用matlab解决常微分问题的符号解法的关键命令是dsolve命令。该命令中可以用D表示微分符号,其中D2表示二阶微分,D3表示三阶微分,以此...
短路的计算步骤是什么?
假设条件在短路的实际计算中, 为了能在准确范围内迅速地计算短路电流, 通常采取以下简化假设。(1)不考虑发电机的摇摆现象。(2)不考虑磁路饱和,认为短路回路各元件的电抗为常数。(3)不考虑线路对地电容, 变压器的磁支路和高压电网中的...
如何使用Matlab求微分方程的解?
第一种方法:利用dsolve函数求微分方程的符号解(通解):对于一些不是很难,要求出通解的微分方程,用dsolve函数求解。1、 打开Matlab软件-->点击新建脚本菜单,新建一个脚本文件用于编写微分方程求解程序。2、 输入微分方程求解程序-->点击保存-->点击运行。3、在matlab的命令窗口即可看到求解结果,是...
用matlab怎么求解微分方程?
第一步、分析微分方程的特点确定模块 我们将y"+4y'+4y=cos2t方程改写成y"=cos2t-4y'-4y,从右边可知,式子是由cos2t外加载信号,一阶导数项和一次变量组成。所以我们,可以用下列功能模块来搭建其仿真模型 cos2t:使用Fcn模块和Clock模块;y':使用lntegrator模块;y':使用lntegrator模块;-4:...
MATLAB求解微分方程
使用MATLAB求微分方程的解析解可通过调用函数实现。编写代码时,以字母D代表微分,例如表达二阶微分为D2,三阶微分为D3,后面紧跟被求解的变量名称。自变量默认为t,若需指定可自行输入。在单引号中输入微分方程表达式,注意符合MATLAB语法规范,如'y-D*y=2*x',务必包含乘号符号。无需初始值时,求出...
怎样用matlab画微分方程组向量场,以及对应程序,求大神帮忙,谢谢...
使用ode系列的函数求解微分方程组.d = @(t,x)[x(2); -x(1).^2-2*x(1)-x(2)/2];[t x] = ode45(d,[0 5.1],[0; 4]); % 这个tfinal自己调出来的一个近似值 plot(x(:,1),x(:,2))
用matlab如何求解微分方程并画图?
如何用matlab求解微分方程并画图,可以先用dsolve()或ode()求出其微分方程(组)的解析解或数值解,然后用plot()绘制其图形。例如:解微分方程 y'=y-2t/y,y(0)=1,0<t<4 1、用dsolve()求解,代码及结果如下 2、用ode45()求解,代码及结果如下 3、当然喽,使用dsolve()或ode(...
如何在Matlab里绘制一个简单的微分方程呢?
1、打开Matlab软件的SimulinkLibrary;如图所示:2、按File——New——Model,建立新的Model界面 3、绘出传递函数,其中,输入输出点,采用Inport和Outport即可 4、按如下路径点击Analysis——ControlDesign——LinearAnalysis…5、弹出如下界面:6、在AnalysisI/Os中选择“Rootlevelinportsandoutports”7、在...
如何用matlab求解微分方程并画图
1、找到关于求解常微分方程的习题。2、这里用matlab求解,主要用到的就是“dsolve”,具体的格式如下,但是不仅仅局限下面两种,其中eq就是代表方程式,而con为初始条件。3、这里的“x”关于x的函数。知道语法就可以进行计算了。4、在matlab中输入如下,dsolve('D2y+2*Dy+exp(x)=0','x'),并直接...
如何利用matlab求微分方程通解
对于一般的微分方程,可以用dsolve()函数,直接求出其微分方程通解。例如:求下列微分方程的通解 求解代码:syms y(t) a %变量声明 eqn = diff(y,t,2) == a*y; %定义方程ySol(t) = dsolve(eqn) %方程求解 求解过程与结果 ...
用matlab求解常系数微分方程组并画出图像
1定义函数:function y=fun(t,x)y=zeros(3,1);x1=x(1);x2=x(2);x3=x(3);y(1)=x1*(1-x1/150000-0.5*x2/30000);y(2)=x2*(-1-x2/30000+0.5*x1/150000-2*x3/2200);y(3)=x3*(-1-x3/2200+2*x2/30000);2解方程并画图 [t,x]=ode23(@fun,[0,1],[121000,...