1 / 5
文档名称:

曲线拟合——最小二乘法算法.pdf

格式:pdf   大小:157KB   页数:5页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

曲线拟合——最小二乘法算法.pdf

上传人:guoxiachuanyue004 2022/5/20 文件大小:157 KB

下载得到文件列表

曲线拟合——最小二乘法算法.pdf

文档介绍

文档介绍:曲线拟合——最小二乘法算法
一、目的和要求
1)了解最小二乘法的基本原理,熟悉最小二乘算法;
2)掌握最小二乘进行曲线拟合的编程,通过程序解决实际问题。
二、实****内容
1)最小二乘进行多项式拟合的编程实现。
include<>
#include<>
#define Q 100
float CF(int,float);
main()
{
int i,j,n1,n,p,k,q;
float x[Q],y[Q],s[Q]={0},t[Q]={0},a[Q][Q]={0},l,sum=0;
/*以下是最小二乘的程序*/
printf("input 数据组数 n");scanf("%d",&n);
printf("input 拟合次数 n1");
scanf("%d",&n1);
for(i=0;i<n;i++)
{
printf("x[%d]=",i);
scanf("%f",&x[i]);
printf("y[%d]=",i);
scanf("%f",&y[i]);
}
for(i=0;i<=2*n1;i++)
for(j=0;j<n;j++)
{
s[i]=s[i]+CF(i,x[j]);
if(i<=n1)
t[i]=t[i]+y[j]*CF(i,x[j]);
}
for(i=0;i<n1+1;i++)
for(j=0;j<n1+2;j++)
{
a[i][j]=s[i+j];
if(j==n1+1)
a[i][j]=t[i];
}
for(i=0;i<n1+1;i++)
for(j=0;j<n1+2;j++)
printf("a[%d][%d]=%f",i,j,a[i][j]);
/*以下的是削去法的程序*/
for(j=0;j<=n1-1;j++)
{p=j;
for(i=j+1;i<=n1;i++)
{
if(fabs(a[j][j])<fabs(a[i][j]))
p=i;
}
if(p!=j)
for(i=j;i<=n1+1;i++)
{l=a[p][i];
a[p][i]=a[j][i];
a[j][i]=l;
}
for(k=j+1;k<=n1;k++)
{l=a[k][j]/a[j][j];
for(q=j;q<=n1+1;q++)a[k][q]=a[k