求一个用最小二乘法求拟合曲线表达式的C++程序,不需要图像,只要斜率和截距就行~

已知的点(x,y)共有九个,x就是从0到8,y的值需要手动输入,然后求出这九个点的拟合曲线~... 已知的点(x,y)共有九个,x就是从0到8,y的值需要手动输入,然后求出这九个点的拟合曲线~ 展开
 我来答
k胀熊猫
2012-07-21 · TA获得超过748个赞
知道小有建树答主
回答量:351
采纳率:0%
帮助的人:307万
展开全部
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <iostream>
using namespace std;
class coordinate
{
public:
double x;
double y;
};

coordinate function(int n, coordinate *cor)
{
coordinate result;
int i;
double sumy=0, sumx=0, sumx2=0, sumxy=0;

for(i=0; i<n; i++)
{
sumy += cor[i].y;
}
for(i=0; i<n; i++)
{
sumx += cor[i].x;
}
for(i=0; i<n; i++)
{
sumxy += cor[i].y * cor[i].x;
}
for(i=0; i<n; i++)
{
sumx2 += cor[i].x * cor[i].x;
}
result.x = (n*sumxy - sumx*sumy) / (n*sumx2 - sumx*sumx);
result.y = (sumxy*sumx - sumy*sumx2) / (sumx*sumx - n*sumx2);
return result;
}
int main ()
{
cout<<"Please input the 9 y coordinate"<<endl;
coordinate * cor = new coordinate [9];
coordinate result;
for(int i=0; i<9; i++)
{
cin >> cor[i].y;
}
for(i=0; i<9; i++)
{
cor[i].x = (double)i;
}
result = function(9, cor);
cout<< "最小二乘斜率为:"<<result.x<<endl;
cout<< "最小二乘截距为:"<<result.y<<endl;
return 0;
}

楼主你验下对不 ,我之前调了下可以运行,结果没有验证哈
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式