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

作者&投稿:卷柱 (若有异议请与网页底部的电邮联系)
matlab中dsolve函数能解决二元二阶常系数微分方程组吗 ?~

一般是能解决的,但要看实际情况,也就是式子复杂程序。最好能把式子写出来看看。

一、理论解,用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));
图像为:

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

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

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

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

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

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

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

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

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



一、理论解,用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));

图像为:



用命令:dsolve('S','s1','s2',…,'x')
其中S 为方程s1,s1,s3,…为初始条件x 为自变量方程S 中用D 表示求导
数D2,D3,…表示二阶三阶等高阶导数初始条件缺省时给出带任意常数
C1,C2,..的通解自变量缺省值为t 也可求解微分方程组

1、dsolve('Dy=1+y^2')
结果ans =tan(t+C1)
2、y=dsolve('Dy=1+y^2','y(0)=1','x')
结果y =tan(x+1/4*pi)
3、x=dsolve('D2x+2*D1x+2*x=exp(t)','x(0)=1','Dx(0)=0')
结果x =1/5*exp(t)+3/5*exp(-t)*sin(t)+4/5*exp(-t)*cos(t)
4、S=dsolve('Df=3*f+4*g','Dg=-4*f+3*g') %解微分方程组
S =
f: [1x1 sym]
g: [1x1 sym]
计算结果返回在一个结构 S 中为了看到其中 f,g 的值有如下指令
f=S.f
g=S.g
f =exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2)
g =-exp(3*t)*(sin(4*t)*C1-cos(4*t)*C2)

如何使用matlab求解一个二元二次方程组的问题?
答:你有两点错误:1、你给solve函数输入公式时是不用加单引号的 直接输入就行,加了单引号就变成字符串了,所以MATLAB说你是无效表达 2、在使用solve函数时u、w是两个符号变两,应该先定义:syms u w 程序应改为:syms u w aF=0.8;af=-0.02;aB=-0.6;v0=12.26;T=104;S=1347.1;a1=aF...

怎么用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就求出了这个二元一次方程组的...

如何用matlab求解二次方程组
答:为输入方面,a^2+ac=2,b^2+bc=2,c^2+ac=4,d^2+ad=4分别为式子1,2,3,4 由1,2式相减,可得(a-b)(a+b+c)=0,因为a≠b,a+b+c=0;同理,由3,4式可得a+d+c=0;将b,d分别用a,c表示,并代入所求式子,得原式=2a-c;1,3两式分别相加和相减,组成一个方程组,可求出a,b的值...

matlab想用ode45求解一个二阶常微分方程
答:想用ode45求解一个二阶常微分方程,但边界条件是y(0)=某值,y(10)=某值,这应该怎么去求解?1、首先我们应该理清ode函数应用条件,由于二阶常微分方程的解有两个变量(y和y'),一般来说,给出的初始条件为 y(0)=某值和y'(0)=某值,这类问题是适合用ode函数求解。2、...

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

如何用matlab求二阶微分方程?
答:Simulink是matlab下基于框图的用于复杂动态系统建模的工具。今以 y"+4y'+4y=cos2t(0≤t≤10),y(0)=1,y'(0)=-2 二阶微分方程为例,用Simulink求解的步骤如下:第一步、分析微分方程的特点确定模块 我们将y"+4y'+4y=cos2t方程改写成y"=cos2t-4y'-4y,从右边可知,式子是由cos2t外加载...

matlab 求解二阶微分方程并画出y与t函数曲线
答:你好,求解这个方程的一般步骤用ode45。代码如下 clc;clear m = 0.00267; alpha = 4e-6;beta = 1e-6; U = 90;k = 0.5; p = 19.5216;A = 0.001256;dy=@(t, x, m, alpha, beta, U, k, p, A)[x(2);...m^(-1)*(-(k+1/beta)*x(1)+alpha*U/beta-p*...

一个二阶方程组要怎么用MATLAB解答呢?
答:ans = (C2*whittakerM((125*c1*(163/(250*c2))^(1/2))/163, -537/326, (500*c2*t*(163/(250*c2))^(1/2))/163))/(t^(700/163))^(1/2) + (C3*whittakerW((125*c1*(163/(250*c2))^(1/2))/163, -537/326, (500*c2*t*(163/(250*c2))^(1/2))/163))/(t^...

matlab求解二阶微分方程?
答:编写M-file function dotx=de(t,x)dotx=[x(2);-1/A*(-log(x(1))+x(1)/(b^2)+exp(-a*t)/K+log(a^2)-1)];命令窗口 [t,x]=ode45('de',[t_0,t_final],[x_int,y_int]) 即可 其中 两个方括号分别表示求解区间和初值。我这台机器没装Matlab结果没法直接给你看,你可以...

用matlab求解一个三元的二阶微分方程组,求大神指点。用不用ode45之类的...
答:function dx=myfun(t,x)dx=zeros(3,1);k=0.413719;c=0.1;a=0.0015;d=0.12;dx(1)=(a*sqrt(c)*sqrt(x(1)^2-d^2))/(x(1)^(3/2))*x(3);dx(2)=x(3);dx(3)=k*(x(1)/c-c^2/x(1)^2)*a*sqrt(c/x(1))*sqrt(x(1)^2-d^2)/x(1);clc clear options=...