资源简介

最小二乘法拟合 用高斯牛顿法 一个指数函数 一个抛物线拟合 能运行 有结果

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

void about();
void Gauss(double * matrixint widthint height);
void showMatrix(double ** tempint widthint height);
void DrawPlots(double *xdouble *yint num_xint num_y);
const int N=15M=2M2=1;
void main(){

 double x[15]={1  1.5 2 2.5 3 3.5 4 4.5  5  5.5  6  6.5  7  7.5  8}
  y[15]={33.4  79.5  122.65  159.05  189.15   214.15  238.65  252.5  267.55  280.5  296.65  301.4  310.4  318.15  325.15};
    /*x[]={12345678910111213141516}
   y[]={4  6.4  8  8.8  9.22  9.5  9.7  9.86  10   10.2  10.32 10.42 10.5 10.55 10.58 10.6};*/
 
 int ijkl;
 
 cout<<“\n\n实验5 第1题  抛物线拟合\n“< double matrix[M+1][M+2]={0};matrix[0][0]=N;
 for(i=0;i  k=1;matrix[0][M+1]+=y[i];
  for(j=1;j<2*M+1;j++){
   k*=x[i];
   for(l=0;l<(j>M?2*M+1-j:j+1);l++)
    matrix[ j>M?j-M+l:l][ j>M?M-l:j-l]+=k;
   if(j  }
 }
 double *p=(double *)&matrix;
 Gauss(pM+2M+1);


 cout<<“\n\n指数拟合\n“< double matrix2[M2+1][M2+2]={0};matrix2[0][0]=N;

 for(i=0;i  k=1;
  matrix2[0][M2+1]+=y[i];
  for(j=1;j<2*M2+1;j++){
   k*=x[i];
   for(l=0;l<(j>M2?2*M2+1-j:j+1);l++)
    matrix2[ j>M2?j-M2+l:l][ j>M2?M

评论

共有 条评论