大佬们,关于微分方程拟合问题求教
mathematica吧
全部回复
仅看楼主
level 4
凤辉97💯 楼主
xlist = Table[i, {i, 0, 20}];
ylist = Table[3*i^3 + 2*i^2, {i, 0, 20}]
data = Table[{xlist[[i]], ylist[[i]]}, {i, 1, 21}];
eq = y'[x] == a*x^m + b*x^n
pfun = ParametricNDSolveValue[{eq, y[0] == 0}, y, {x, 0, 20}, {a, b, m, n}]
sol = NonlinearModelFit[data, pfun[a, b, m, n][x], {a, b, m, n}, x]
为什么这么简单的a=9,b=4,m=2,n=1,程序就是拟合不出来呢?大佬们看看我的代码有没有问题?
2020年08月03日 03点08分 1
吧务
level 10
稍微看了一下,发现问题:
1. 第三行的分号是中文分号
2. 不必使用ParametricNDSolveValue,DSolveValue即可
3. 既然x可取0,那么应当注意约束m>0&&n>0
2020年08月03日 05点08分 2
level 4
凤辉97💯 楼主
为什么用DSolveValue就行?我的原微分方程是含位置参数的啊?
2020年08月03日 05点08分 3
求解析解的DSolve也可以处理参量的。没法处理参量的是NDSolve所以才有对应的参量版本ParametricNDSolve
2020年08月03日 05点08分
1