在NDSolve中调用含参变量的NIntegrate
mathematica吧
全部回复
仅看楼主
level 8
Repentanze 楼主
我简化一下我的问题:
我定义了一个含参的数值积分函数
f[R_]:=NIntegrate[R,{r,0,10}]
然后我希望在NDSolve中调用它
sol=NDSolve[{a'[t]==f[t],a[0]==1},{a},{t,0,1}]
然而此时会报错NIntegrate::inumr。我明白问题出现的原因,但是我不知道怎么解决。
注:两个函数都是well-defined,我在这里简化了一下。
2023年03月22日 11点03分 1
level 8
Repentanze 楼主
自我回复:
我没有找到直接的解决方案,但是我用一个间接的方法实现了我的目标。
方案是使用插值函数:
List1 = Table[f[i], {i, 0, 30, 1];
f1 = ListInterpolation[List1, {{0, 30}}];
sol=NDSolve[{a'[t]==f1[t],a[0]==1},{a},{t,0,1}];
其中的f1是使用插值函数得到的数值函数,因此可以在ndsolve中使用。
2023年03月24日 10点03分 3
1