700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 曲线拟合最小二乘法对数c语言实现 数值计算_第6章曲线拟合的最小二乘法

曲线拟合最小二乘法对数c语言实现 数值计算_第6章曲线拟合的最小二乘法

时间:2021-02-27 08:26:23

相关推荐

曲线拟合最小二乘法对数c语言实现 数值计算_第6章曲线拟合的最小二乘法

《数值计算_第6章曲线拟合的最小二乘法》由会员分享,可在线阅读,更多相关《数值计算_第6章曲线拟合的最小二乘法(23页珍藏版)》请在人人文库网上搜索。

1、第6章 曲线拟合的最小二乘法6.1拟合曲线通过观察或测量得到一组离散数据序列-,当所得数据比较准确时,可构造插值函数厂:门逼近客观存在的函数 厂Fl罔,构造的原则是要求插值函数通过这些 数据点,即一;.一_二。此时,序列- _: r.J.与儿是相等的。如果数据序列(心必)厂L曲,含有不可避免的误差(或称 噪音”,如图6.1 所示;如果数据序列无法同时满足某特定函数,如图6.2所示,那么,只能要求所做逼近函数厂丫最优地靠近样点,即向量 - # define MAX_N 25 typedef struct tagPOINT/ (x_i, y_i)的最大维数点的结构 double x ;double。

2、 y; POINT ;int main ( )int m ;int i ;POINT points MAX_N ;static double u11 , u12, u21, u22, c1,c2;double a, b,tmp;printf ( n“Input n value : ”;) / 输入点数 mscanf ( “% ,d”&m) ;if (m MAX_N )printf (“The input n is larger then MAX_,N please redefine the MAX_N. n”;)return 1 ;if (m v = 0) printf (“Please in。

3、put a number between 1 and % dn.”, MAX_N ) ;return 1 ; printf (“ Now in put t(e_i, y_i) , i=0 ,,% d: n”,m 1);/ 输入点for (i=0 ; iv = m; i+)scanf ( “% ,lf ”&tmp) ;printf i.x=tmp ;scanf (“ l, ”tmp);printf i.y=tmp ;/ scanf (“%lf %lf, & printf i.x , & printf i.y);for (i=0 ; i v = n; i+)/ 列出方程 U(a , b)T = c。

4、u21+ = points i.x ;u22+ = points i.x I points i.x ;c1+ = points i.y ;c2+ = points i.y 1 points i.y ;u12 = u21;u11 = m;/求解a = ( cl 1 u22 - c2 1 u12) / (u111 u22- u12 u21);b = ( cl *u21 c2u11)/ (u211 u12 u22 u11);printf(“Solve)(x) = %f +%f x n” a, b);/ 输出return 0; / End of File计算实例用线性函数拟合下列数据(例 6.1 )。。

5、13151621222325293031361110111212131312141617404255606264707210013013142214212124172334程序输入输出in put m value : 21Now in put the (x_i , y_i) , i=0 ,,20:13 11 15 10 16 11 21 12 22 12 23 13 25 13 29 1230 14 31 16 36 17 40 13 42 14 55 22 60 14 62 2164 21 70 24 72 17 100 23 130 34Solve: p(x) = 8.208408 + 0。

6、.179522 x程序6.2用形如 P=/的函数拟合定数据二-1宀一。算法描述输入:值,及-L:# include v math.h# define MAX_N 25/ (x_i , y_i)的最大维数double x ;double y ; POINT ;int main ( ) int m ;int i ;POINT points MAX_N ;static double u11, u12,u21,u22,c1,c2;double A , B ,tmp ;printf ( n“Input n value : ”;)/ 输入点数 mscanf ( “% ,d”&m) ;if (m MAX_N。

7、 )printf (“The input n is larger then MAX_,N please redefine the MAX_N. n”;)return 1 ;if (m v = 0)printf (“Please input a number between 1 and % dn.”, MAX_N ) ;return 1 ;printf (“ Now in put t(e_i, y_i) , i=0 ,,% d: n”,m 1);/ 输入点for (i=0 ; i v = m ; i+) seanf (“ % l, &tmp);printf i.x = tmp ;scanf (“。

8、 l, ”tmp);printf i.y = tmp ;/ scanf (“%lf %lf, & printf i.x , & printf i.y);for (i=0 ; i v = n; i+)/ 列出方程 X(a , b)T = Y其中Y为对原方程取对数后的数据u21+ = points i.x ;u22+ = points i.x * points i.x ;c1+ = log (points i.)y ;c2+ = points i.y 丨 log ( points i.y);u12 = u21;u11 = m;/求解a = ( cl 1 u22 - c2 u12) / (u111 。

9、u22- u12 u21);b = ( cl u21 - c2*u11) / (u21 * u12- u22u11);printf(“ Solve)(x) = % lfexp (%lf x) n, exp(A) , B);/输出 /return 0;End of File计算实例求一个形如|1;的经验函数公式,使它能够和下列数据相拟合(例6.5)。1234567815.320.527.436.649.165.687.8117.6程序输入输出in put m value : 8Now in put the (x_i, y_i), i=0, ,7:1 15.3 2 20.5 3 27.4 4 36.6 5 49.1 6 65.6 7 87.8 8 117.6Solve: p(x) = 11.437069exp(0.291215x。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。