C++程序最小二乘二次函数拟合.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:2 大小:27KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

C++程序最小二乘二次函数拟合.doc

C++程序最小二乘二次函数拟合.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

最小二乘二次函数形式拟合C++程序#include<iostream.h>#include<math.h>#definemax_n25//(x_i,y_i)的最大维数typedefstructtagpoint//点的结构{doublex;doubley;}point;intmain(){intm;inti;pointpoints[max_n];staticdoublea11,a12,a13,a21,a22,a23,a31,a32,a33,c1,c2,c3;doubleA,B,C,tmp;cout<<"请在0到25之间选择输入m的值:"<<endl;//输入点mcin>>m;if(m>max_n){cout<<"这个值太大,大于25,请重新输入"<<endl;return1;}if(m<0){cout<<"这个值太小,小于0,请重新输入"<<endl;return1;}cout<<"现在输入(x_i,y_i),i=1,..."<<m<<endl;//输入点for(i=1;i<=m;i++){cin>>tmp;points[i].x=tmp;cin>>tmp;points[i].y=tmp;}//输入points[i].x与points[i].yfor(i=1;i<=m;i++){//其中为对原方程取对数后的a12+=points[i].x;a13+=points[i].x*points[i].x;a23+=points[i].x*points[i].x*points[i].x;a33+=points[i].x*points[i].x*points[i].x*points[i].x;c1+=points[i].y;c2+=points[i].x*points[i].y;c3+=points[i].x*points[i].x*points[i].y;}a11=m;a21=a12;a22=a13;a31=a13;a32=a23;//求解A=c1*(a22*a33-a23*a32)/(a11*a22*a33-a11*a23*a32-a21*a12*a33+a21*a13*a32+a31*a12*a23-a31*a13*a22)-c2*(a12*a33-a13*a32)/(a11*a22*a33-a11*a23*a32-a21*a12*a33+a21*a13*a32+a31*a12*a23-a31*a13*a22)+c3*(a12*a23-a13*a22)/(a11*a22*a33-a11*a23*a32-a21*a12*a33+a21*a13*a32+a31*a12*a23-a31*a13*a22);B=-c1*(a21*a33-a23*a31)/(a11*a22*a33-a11*a23*a32-a21*a12*a33+a21*a13*a32+a31*a12*a23-a31*a13*a22)+c2*(a11*a33-a13*a31)/(a11*a22*a33-a11*a23*a32-a21*a12*a33+a21*a13*a32+a31*a12*a23-a31*a13*a22)-c3*(a11*a23-a13*a21)/(a11*a22*a33-a11*a23*a32-a21*a12*a33+a21*a13*a32+a31*a12*a23-a31*a13*a22);C=c1*(a21*a32-a22*a31)/(a11*a22*a33-a11*a23*a32-a21*a12*a33+a21*a13*a32+a31*a12*a23-a31*a13*a22)-c2*(a11*a32-a12*a31)/(a11*a22*a33-a11*a23*a32-a21*a12*a33+a21*a13*a32+a31*a12*a23-a31*a13*a22)+c3*(a11*a22-a12*a21)/(a11*a22*a33-a11*a23*a32-a21*a12*a33+a21*a13*a32+a31*a12*a23-a31*a13*a22);cout<<"所得拟合函数为;"<<endl;cout<<"p(x)="<<A<<B<<"x"<<C<<"x^2"<<endl;//输出return0;}