数值问题求解:Sage 中的实用方法与案例
1. 求解常微分方程组(ODEs)
Sage 提供了数值求解常微分方程组的工具,并且可以将高阶 ODE 转化为一阶 ODE 系统进行求解。以范德波尔振荡器为例,我们先尝试寻找符号解:
var('t')
x = function('x', t)
y = function('y', t)
u = 1.0
de1 = diff(x,t) - y == 0
de2 = diff(y,t) + x - u * y * (1 - x^2) == 0
Van_der_Pol = [de1, de2]
desolve_system(Van_der_Pol, [x, y], ics=[0, 2, 0])
运行上述代码会报错,说明 Sage 无法找到符号解。接下来进行数值求解:
var('t, x, y')
u = 1.0
Van_der_Pol = [y, -x + u * y * (1 - x^2)]
sol = desolve_system_rk4(Van_der_Pol, [x, y], ivar=t,
ics=[0, 2, 0], end_points=[0, 20])
t = [i for i, j, k in sol]
x_sol = [j for i, j, k in sol]
y_sol = [k for i, j, k in sol]
# Plot results
import matplotlib.pyplot as plt
plt.figure(figsize=(4
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



