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

用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 python使用pulp线性优化时报错
  • ¥15 为什么我的uibot导入py模块出错呀。py文件放在了uibot里对应的python文件夹了,卸了重安也不行
  • ¥15 开源或低价数据中台哪个最好
  • ¥15 arduino编程出现字符串疑似覆盖现象
  • ¥15 我的b站在没有碰到屏幕的情况下偶尔会自动跳出进度条,就像在屏幕上点了一下一样,但我并没有点。而且视频进度并没有变。这可能是什么原因造成的?
  • ¥30 STK matlab python仿真
  • ¥15 关于IMageEnView 图标定位问题
  • ¥20 求解答(matlab)
  • ¥30 ffmpeg库使用过程中遇到的问题
  • ¥15 pyqt5 中python如何通过Qtwebchannel主动发消息给web前端