m0_62014014 2021-10-19 01:30 采纳率: 25%
浏览 57
已结题

请问一下怎么用MATLAB求解微分方程

img

  • 写回答

2条回答 默认 最新

  • joel_1993 2021-10-19 09:13
    关注

    你好,同学,代码供参考,该注释都注释了:

    
    % 第一题
    odefun1 = @(t,y) [y(2)*y(3); -y(1)*y(3); 0.51*y(1)*y(2)];%ode建立
    tspan = [0,10];%时间跨度
    y0 = [0;1;1];%初值
    [t,y] = ode45(odefun1, tspan, y0);%求解
    figure(1);clf
    plot(t,y); 
    xlabel('t'); ylabel('y')
    legend('y1','y2','y3')%标记曲线
    
    
    % 第二题
    odefun2 = @(t,x) [x(2); 1000*(1-x(1)^2)*x(2)+x(1)];
    tspan = [0,1e4];%时间跨度
    x0 = [2; 0];%初值
    [t,x] = ode23s(odefun2, tspan, x0);%刚性方程求解用ode23s
    figure(2);clf%画图
    yyaxis left % 由于x(t)和x'(t)量级相差太大,用了双y坐标
    plot(t,x(:,1)); 
    yyaxis right
    plot(t,x(:,2)); 
    xlabel('t'); ylabel('x')
    legend('x(t)','x''(t)')
    
    

    效果图

    img

    img

    有帮助望采纳哟

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日
  • 创建了问题 10月19日