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);
用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)