def euler_method(f, x0, y0, h, x_end):
"""
使用欧拉法求解常微分方程 y'=f(x,y) 的近似解。
参数:
f : callable
含有微分方程 y'=f(x,y) 的函数。
x0 : float
初始x值。
y0 : float
初始y值。
h : float
步长。
x_end : float
求解的终点x值。
返回:
x_values : list
x的值列表。
y_values : list
y的近似值列表。
"""
# 初始化变量
x_values = [x0]
y_values = [y0]
# 当前x和y值
x = x0
y = y0
# 当x小于x_end时进行迭代
while x < x_end:
# 使用欧拉法计算下一个y值
y_next = y + h * f(x, y)
# 更新x和y值
x += h
y = y_next
# 添加到列表中
x_values.append(x)
y_values.append(y)
return x_values, y_values
# 示例使用
# 定义一个微分方程 y'=x+y
def f(x, y):
return x + y
# 求解 y'=x+y, y(0)=1 从 x=0 到 x=2,步长为0.1
x_values, y_values = euler_method(f, 0, 1, 0.1, 2)
# 打印结果
for x, y in zip(x_values, y_values):
print(f"x: {x}, y: {y}")