如何解决在 Matlab 中拟合自定义方程
我想拟合这个方程来找到变量的值,特别是'c'
a*exp(-x/T) +c*(T*(exp(-x/T)-1)+x)
我确实有`
的值a = -45793671; T = 64.3096
由于缺少初始参数,cftool MATLAB中的SSE和RMSE误差太大,根本无法拟合数据。 我也尝试过其他方法(线性拟合),但错误率高的问题仍然存在。
有什么方法可以很好地拟合数据,以便我可以找到最准确的 c 值?
for x:
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
`
for y:
-45793671
-87174030
-124726368
-165435857
-211887711
-255565545
-295927582
-332434440
-365137627
-383107046
-408000987
-434975682
-465932505
-492048864
-513857005
-543087921
-573111110
-588176196
-607460012
-628445691
解决方法
我不认为拟合不好主要是因为缺少初始参数。
初试:
如果我们从问题的措辞中陈述的参数开始:a = -45793671; T = 64.3096 只剩下一个参数 c 需要拟合。结果并不令人满意:
二审:
如果我们只保持指定的 T 值不变,并优化两个参数 c 和 a ,RMSE 得到改善,但曲线的形状仍然不好:
第三次试用:
如果我们忘记了两个参数 T,a 的指定值,然后对三个参数 T,c,a 进行非线性回归,结果会更好:
但是从物理角度来看,T mignt 的负值是不可接受的。这表明函数 y(x)=a * exp(-x/T)+c*(T*(exp(-x/T)-1)+x) 可能不是一个好的模型。您应该检查函数中是否没有拼写错误和/或是否没有遗漏某些术语,以便更好地模拟物理实验。
仅供参考(可能没有用):
使用更简单的函数获得更好的拟合:y(x) = A + B * x + C * x^2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。