我一直试图用四阶Runge-Kutta method来模拟一阶微分方程,但在绘制它时遇到了问题。你知道吗
#simulation of ode using 4th order rk method dy/dx=-2y+1.3e^-x,y(0)=5,h=0.01 from sympy import*
import math
import numpy as np
import matplotlib.pyplot as plt
h=0.01;
ti=0;
x=0;
n=0;
y=5;
def f(x,y):
return 1.3*math.exp(-x)-2*y
while x < 10:
k1=f(x,5);
k2=f(x+h/2,y+(h/2)* k1);
k3=f(x+h/2,y+(h/2)* k2);
k4=f(x+h,y+h*k3);
y=y+h/6*(k1+2*(k2+k3)+k4);
x=x+h;
plt.plot(x,y);
我知道问题是因为每次循环运行时都会更新x,y值,但是有人能解释一下如何绘制(x,y)的所有值吗?你知道吗
正如注释中所建议的,您可以创建两个列表来存储
x
和y
值,并在while
循环后打印:另一个错误结果的来源是RK4循环中的第一行。而不是
使用
因为
y
的值不会在初始值保持不变。你知道吗相关问题 更多 >
编程相关推荐