如何在RK4算法的循环中提取每个x,y点并绘制对应曲线图?
RK4 迭代值提取与曲线绘制实现方案
你只需要修改原RK4函数的返回逻辑,存储每一步迭代的x、y值,再调用可视化库绘制曲线即可,以下是可直接运行的完整代码:
import matplotlib.pyplot as plt def f(x,y): return 2*x**2-4*x+y def RK4(x0,y0, b, h): # 初始化存储序列,先存入初始值 x_points = [x0] y_points = [y0] while x0 < b: k1 = h * f(x0, y0) k2 = h * f(x0 + 0.5*h, y0 + 0.5*k1) k3 = h * f(x0 + 0.5*h, y0 + 0.5*k2) k4 = h * f(x0 + h, y0 + k3) y0 += (k1 + 2*k2 + 2*k3 + k4)/6 x0 += h # 存入当前步计算结果 x_points.append(x0) y_points.append(y0) return x_points, y_points # 计算参数配置 b = 3 h = 0.001 init_x = 1 init_y = 0.7182818 # 执行计算得到所有坐标点 all_x, all_y = RK4(init_x, init_y, b, h) # 绘制曲线 plt.figure(figsize=(9,5)) plt.plot(all_x, all_y, label='RK4 计算结果', color='steelblue') plt.xlabel('x 取值') plt.ylabel('y 取值') plt.title('四阶龙格-库塔法计算结果曲线') plt.legend() plt.grid(linestyle='--', alpha=0.3) plt.show() # 输出最终y值和原代码结果对齐 print("最终y值:", all_y[-1])
核心改动说明
- 原RK4函数仅返回最终y值,修改后新增列表存储每一步迭代的x、y坐标,返回完整的坐标序列
- 把全局参数
b、h改为函数入参,降低代码耦合 - 引入
matplotlib库实现曲线可视化,可直接运行查看结果
内容的提问来源于stack exchange,提问作者user16852609
相关产品推荐
相关产品推荐

