⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curve_drawup.cpp

📁 用最小二乘法来解决曲线拟合问题。程序具有可扩展性
💻 CPP
字号:
#include<iostream.h>
#define m  20
void main()
{int i,j,n;
 float iny,t;
 float ty=0,tt=0,tty=0,ttt=0,tttt=0;
 float save_t_y[m][2];
 float AA[3][4];
 float a,b,c;
 cout<<"输入结点的总数n:\n"<<endl;
 cin>>n;
 cout<<"please input the data of the t and y:\n"<<endl;
 for(i=1;i<=n;i++)
 { cout<<"输入t值:\n"<<endl;
   cin>>t;
   save_t_y[i][0]=t;
   cout<<"输入t的对应y值:\n"<<endl;
   cin>>iny;
   save_t_y[i][1]=iny;
 }
 t=0,iny=0;
 for(i=1;i<=n;i++)
 {  t=t+save_t_y[i][0];
    iny=iny+save_t_y[i][1];  
    ty=ty+save_t_y[i][0]*save_t_y[i][1];
    tt=tt+save_t_y[i][0]*save_t_y[i][0];
    tty=tty+save_t_y[i][0]*save_t_y[i][0]*save_t_y[i][1];
    ttt=ttt+save_t_y[i][0]*save_t_y[i][0]*save_t_y[i][0];
    tttt=tttt+save_t_y[i][0]*save_t_y[i][0]*save_t_y[i][0]*save_t_y[i][0];
 }
  //然后给法方程组的系数赋值。
  AA[0][0]=16.0;
  AA[1][1]=tt;
  AA[2][2]=tttt;
  AA[0][1]=AA[1][0]=t;
  AA[0][2]=AA[2][0]=tt;
  AA[1][2]=AA[2][1]=ttt;
  //然后给法方程组的Y赋值。
  AA[0][3]=iny;
  AA[1][3]=ty;
  AA[2][3]=tty;
  //输出法方程组。
  cout<<"输出法方程组:"<<endl;
  for(i=1;i<4;i++)
	  for(j=1;j<5;j++)
	  {cout<<AA[i-1][j-1]<<'\t';
	   if(j%4==0)cout<<endl;
	  }
  //然后求解法方程组a,b,c.
  //求上三角矩阵。
    
    iny=AA[0][0]/AA[2][0]; 
   for(j=0;j<4;j++)
	  { 
	    AA[0][j]=AA[0][j]-iny*AA[2][j];
	  }
    iny=AA[1][0]/AA[2][0];
    for(j=0;j<4;j++)
	  { 
	    AA[1][j]=AA[1][j]-iny*AA[2][j];
	  }
    iny=AA[0][1]/AA[1][1];
    for(j=1;j<4;j++)
	  { 
	    AA[0][j]=AA[0][j]-iny*AA[1][j];
	  }
  
  //然后解出方程组a,b,c.
  c=AA[0][3]/AA[0][2];
  b=(AA[1][3]-AA[1][2]*c)/AA[1][1];
  a=(AA[2][3]-AA[2][2]*c-AA[2][1]*b)/AA[2][0];
  cout<<"a="<<a<<endl;
  cout<<"b="<<b<<endl;
  cout<<"c="<<c<<endl;
}

  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -