【发布时间】:2021-01-03 11:58:55
【问题描述】:
所以我想知道:某些函数的积分之和不应该等于函数之和的积分吗?
这里我借助scipy的solve_ivp整合了三个任意函数:
import numpy as np
from scipy.integrate import solve_ivp
def fun1(t, y): return 0.5 * y
def fun2(t, y): return 0.05 * y**2
def fun3(t, y): return y + 5
sol1 = solve_ivp(fun1, [0, 5], [2], rtol=1e-10, atol=1e-10)
sol2 = solve_ivp(fun2, [0, 5], [2], rtol=1e-10, atol=1e-10)
sol3 = solve_ivp(fun3, [0, 5], [2], rtol=1e-10, atol=1e-10)
print(f'{sol1.y[0][-1]} + {sol2.y[0][-1]} + {sol3.y[0][-1]} = {sol1.y[0][-1]+sol2.y[0][-1]+sol3.y[0][-1]}')
这给出了:
24.36498792283038 + 4.0000000000803775 + 1033.8921138100272 = 1062.257101732938
但另一方面:
import numpy as np
from scipy.integrate import solve_ivp
def fun(t, y): return (0.5 * y) + (0.05 * y**2) + (y + 5)
sol = solve_ivp(fun, [0, 5], [2], rtol=1e-10, atol=1e-10)
print(f'{sol.y[0][-1]}')
给予:
233176411972824.97
各位聪明人能告诉我我的思维错误吗?我的数学是错的还是我必须在 Python 中以不同的方式实现这个任务?非常感谢您的帮助!
【问题讨论】:
标签: python numpy math scipy integral