博文

用c++写成的最小二乘法的源代码(2009-03-30 20:56:00)

摘要:  #include <stdio.h>#include <conio.h>#include <math.h>#include <process.h>#define N 5//N个点#define T 3 //T次拟合#define W 1//权函数#define PRECISION 0.00001float pow_n(float a,int n){int i;if(n==0)return(1);float res=a;for(i=1;i<n;i++){res*=a;}return(res);}void mutiple(float a[][N],float b[][T+1],float c[][T+1]){float res=0;int i,j,k;for(i=0;i<T+1;i++)for(j=0;j<T+1;j++){res=0;for(k=0;k<N;k++){res+=a[i][k]*b[k][j];c[i][j]=res;}}}void matrix_trans(float a[][T+1],float b[][N]){int i,j;for(i=0;i<N;i++){for(j=0;j<T+1;j++){b[j][i]=a[i][j];}}}void init(float x_y[][2],int n){int i;printf("请输入%d个已知点:\n",N);for(i=0;i<n;i++){printf("(x%d y%d):",i,i);scanf("%f %f",&x_y[i][0],&x_y[i][1]);}}void get_A(float matrix_A[][T+1],float x_y[][2],int n){int i,j;for(i=0;i<N;i++){for(j=0;j<T+1;j++){matrix_A[i][j]=W*pow_n(x_y[i][0],j);}}}void print_array(float array[][T+1],int n){int i,j;for(i=0;i<n;i++){for(j=0;j<T+1;j++){printf("%-g",array[i][......

阅读全文(6408) | 评论:1

用c++写成的最小二乘法的源代码(2009-03-30 20:55:00)

摘要:  #include <stdio.h>#include <conio.h>#include <math.h>#include <process.h>#define N 5//N个点#define T 3 //T次拟合#define W 1//权函数#define PRECISION 0.00001float pow_n(float a,int n){int i;if(n==0)return(1);float res=a;for(i=1;i<n;i++){res*=a;}return(res);}void mutiple(float a[][N],float b[][T+1],float c[][T+1]){float res=0;int i,j,k;for(i=0;i<T+1;i++)for(j=0;j<T+1;j++){res=0;for(k=0;k<N;k++){res+=a[i][k]*b[k][j];c[i][j]=res;}}}void matrix_trans(float a[][T+1],float b[][N]){int i,j;for(i=0;i<N;i++){for(j=0;j<T+1;j++){b[j][i]=a[i][j];}}}void init(float x_y[][2],int n){int i;printf("请输入%d个已知点:\n",N);for(i=0;i<n;i++){printf("(x%d y%d):",i,i);scanf("%f %f",&x_y[i][0],&x_y[i][1]);}}void get_A(float matrix_A[][T+1],float x_y[][2],int n){int i,j;for(i=0;i<N;i++){for(j=0;j<T+1;j++){matrix_A[i][j]=W*pow_n(x_y[i][0],j);}}}void print_array(float array[][T+1],int n){int i,j;for(i=0;i<n;i++){for(j=0;j<T+1;j++){printf("%-g",array[i][......

阅读全文(755) | 评论:0