You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中使用ode45绘图时x轴无法延伸至1000的问题求助

解决MATLAB绘图x轴无法延伸到1000的问题

嘿,我明白你的困扰了!咱们先理清楚问题出在哪:你现在用ode45求解得到的N数组,其实是微分方程dN/dt=-0.5N+100的解N(t),当t增大时,N(t)会逐渐收敛到稳态值200(因为当N=200时,dN/dt=0,系统不再变化)。所以你的N数组里的数值最大也就接近200,自然用它来做x轴绘图时,没法延伸到1000。

而你真正想画的是微分方程右侧关于N的函数(也就是f(N) = -0.5N + 100),这个操作根本不需要用到ode45——直接生成覆盖0到1000的N取值范围,再计算对应的函数值就行。

修改后的代码:

% 生成从0到1000的N值序列,1000个点保证图像平滑
N_vals = linspace(0, 1000, 1000);
% 计算对应的微分方程右侧函数值
f_vals = -0.5*N_vals + 100;
% 绘制函数图像
plot(N_vals, f_vals)
% 设置坐标轴范围
axis([0 1000 -500 500])
% 可选:添加标签让图像更清晰
xlabel('N')
ylabel('dN/dt')
title('Function: dN/dt = -0.5N + 100')

如果你同时想观察ode45求解的N(t)变化趋势,也可以把这部分内容补充到图里,比如用子图展示:

% 保留原有的ode45求解代码
eq = @(t,N)(-0.5*N+100);
[t,N] = ode45(eq,[0 500],-5);

% 新建绘图窗口,用子图同时展示两个内容
figure
subplot(1,2,1)
plot(t,N)
xlabel('Time t')
ylabel('N(t)')
title('Solution of dN/dt = -0.5N + 100')

subplot(1,2,2)
N_vals = linspace(0, 1000, 1000);
f_vals = -0.5*N_vals + 100;
plot(N_vals, f_vals)
axis([0 1000 -500 500])
xlabel('N')
ylabel('dN/dt')
title('Function: dN/dt = -0.5N + 100')

这样就能同时看到微分方程的解曲线和你想要的函数图像啦!

内容的提问来源于stack exchange,提问作者JordanSW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:53:30