我目前正在尝试解决一个具有18个偏微分方程和常微分方程的大型偏微分方程系统(这就是为什么我使用FiPy而不是scipy中的odeint(。其中一个方程很简单:dROS/dt=0.06,我实现如下:
eqn_ROS = ( TransientTerm(var=ROS) == 0.06 )
所需的时间范围是从o到3650,所以我用这种方式求解,使用扫描(我在这里只为一个方程写更新(:
for t in range(3650):
ROS.updateOld()
res = 1e10
while res > 0.1:
res = eqn_ROS.sweep(var=ROS, dt=1e-5)
由于我希望得到ROS=0.06t的图,当我绘制ROS与t的图时(在从用TSVviewr创建的tsv文件中产生正确的值之后(,t轴确实是从0到3650,然而,ROS值比预期的要小得多,并且与想要的值36500.06不匹配。
我必须补充一点,我曾尝试用相同的扫描dt单独求解这个方程,但值是错误的。
这个问题会因为我为扫描选择的dt而发生吗?或者可能是我完全误解了什么?
提前感谢!
[在GitHub上回答。请在一个位置或另一个位置询问,但不能同时询问]
你正在进行3650个1e-5大小的步骤,总持续时间为3.65e-2,所以我预计最终ROS为0.00219,这就是实际情况。
这个方程在ROS中是线性的,所以没有必要扫过它