求大神用c++编一个二次曲线拟合的程序
答案:1 悬赏:60 手机版
解决时间 2021-04-08 04:55
- 提问者网友:箛茗
- 2021-04-07 15:53
求大神用c++编一个二次曲线拟合的程序
最佳答案
- 五星知识达人网友:有你哪都是故乡
- 2021-04-07 17:30
void CPandaSolveDlg::fit2(double* inde,double * inData,int count,double& a,double& b,double& c)
{
double sum_x4=0,sum_x3=0,sum_x2=0,sum_x=0,sum_n=0,sum_y=0,sum_yx=0,sum_yx2=0;
for (int i=0;i {
sum_n += 1;
sum_x += inde[i];
sum_x2 += pow(inde[i],2.0);
sum_x3 += pow(inde[i],3.0);
sum_x4 += pow(inde[i],4.0);
sum_y += inData[i];
sum_yx += inData[i]*inde[i];
sum_yx2 += inData[i]*inde[i]*inde[i];
}
double a1,a2,a3,b1,b2,b3,c1,c2,c3;
a1 = sum_x3/sum_x4;
b1 = sum_x2/sum_x4;
c1 = sum_yx2/sum_x4;
a2 = sum_x2-sum_x3*a1;
b2 = sum_x-sum_x2*a1;
c2 = sum_yx-sum_yx2*a1;
a3 = sum_x-sum_x3*b1;
b3 = sum_n-sum_x2*b1;
c3 = sum_y-sum_yx2*b1;
double d1,d2,d3,e1,e2,e3;
d2 = b2/a2;
e2 = c2/a2;
d1 = b1-a1*d2;
e1 = c1-a1*e2;
d3 = b3-a3*d2;
e3 = c3-a3*e2;
c = e3/d3;
a = e1-d1*c;
b = e2-d2*c;
return ;
}
说明:inde为自变量数组,inData为函数数组,a、b、c为二次函数的二次项、一次项和常数项追问不行啊,不能运行,数据给你 拜托了!!!
追答
后面部分就是子函数里的
{
double sum_x4=0,sum_x3=0,sum_x2=0,sum_x=0,sum_n=0,sum_y=0,sum_yx=0,sum_yx2=0;
for (int i=0;i
sum_n += 1;
sum_x += inde[i];
sum_x2 += pow(inde[i],2.0);
sum_x3 += pow(inde[i],3.0);
sum_x4 += pow(inde[i],4.0);
sum_y += inData[i];
sum_yx += inData[i]*inde[i];
sum_yx2 += inData[i]*inde[i]*inde[i];
}
double a1,a2,a3,b1,b2,b3,c1,c2,c3;
a1 = sum_x3/sum_x4;
b1 = sum_x2/sum_x4;
c1 = sum_yx2/sum_x4;
a2 = sum_x2-sum_x3*a1;
b2 = sum_x-sum_x2*a1;
c2 = sum_yx-sum_yx2*a1;
a3 = sum_x-sum_x3*b1;
b3 = sum_n-sum_x2*b1;
c3 = sum_y-sum_yx2*b1;
double d1,d2,d3,e1,e2,e3;
d2 = b2/a2;
e2 = c2/a2;
d1 = b1-a1*d2;
e1 = c1-a1*e2;
d3 = b3-a3*d2;
e3 = c3-a3*e2;
c = e3/d3;
a = e1-d1*c;
b = e2-d2*c;
return ;
}
说明:inde为自变量数组,inData为函数数组,a、b、c为二次函数的二次项、一次项和常数项追问不行啊,不能运行,数据给你 拜托了!!!
追答
后面部分就是子函数里的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯