【报错】拟合微分方程提示“不是由实数组成的维度列表”
mathematica吧
全部回复
仅看楼主
level 1
total = {{0., 0.}, {1., 0.0425}, {2., 0.06375}, {3., 0.11}, {4., 0.15625}, {9., 1.2}, {14., 0.94375}, {19., 1.08875}}
FindFit[total, y'[t] == a*Tanh[b*t], {{a, 0.01}, {b, 0.01}}, t, PrecisionGoal -> 5, AccuracyGoal -> 5]
我想直接对这个微分方程的微分形式拟合,找出最佳a和b,但提示这种报错我看不懂是怎么回事,有人能为我解答么?
(total的数据就是 dy dt的具体值,无需向前向后或中心差分来算出近似导数)
2023年05月14日 00点05分 1
level 8
Findfit中的函数不应该用等式,而应该直接用表达式。
对于你的情况,你可以先拟合出曲线后再进行积分。
2023年05月14日 04点05分 2
我这是不是漏写了 初始 边界所以有问题??
2023年05月14日 05点05分
我的意思是,你应该直接写aTanh[b*t],去掉前面的y'==,因为findfit不是ndsolve。
2023年05月14日 05点05分
@Repentanze 那么我额外的小问题是,那些初始条件、边界条件对findfit有影响么?要写进去吗
2023年05月14日 05点05分
如果用Findfit求解这个一阶导数,那么初始值是不用被包括在里面的。但是你后续用Integrate或者DSolve求解y本身的时候,就需要初始条件和边界条件了。
2023年05月14日 05点05分
吧务
level 15
反正帖子挖上来你们也不看是吧:
tieba.baidu.com/p/6789981730
2023年06月03日 03点06分 3
1