半夜汽笛965 2023-04-07 17:01 采纳率: 50%
浏览 95
已结题

用matlab复现欧拉法求解常微分方程初值问题

问题:函数或变量'eulerdif'无法识别
按照书上写的,希望有人能帮着解答一下

img

img

  • 写回答

5条回答 默认 最新

  • 「已注销」 2023-04-07 20:09
    关注

    书上的代码只是一部分,不完整,需要自己写函数。我在你代码基础上修改后,增加了自己编写的两个函数,用于计算欧拉法求解,代码如下:

    exa10_1=dsolve('Dy=-3* x* y','y(0)=1','x');
    exam10_1=inline('-3*x*y');
    E=eulerdif(exam10_1,0,2,1,0.1)
    ezplot(exa10_1,[0,2])
    hold on
    plot(E(:,1)',E(:,2)','r:')
    legend('解析解','数值解')
    hold off
    figure
    %examp10_1=inline(vectorize('-3* x* y'));
    syms x y;
    examp10_1 = -3*x*y;
    f = matlabFunction(examp10_1);
    
    direction_field(f, [0, 2], [0, 2], 0.1, 0.1);
    hold on
    ezplot(exa10_1,[0,2])
    hold off
    
    function [x, y] = eulerdif(f, x0, xn, y0, h)
    % 欧拉法求解常微分方程初值问题
    % f: 函数句柄,表示常微分方程的右端项
    % x0: 自变量初始值
    % xn: 自变量终止值
    % y0: 因变量初始值
    % h: 步长
    % x: 求解得到的自变量向量
    % y: 求解得到的因变量向量
    
    % 初始化解向量
    x = x0:h:xn;
    y = zeros(size(x));
    y(1) = y0;
    
    % 使用欧拉法求解
    for i = 1:length(x)-1
        y(i+1) = y(i) + h * f(x(i), y(i));
    end
    
    end
    function direction_field(f, x_range, y_range, x_step, y_step)
    % 绘制一阶常微分方程的方向场
    % f: 函数句柄,表示一阶常微分方程的右端项
    % x_range: 自变量范围
    % y_range: 因变量范围
    % x_step: 自变量步长
    % y_step: 因变量步长
    
    % 创建网格点
    [x, y] = meshgrid(x_range(1):x_step:x_range(2), y_range(1):y_step:y_range(2));
    
    % 计算方向场
    u = ones(size(x));
    v = f(x, y);
    
    % 绘制方向场
    quiver(x, y, u, v, 0.5, 'b', 'LineWidth', 1.2);
    
    % 添加坐标轴和标题
    xlabel('x');
    ylabel('y');
    title('Direction Field');
    
    end
    

    运行结果如下:

    img

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

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 4月7日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么