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

来自:    更新日期:早些时候
如何用matlab求解一个二阶常系数微分方程组~

第一种方法:利用dsolve函数求微分方程的符号解(通解):对于一些不是很难,要求出通解的微分方程,用dsolve函数求解。

1、 打开Matlab软件-->点击新建脚本菜单,新建一个脚本文件用于编写微分方程求解程序。



2、 输入微分方程求解程序-->点击保存-->点击运行。



3、在matlab的命令窗口即可看到求解结果,是一个关于参数a,b的表达式


第二种方法:利用Matlab中的solver函数(包括ode45、ode23、ode15s等)来求解微分方程的数值解,这种方法是最常用的方法,对于dsolve函数难以求解的方程就可以利用这种方法求解方程的数值解。

1、 打开Matlab-->新建一个脚本文件用于编写求解程序。


2、 在脚本文件中输入求解程序-->点击保存-->点击运行。

3、 这里需要先编写一个函数文件用于表示方程-->点击保存-->编写求解程序-->点击保存-->点击运行。



4、在figure页面就可以看到所求解的微分方程的图形。


用Matlab编程计算二阶常微分方程组的数值解的方法有很多种,最常用有ode45函数。
ode45函数的使用格式:
【t,y】=ode45(odefun,tspan,y0)
例如:
>> odefun=@(t,y)[y(1)+2*y(2);3*y(1)+2*y(2)]; %自定义函数
>> tspan=[0 20]; %时间
>> y0=[1 1]; %初值
>> [t,y]= ode45(odefun,tspan,y0);
>> A=[t,y];
>> A
运行结果

一、理论解,用dsolve函数(在command window 中输入doc dsolve可以查看帮助)
示例:

代码:
[x,y]=dsolve('D2x+2*Dx=x+2*y-exp(-t)','Dy=4*x+3*y+4*exp(-t)')

二、数值解,用ode45,或ode23, ode15s其他函数。(在command window 中输入doc ode45可以查看帮助)
示例:

1. 建立M文件
function dy=vdp(t,y)
dy=[y(2);
1000*(1-y(1)^2)*y(2)-y(1);];

2. 调用MATLAB 函数ODE15S
[T,Y]=ode15s('vdp',[0 1000],[2 0]);
plot(T,Y(:,1));
图像为:


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

相关评论:
  • 17689382695怎样用Matlab解一个二元二次方程组?
    贺泽骆>> [x,y]=solve('x^2+(y-100)^2-89^2','x^2+y^2-10000');>> x=double(x),y=double(y)x = 79.7022 -79.7022 y = 60.3950 60.3950 >> s=sqrt((x-200).^2+y.^2-134^2)s = 12.7715 252.8337 严格来说没有解,近似解为(79.7022, 60.3950)

  • 17689382695用matlab求一元二次方程的根
    贺泽骆1、以一元二次方程为:x^2-6*x-12=0,为大家分享一下用matlab求一元二次方程的根的方法。2、在matlab的shu.m文件中输入:s=solve(x^2-6*x-12=0)3、点击运行shu.m文件,如图。4、这样就成功地输出一元二次方程为:x^2-6*x-12=0的两个根:X1= 21^(1\/2) + 3,X2= 3 - 21^...

  • 17689382695如何用Matlab求一元二次方程式解的个数以及解
    贺泽骆我们学习数学经常会遇到一元二次方程式,那么如何用Matlab软件求一元二次方程式解的个数以及各个解的值呢?下面小编给大家分享一下。1、首先打开Matlab软件,点击左上角的New Script按钮,如下图所示 2、接下来在弹出的界面中给新的脚本文件起一个名字,然后进行保存,如下图所示 3、接着我们在脚本...

  • 17689382695怎么用matlab解一元二次方程
    贺泽骆B.解二元方程:【1】 首先来求一个二元一次方程组 9x+8y=10 式1 13x+14y=12 式2 一般的解法是代入法,或者加减消去法。比较繁琐。这里只需输入如下命令即可求出解:[x,y]=solve('9*x+8*y=10','13*x+14*y=12','x','y')【2】回车后,matlab就求出了这个二元一次方程组的...

  • 17689382695MATLAB 求解一元二次方程的简单程序,我是菜鸟,谁帮我修改...
    贺泽骆程序应该没问题~就是disp只能带入一种变量来显示。要么你用str=sprintf('x1=x2=%f\\n',x)disp(str)要么用disp(strcat('x1=x2=',num2str(x)))或者类似c的 fprintf('x1=x2=%g\\n',x)

  • 17689382695二阶微分方程组的MATLAB解法 请告诉一种用ode45来解二阶微分方程组的...
    贺泽骆一个二阶微分方程:y''+y'+y=sin(t)初始条件为y(0)=5,y'(0)=6.过程:先降阶为一阶微分方程组 y'=z z'=-z-y+sin(t)编制如下函数m文件 function dy=weifen(t,x)dy=zeros(2,1);y=x(1)z=x(2)dy(1)=x(2);dy(2)=sin(t)-x(2)-x(1);然后用ode45解方程 [t,y]=...

  • 17689382695用MATLAB怎么解二元二次方程组
    贺泽骆用matlab解二元二次方程组,可以直接用solve()函数来求解。例如:>>[x,y] = solve('x^2*y^2 - 2*x - 1 = 0','x^2 - y^2 - 1 = 0')运行结果 对于较复杂的方程,也可以用数值分析的方法,如fsolve()函数、二分法,牛顿法,求出其数值解。

  • 17689382695用Matlab计算一幅二值图像中目标的面积(也就是像素数表示),如何...
    贺泽骆sum(c(:))试一下。我猜结果应该是1710.你doc bwarea看一下,有下面这些话 total = bwarea(BW)Description total = bwarea(BW) estimates the area of the objects in binary image BW. total is a scalar whose value corresponds roughly to the total number of on pixels in the image, **...

  • 17689382695用MATLAB编写一个求解一元二次方程 的函数,
    贺泽骆A=input('请输入一元二次方程的三个系数a,b,c:');delta=A(2)^2-4*A(1)*A(3);x1=(-A(2)-sqrt(delta))\/2*A(1);x2=(-A(2)+sqrt(delta))\/2*A(1);disp('该方程的根是:')x1 x2 是实根就显示实根,虚根就现实虚根。以下是我运行的结果:...

  • 17689382695在MATLAB中使用多种方法求解数值积分
    贺泽骆二、MATLAB中求解一元函数数值积分的实用指令 在MATLAB中,求解一元函数数值积分不仅便捷,而且指令丰富多样。除了上述提到的`quad`指令,还有`integral`指令,它提供了一种更通用的求积方法,适用于更广泛的函数类型和边界条件。使用`integral`时,只需提供被积函数和积分区间,指令会自动选择最合适的求解策略...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网