曲线拟合 最小二乘法 C语言程序

做计算方法实验 曲线拟合 最小二乘法
里面有个求 正规方程组 要用改进的平方根法
不知道这 改进的平方根法是啥玩意

高手给个算法吧

第1个回答  推荐于2016-10-01
#include<stdio.h>
#include<math.h>

void Guass(int n,float Array[][10])
{
float s,u;
int i,j,k,a,x,y;
for(i=0;i<n-1;i++)
{
s=Array[i][i];
k=i;
for(a=i+1;a<n;a++)
{
if(fabs(s) < fabs(Array[a][i]))
{
s=Array[a][i];
k=a;
}
}
if(k!=i)
{
for(j=i;j<n+1;j++)
{
u=Array[i][j];Array[i][j]=Array[k][j];Array[k][j]=u;
}
}
for(x=i+1;x<n;x++)
{
u=Array[x][i]/s;
for(y=i;y<n+1;y++)
{
Array[x][y]=Array[x][y]-u*Array[i][y];
}
}
}
for(x=n-1;x>=0;x--)
{
s=0;
for(y=x+1;y<n;y++)
s=s+Array[x][y]*Array[y][n];
Array[x][n]=(Array[x][n]-s)/(Array[x][x]);//得到结果
}
for(i=0;i<n;i++)printf("%f ",Array[i][n]);printf("\n");
}

int main()
{
int n,i,j;
float Array[10][10];
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n+1;j++)
scanf("%f",&Array[i][j]);
}
Guass(n,Array);
return 0;
}本回答被提问者采纳
第2个回答  2007-05-21
去翻一下,计算方法或者数值分析的书吧。有公式,你按那公式求就可以了。

一楼用的是列主元消去法(跟高斯消去法差不多,就多了一个选主元(绝对值最大))

对于解AX=b,平方根法要求A是对称且正定矩阵
由于平方根法里面要计算根号,计算量就比较大,而且工程中的A不一定都是正定的。所以在工程中采用改进的平方根法(它解出来的解与真解有一点误差,但是相当相近),也就是说A只要对称就行了。

最小二乘法c程序(个曲线拟合的问题,高手请指点)要求x是二次的!!)
void main(){ double X[21] = {0.00,0.056,0.112,0.168,0.224,0.280,0.336,0.392,0.448,0.504,0.560, 0.616,0.672,0.728,0.784,0.84,0.896,0.952,0.1008,0.1064,1.12} ;double Y[21] = {0.00,1.66,3.31,4.96,6.6,8.22,9.82,11.4,12.94,14.43,15...

求C或C++语言编写的用最小二乘法进行曲线拟合
是不是想写成为y=at+bt^2+ct^3 但是实际拟合出来的表达式为y=a[3]+a[2]t+a[1]t^2+a[0]t^3会有个常数项的。简单的讲,所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通过调整该函数中若干待定系数f(λ1, λ2,…,λ3), 使得该函数与已知点集的差别(最小二乘意义)最...

VC++的MFC实现的最小二乘法曲线拟合?
double *x_in,\/\/拟合前数据点X轴坐标数组 double *y_in,\/\/拟合前数据点Y轴坐标数组 unsigned long num_out,\/\/拟合后输出数据点组数 unsigned int nSimulateNum,\/\/拟合方式(可选值1-4次曲线)\/***输出***\/ double *factor\/\/factor(长度固定为5)){ if (0 < num_out){ double dbfactor[...

最小二乘法的c语言程序怎么编呀
void convert(float argu[][T+2],int n)

基于最小二乘法的多项式曲线拟合:从原理到c++实现
首先,介绍最小二乘法原理以及多项式拟合方法的两种实现方式:代数方式和矩阵方式。代数方式涉及求解多项式系数的公式推导,矩阵方式利用矩阵运算简化求解过程。接着,基于OpenCV库,以C++语言编写代码实现这两种方法。最后,通过一个完整的示例展示如何通过离散点集拟合出一条多项式曲线。代数方式求解过程中,首先...

求一个C++拟合曲线的程序
最小二乘法线性拟合:y = -1.6e-19 x + 3.5e-17 二次拟合 y = 4.1e-21 x^2 - 1.9e-18 x + 2.2e-16 最小二乘法线性拟合的解参数:w=(x'x)^(-1)x'y

最小二乘法求出曲线拟合公式是什么?
最小二乘法求出直线拟合公式:y=a+bx,其中,y是因变量,x是自变量,a和b是拟合线的参数。一、最小二乘法 最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差...

关于VC的最小二乘法曲线拟合算法问题
给你2个作参考: 第一个:\/\/最小二乘法曲线拟合 typedef CArray<double,double>CDoubleArray; BOOL CalculateCurveParameter(CDoubleArray *X,CDoubleArray *Y,long M,long N,CDoubleArray *A) { \/\/X,Y -- X,Y两轴的坐标 \/\/M -- 结果变量组数 \/\/N -- 采样数目 \/\/A -- 结果参数 register long ...

C++给定曲线方程,如何进行拟合(最小二乘法)
根据公式,计算离差平方和 分别对 k和d求导,令二者等于0,得到k和d的值 3. 如果是用程序实现,可以参照运筹学中的极值问题求解

曲线拟合都有几种方法?
曲线拟合一般方法包括:1、用解析表达式逼近离散数据;2、最小二乘法。相关概念:曲线拟合:实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用...

相似回答