多次拟合函数c语言 c语言多项式拟合

C语言曲线拟合原理?

虽然我知道什么是曲线拟合,怎么做,但是我不清楚你问题的具体内容,

创新互联是一家专注于网站设计制作、网站制作与策划设计,市北网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:市北等地区。市北做网站价格咨询:028-86922220

从chuaike24的回答

“请高手 说实话 我是菜鸟 但你的程序感觉好凌乱 好多地方可以精简说最明显的问题 power函数返回值无论怎样都返回0 ”来看,我可能是没看到你的程序,所以信息不全。

我只回答什么是曲线拟合

曲线拟合,简单来说,是指以近似的方法用一条曲线逼近一组数据点。

逼近的方法最常用的事最小二乘法,当然也有其他方法。

逼近的曲线可以是直线,也可以是多项式曲线,二次,三次,多次,也可以是分段多项式曲线,也可以是B样条曲线。在这里,如果不需要深入研究,你只要把B样条曲线理解为一种近似于分段多项式曲线即可。

你问的不多,这些对你的回答已经足够,需要深入了解再问

c语言曲线拟合问题

很简单 问题已经转化成 从文件读数据 数据类型转化  赋值到数组  这三步

#include "stdio.h"

#include stdlib.h

main()

{

int x[3] = {0}; //默认文件存了三个数据

FILE *fp1;//定义文件流指针,用于打开读取的文件

char text[1024];//定义一个字符串数组,用于存储读取的字符

fp1 = fopen("d:\\forecast1.txt","r");//只读方式打开文件a.txt

int i=0;

while(fgets(text,1024,fp1)!=NULL)//逐行读取fp1所指向文件中的内容到text中

{

int tmp = atoi(text);//输出到屏幕

x[i++] = tmp;

}

fclose(fp1);//关闭文件a.txt,有打开就要有关闭

}

y[i] 同理

c语言如何对若干离散点进行m阶多项式拟合

m阶多项式拟合,是算法问题,不是计算机语言问题。你先要有你的具体计算策略和方法,数值计算时,用计算机语言写出程序,算出结果。用 c 语言 或 fortran 语言 或别的语言,大同小异,没有原则差别。

你先要定出你的方程形式,例如

y = a1*x^m+a2*x^(m-1)+...am

a1,a2,...,am 是 m 个待定系数

把你的离散点[xi,yi] 代入方程,你可以得到 线性方程式 yi = a1*xi^m+a2*xi^(m-1)+...am

若你有 n 个点,就得到 n 个 方程式。若 nm 有无穷解,若 n=m 有一解。

通常 离散点的个数 远超过 方程阶数,也就是方程个数超出要解的未知数的个数,nm,这时,

通常 用 最小二乘法 求解 这个线性方程组。也就是所谓的拟合。

最小二乘法 求解 这个线性方程组 的程序 网上(这里不敢写,写了,你就看不到我的贴子了)可以找到,自己写也不复杂。

曲线拟合文章估计百度文库里也有。

急~~~~~~!!!求解!用C语言编写最小二乘法求数据的拟合曲线~并做出图显示拟合效果!高分悬赏!

#includestdio.h

#includemath.h

void Guass(int n,float Array[][10])

{

float s,u;

int i,j,k,a,x,y;

for(i=0;in-1;i++)

{

s=Array[i][i];

k=i;

for(a=i+1;an;a++)

{

if(fabs(s) fabs(Array[a][i]))

{

s=Array[a][i];

k=a;

}

}

if(k!=i)

{

for(j=i;jn+1;j++)

{

u=Array[i][j];Array[i][j]=Array[k][j];Array[k][j]=u;

}

}

for(x=i+1;xn;x++)

{

u=Array[x][i]/s;

for(y=i;yn+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;yn;y++)

s=s+Array[x][y]*Array[y][n];

Array[x][n]=(Array[x][n]-s)/(Array[x][x]);//得到结果

}

for(i=0;in;i++)printf("%f ",Array[i][n]);printf("\n");

}

int main()

{

int n,i,j;

float Array[10][10];

scanf("%d",n);

for(i=0;in;i++)

{

for(j=0;jn+1;j++)

scanf("%f",Array[i][j]);

}

Guass(n,Array);

return 0;

}

你的串号我已经记下,采纳后我会帮你制作


当前文章:多次拟合函数c语言 c语言多项式拟合
链接分享:http://pwwzsj.com/article/hjpode.html