1楼:匿名用户
大四?《计算数学》,《数值分析>上有....
http://tieba.baidu.
***/f?ct=&tn=&rn=&pn=&lm=&sc=&kw=%be%f2%b0%ae%c1%aa%d0%c4%c9%e7&rs2=0&myselectvalue=1&word=%be%f2%b0%ae%c1%aa%d0%c4%c9%e7&tb=on
用最小二乘法求一次和二次拟合多项式的程序流程图
2楼:
要体现二乘原理直接用现函数解决
这是纯面向对象编程语言,拥有基于原型对象的模型。它体积不大,可以在小型便携式虚拟机上运行。
急~~~~~~!!!求解!用c语言编写最小二乘法求数据的拟合曲线~并做出图显示拟合效果!高分悬赏!
3楼:匿名用户
#include
#include
#include
#include
#define n 5//n个点
#define t 3 //t次拟合
#define w 1//权函数
#define precision 0.00001float pow_n(float a,int n)for(t=0;t=0;i--)
root[i]=temp/argu[i][i];}}void get_y(float trans_a[n],float x_y[2],float y,int n)
{int i,j;
float temp;
for(i=0;i的%d次拟合的多项式系数为:\n",n,t);
for(i=0;i
2007-4-19 19:23:57
一级(初级)
user1
10040389872
5478010
1526752
jiangxc2004
02007-4-19 19:26:11
一级(初级)
user1
10040390406
5478010
1526752
jiangxc2004
0
这样就可以直接调用process()函数了!
二次拟合的话就把宏 t 成2;
拟合点的数目 n 也可以修改!
也可以去到注释的部分进行返回值的调用!
4楼:匿名用户
#include
#include
void guass(int n,float array[10]){float s,u;
int i,j,k,a,x,y;
for(i=0;i!=i)
{for(j=i;j=0;x--)
{s=0;
for(y=x+1;y后我会帮你制作
曲线拟合 最小二乘法 c语言程序
5楼:匿名用户
去翻一下,计算方法或者数值分析的书吧。有公式,你按那公式求就可以了。
一楼用的是列主元消去法(跟高斯消去法差不多,就多了一个选主元(绝对值最大))
对于解ax=b,平方根法要求a是对称且正定矩阵由于平方根法里面要计算根号,计算量就比较大,而且工程中的a不一定都是正定的。所以在工程中采用改进的平方根法(它解出来的解与真解有一点误差,但是相当相近),也就是说a只要对称就行了。
6楼:匿名用户
#include
#include
void guass(int n,float array[10])for(i=0;i }int main() guass(n,array); return 0;} 最小二乘法三次多项式曲线拟合 算法 c++ 实现,该怎么处理 7楼:匿名用户 /****************************************** //参考《常用算法程序集(c语言描述第三版)》 //最小二乘法 //x[n]y[n]已知输入 //n输入点个数 //a[m]返回m-1次拟合多项式的m个系数//m拟合多项式的项数,即拟合多项式的最高次为m-1//dt[3]dt[0]返回拟合多项式与各数据点误差的平方和,dt[1]返回拟合多项式与各数据点误差的绝对值之和dt[2]返回拟合多项式与各数据点误差的绝对值的最大值////拟合多项式的输出 //y(x)=a0+a1(x-x)+a2(x-x)^2+……am(x-x)^m //其中x为已知点x的平均值 ******************************************/ #include"math.h" voidpir1(x,y,n,a,m,dt)intn,m; doublex,y,a,dt; c=c/d1;p=p/d1; a[0]=c*b[0]; if(m>1) c=c/d2;p=g/d2;q=d2/d1; d1=d2; a[1]=c*t[1];a[0]=c*t[0]+a[0]; }for(j=2;j<=m-1;j++)c=c/d2;p=g/d2;q=d2/d1; d1=d2; a[j]=c*s[j];t[j]=s[j]; for(k=j-1;k>=0;k--)}dt[0]=0.0;dt[1]=0.0;dt[2]=0.0; for(i=0;i<=n-1;i++)return;} 帮我求下用最小二乘法拟合一个多项式 8楼:匿名用户 warnings during fitting: equation is badly conditioned. remove repeated data points or try centering and scaling. 这是因为你的数据点不好。 此外,你用的拟合函数的阶数很高……如果换成二阶就可以使用polyfit()了。 下面是用curve fitting tool的拟合结果: linear model poly5: f(x) = p1*x^5 + p2*x^4 + p3*x^3 + p4*x^2 + p5*x + p6 coefficients (with 95% confidence bounds): p1 = 1.739e-14 (2.242e-15, 3.255e-14) p2 = -1.951e-10 (-3.468e-10, -4.337e-11) p3 = 8.54e-07 (2.646e-07, 1.443e-06) p4 = -0.001825 (-0.002932, -0.0007169) p5 = 1.88 (0.8761, 2.884) p6 = -431.8 (-781.9, -81.76) goodness of fit: sse: 1.349 r-square: 0.9991 adjusted r-square: 0.9975 rmse: 0.6706 求c或c++语言编写的用最小二乘法进行曲线拟合 9楼:匿名用户 你的近似解析表达式为y=at+bt^2+ct^2 是不是想写成为y=at+bt^2+ct^3 但是实际拟合出来的表达式为y=a[3]+a[2]t+a[1]t^2+a[0]t^3会有个常数项的。 简单的讲,所谓拟合是指已知某函数的若干离散函数值,通过调整该函数中若干待定系数f(λ1, λ2,…,λ3), 使得该函数与已知点集的差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合或者线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表达式也可以是分段函数,这种情况下叫作样条拟合。 曲线拟合: #include #include #include #include **ooth(double *x,double *y,double *a,int n,int m,double *dt1,double *dt2,double *dt3); void main() y = (double *)calloc(n,sizeof(double)); if(y == null) a = (double *)calloc(n,sizeof(double)); if(a == null) for(i=1;i<=n;i++) y[0]=0; y[1]=1.27; y[2]=2.16; y[3]=2.86; y[4]=3.44; y[5]=3.87; y[6]=4.15; y[7]=4.37; y[8]=4.51; y[9]=4.58; y[10]=4.02; y[11]=4.64; /*x[i-1]点对应的y值是拟合已知值*/ **ooth(x,y,a,n,m,&dt1,&dt2,&dt3); /*调用拟合函数*/ for(i=1;i<=m;i++) printf("a[%d] = %.10f\n",(i-1),a[i-1]); printf("拟合多项式与数据点偏差的平方和为:\n"); printf("%.10e\n",dt1); printf("拟合多项式与数据点偏差的绝对值之和为:\n"); printf("%.10e\n",dt2); printf("拟合多项式与数据点偏差的绝对值最大值为:\n"); printf("%.10e\n",dt3); free(x); /*释放存储空间*/ free(y); /*释放存储空间*/ free(a); /*释放存储空间*/ } **ooth(double *x,double *y,double *a,int n,int m,double *dt1,double *dt2,double *dt3)//(x,y,a,n,m,dt1,dt2,dt3 ) //double *x; /*实型一维数组,输入参数,存放节点的xi值*/ //double *y; /*实型一维数组,输入参数,存放节点的yi值*/ //double *a; /*双精度实型一维数组,长度为m。返回m一1次拟合多项式的m个系数*/ //int n; /*整型变量,输入参数,给定数据点的个数*/ //int m; /*整型变量,输入参数,拟合多项式的项数*/ //double *dt1; /*实型变量,输出参数,拟合多项式与数据点偏差的平方和*/ //double *dt2; /*实型变量,输出参数,拟合多项式与数据点偏差的绝对值之和*/ //double *dt3; /*实型变量,输出参数,拟合多项式与数据点偏差的绝对值最大值*/ t = (double *)calloc(n,sizeof(double)); if(t == null) b = (double *)calloc(n,sizeof(double)); if(b == null) z = 0; for(i=1;i<=n;i++) z=z+x[i-1]/n; /*z为各个x的平均值*/ b[0]=1; d1=n; p=0; c=0; for(i=1;i<=n;i++) c=c/d1; p=p/d1; a[0]=c*b[0]; if(m>1) c=c/d2; p=g/d2; q=d2/d1; d1=d2; a[1]=c*t[1]; a[0]=c*t[0]+a[0]; } for(j=3;j<=m;j++) c=c/d2; p=g/d2; q=d2/d1; d1=d2; a[j-1]=c*s[j-1]; t[j-1]=s[j-1]; for(k=j-1;k>=1;k--) } *dt1=0; *dt2=0; *dt3=0; for(i=1;i<=n;i++) /*释放存储空间*/ free(s); free(t); free(b); return(1);} 1楼 风儿lamp沙儿 最小二乘法拟合程序如下 x 1 8 y 2 3 6 7 5 3 2 p polyfit x y 2 y1 polyval p x plot x y1 matlab用最小二乘法直线拟合此题 要写出完整的程序过程,急用,求高手!!! 2楼 匿名用户 写在前面 喵。。也就我这么好心...matlab编程:最小二乘法拟合多项式,题目如图