数值问题求解:Sage中的实用方法与应用
1. 求解常微分方程组(ODEs)
Sage提供了数值求解常微分方程组的工具,利用这一能力可以解决任何高阶常微分方程,因为高阶常微分方程可以分解为一阶常微分方程组。下面以范德波尔(van der Pol)振荡器为例进行说明。
1.1 尝试符号求解
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会报错,表明它无法找到符号解。
1.2 数值求解
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
超级会员免费看
订阅专栏 解锁全文
765

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



