实验名称: 曲线拟合的最小二乘法实验目的了解曲线拟合的最小二乘法实验类型设计型实验环境 Windows XP TC 实验内容相关知识:已知 C[a,b] 中函数 f(x) 的一组实验数据(x i,y i)(i=0,1, …,m),其中 y i=f(x i)。设);,,1,0 )((mnnjx j????是C[a,b] 上线性无关函数族。在)}(, ),( ),({ 10xxx span n??????中找函数 f(x) 曲线拟合的最小二乘解??? nj jjxaxS 0 *)()(?,其法方程(组)为: ),,1,0(),( 0nkda nj kjjk???????其中, ??? mi ikijikjxxx 0)()()(),(????????? mi kikiikdxxfxf 0)()()(),(??? k=0,1, …,n 特别是,求函数 f(x) 曲线拟合的线性最小二乘解 bax xS??)( *的计算公式为: ???????????????? mi i mi i mi ii mi i mi i mi ixxm yxxyxb 0 20 2 0000 2)()1( ) )(() )((??????????????? mi i mi i mi i mi i mi iixxm yxyxma 0 20 2 000)()1( ) )(()1( 数据结构:两个一维数组或一个二维数组算法设计:(略) 实验用例: 已知函数 y=f(x) 的一张表: x0102030405060708090 60 试验要求:利用曲线拟合的线性最小二乘法求被逼近函数 f(x) 在点 x=55 处的近似值,并画出实验数据和直线。编写代码: #include<> #include<> #include<> double qiuhe1(double a[10][2],int p) {int i; double y; y=0; for(i=0;i<10;i++) y=y+a[i][p]; return y; }double qiuhe2(double a[10][2],int p) {int i; double y=0; for(i=0;i<10;i++) y=y+a[i][0]*a[i][p]; return y; }double nihe(double a[10][2],double x) {double a1,b,y; a1=(10*qiuhe2(a,1)-qiuhe1(a,0)*qiuhe1(a,1))/(10*qiuhe2(a,0)-qiuhe1(a,0)*qiuhe 1(a,0)); b=(qiuhe2(a,0)*qiuhe1(a,1)-qiuhe1(a,0)*qiuhe2(a,1))/(10*qiuhe2(a,0)-qiuhe1(a, 0)*qiuhe1(a,0)); y=a1*x+b; return y; }int main() {double a[10][2]={0,68,10,,20,,30,,40,,50,, 60,,70,,80,,90,60}; double x,x
用C语言实现的曲线拟合的最小二乘法 来自淘豆网www.taodocs.com转载请标明出处.