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*A)];

[t,x] = ode45(@(t,x)dy(t, x, m, alpha, beta, U, k, p, A),[0,1e-3],[0,0]);

subplot(1,2,1)

plot(t,x(:,1))

xlabel('$$t$$','interpreter','latex','fontsize',16);

ylabel('$$y$$','interpreter','latex','fontsize',16)

subplot(1,2,2)

plot(t,x(:,2))

xlabel('$$t$$','interpreter','latex','fontsize',16);

ylabel('$$y''$$','interpreter','latex','fontsize',16);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-20

用matlab 求解二阶微分方程并画出y与t函数曲线,可以用dsolve函数和plot函数来实现。

给出的二阶微分方程存在着几个疑点:1、表达式中的z是否是笔误,还是y。如是z,其表达式是什么?2、求解二阶微分方程的数值解,必须有两个初始条件,本题只有一个。

下列代码中,z按y来处理,增加初始条件y'(0)=0

>> m=0.00267;k=0.5;b=0.000001;a=0.000004;U=90;p=-19.5216;A=0.001256;

>> syms y(t)

>> Dy=diff(y,1);D2y=diff(y,2);

>> y=dsolve(m*D2y+(k+1/b)*y==a/b*U-p*A,y(0)==0,Dy(0)==0);

>> t=0:0.1:20;

>> y=eval(y);

>> plot(t,y)

本回答被提问者采纳
相似回答