“常用公式”在线计算,“设计手册”在线查询
如何拟合曲线 y=a*x^2+b*x, 谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 1 个关于本帖的回复 最后回复于 2013-8-16 09:59

沙发
苏晓晓 新来的 发表于 2013-8-16 09:59:20 | 只看该作者
研发埠培训中心
总体思路是最小二乘法,具体做法需要进行换元。y=a*x^2+b*xy/x= ax+b然后设Y=y/x,则有:Y=ax+b然后根据已有的数据拟合就可以了,拟合完再换回去就可以了。1.#include <vector>2.3.voidleastSquare(std::vector<double> &x, std::vector<double> &y,int &a, int &b)4.{5.        double sx =0, sy = 0, sxy = 0, sx2 = 0; /*s前缀表示sum*/ 6.        int m =x.size(); 7.        for(int i =0; i != m, i++)8.        {9.               sx = sx + x; 10.               sy = sy + y; 11.               sxy = sxy + x*y; 12.               sx2 = sx2 + x*x; 13.        }14.        b = (sx2*sy- sxy*sx) / (sx2*m - sx*sx); 15.        a = (sx*sy -sxy*m) / (sx*sx - m*sx2);16.}大体就是这样子,没调试,自己看吧,传递给函数的参数是换元以后的。因为拟合次数低,所以没用矩阵运算。关于最小二乘法:已知函数群F={f0(x), f1(x), f2(x), f3(x), ..., fn(x)}寻找函数G(x) = a0*f0(x)+a1*f1(x)+a2*f2(x)+...+an*fn(x)的系数,使得SUM[G(xi) - yi]^2最小。假设样本点的数目为m,应该满足n<m。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台