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

📄 曲线拟合最小二乘法.cpp

📁 数值计算程序 包括:变步长梯形公式算法、二叉树算法、二分法、高斯列主消去法、曲线拟合算法等
💻 CPP
字号:
#include<stdio.h>
#include<math.h>
#define n 6
#define m 3
double x[n+1]={0,0,1,2,3,4,5};
double Y[n+1]={0,5,2,1,1,2,3};
void main( )
{int i,j,k;
double l;
double a[n+1][n+1],ata[m+1][n+1],aty[m+1],c[m+1],A[m+1][m+2];
for(i=1;i<=n;i++)
{a[i][1]=1;
   for(j=2;j<=m;j++)
    a[i][j]=pow(x[i],j-1);}
   for(i=1;i<=m;i++)
      for(j=1;j<=m;j++)
        {ata[i][j]=0;
           for(k=1;k<=n;k++)
              ata[i][j]+=a[k][i]*a[k][j];}
   for(i=1;i<=m;i++)
     {aty[i]=0;
        for(k=1;k<=n;k++)
            aty[i]+=a[k][i]*Y[k];}
   for(i=1;i<=m;i++)
     {A[i][m+1]=aty[i];
        for(j=1;j<=m;j++)
          A[i][j]=ata[i][j];}
   for(k=1;k<=m-1;k++)
     for(i=k+1;i<=m;i++)
       {l=A[i][k]/A[k][k];
          for(j=k+1;j<m;j++)
            {A[i][j]-=l*A[k][j];}}
   for(k=m;k>=1;k--)
     {c[k]=A[k][m+1];
        for(j=k+1;j<=m;j++)
          {c[k]-=A[k][j]*c[j];}
          c[k]=c[k]/A[k][k];}
   for(i=1;i<=m;i++)
   printf("\nc[%d]=%f",i,c[i]);}

⌨️ 快捷键说明

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