曲线拟合的问题:
这样一组数据:
X:0.24 0.65 0.95 1.24 1.73 2.01 2.23 2.52 2.77 2.99
Y:0.23 -0.26 -1.10 -0.45 0.27 0.10 -0.29 0.24 0.56 1.00
对做出拟合方程:用如下函数
Q(a,b,c)=∑(a*ln(xi) + b*cos(xi) + c*e^xi - yi)(注:∑是i=1 到 n)
对a求偏导=0; 对b求偏导=0; 对c求偏导=0
(注:偏导符号找不到,只有用中文)
得方程组:
a*∑(ln(xi))^2 + b*∑(ln(xi))*(cos(xi)) + c*∑(ln(xi))*e^xi = ∑yi*ln(xi)
a*∑(ln(xi))*(cos(xi)) + b*∑(cos(xi))^2 + c*∑(cos(xi))*e^xi = ∑yi*cos(xi)
a*∑(ln(xi))*e^xi + b*∑(cos(xi))*e^xi + c*∑(e^xi)^2 = ∑yi*e^xi
最后求得a=-1.04103,b=-1.26132,c=0.03073
所得的方程可以很好的摸拟出所给的原始点的轨迹。
但当数据值换成下面的值时,所得的方程最后的y值就趋近于5了,这是什么原因啊?
X:1 2 3 4 5 6 7 8 9 10
Y:0 0 9 0 5 8 3 0 7 6
相关回复:
1.曲线拟合主要是数学方面的算法,matlab是一套数学软件,里头有好多的C的头文件,你可以直接参考这些文件进行编写你的曲线拟合程序,也可以通过matlab进行编写程序,并且编译成dll供你的C#调用
2.建议去下载MatLab,然后在里头写出你想要的曲线拟合程序,编译成dll供你的程序调用