免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

二次擬合函數(shù)c語(yǔ)言 二次函數(shù)擬合的參數(shù)如何求

求一個(gè)n階多項(xiàng)式二乘擬合的算法,最好是C語(yǔ)言

//函數(shù)功能有,求多項(xiàng)式的和,鬧轎差,積

創(chuàng)新互聯(lián)于2013年創(chuàng)立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元沁陽(yáng)做網(wǎng)站,已為上家服務(wù),為沁陽(yáng)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):18980820575

/*

輸入函數(shù)的輸入操作:1,先輸入多項(xiàng)式的成員的個(gè)數(shù)n:(如 x+1,的n=2);

2,輸入多項(xiàng)式(x+1),格式如下:

coef expn

1 1

1 0

*/

#include stdio.h

#include stdlib.h

typedef struct {

float coef;

int expn;

}Elemtype;

typedef struct node{

Elemtype data;

node *next;

}LNode,*Linklist;

Linklist creat(int n); //創(chuàng)建n各節(jié)點(diǎn),并初始化

void print(Linklist head);//輸出

Linklist Add(Linklist f1,Linklist f2); //f1+f2

Linklist sub(Linklist f1,Linklist f2); //f1-f2

Linklist mult(Linklist f1,Linklist f2); //f1*f2

Linklist turn(Linklist head); //排序,合并同類(lèi)項(xiàng)

int len(Linklist head); //求多項(xiàng)式的長(zhǎng)度

void main()

{

Linklist f1,f2,f4,f3;

printf(" Polyn + - *\n");

printf("Input polyn \nPolyn f1 input data n:");

int n;scanf("%d",n);

f1=creat(n);

printf("Polyn f2 input data n:");

scanf("%d",n);

f2=creat(n);

printf("\李敏nOUT Polyn;\n");

printf("polyn1:"); print(f1);

printf("polyn2:"); print(f2);

f3=Add(f1,f2); printf("polyn Add f1+f2:"); print(f3);

f4=sub(f1,f2); printf("polyn sub f1-f2"); print(f4);

printf("polyn mult f1*f2:"); print(mult(f1,f2));

}

Linklist turn(Linklist head)

{

Linklist p, q;

if(!head-next) return head;

Elemtype temp;

for (q=head;q-next;q=q-next)

{

for (p=q-next;p;p=p-next)

{

if(p-data.expnq-data.expn)

{

temp=p-data;p-data=q-data;q-data=temp;

}

else if(p-data.expn==q-data.expn) {

q-液擾肆data.coef=q-data.coef+p-data.coef;p=p-next;

q-next=p; if(!p||!p-next) break;

}

}

if((q==NULL)||(q-next==NULL)) break;

}

return head;

}

Linklist creat(int n)

{

Linklist head,p,pf;

printf("input %d data :\n coef expn\n",n);

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

{

pf=(Linklist)malloc(sizeof(LNode));

if(i==0)

head=p=pf;

printf("NO %d : ",i+1);

scanf("%f%d",pf-data.coef,pf-data.expn);

if(pf-data.coef) {p-next=pf;

p=p-next;}

}

p-next=NULL;

head=turn(head);

return head;

}

void print(Linklist head)

{

Linklist p;

p=head;

printf("\n coef expn\n");

while(p){

printf(" %6.2f %4d\n",p-data.coef,p-data.expn);

p=p-next;

}

printf("\n");

}

int len(Linklist head)

{

Linklist p;

p=head;

int n;

for(n=0;p;p=p-next,n++);

return n;

}

Linklist Add(Linklist f1,Linklist f2) //f1+f2

{

Linklist p1,p2,f;

Linklist p,pf;

p1=f1; p2=f2;

p=f=(Linklist)malloc(sizeof(LNode));f-next=NULL;

while (p1||p2)

{

pf=(Linklist)malloc(sizeof(LNode));

if(p1(p2==NULL))

{

pf-data=p1-data;

p1=p1-next;

}

else if(p2(p1==NULL)){

pf-data=p2-data;

p2=p2-next;

}

else if(p1-data.expn-p2-data.expn==0)

{

pf-data.coef=p1-data.coef+p2-data.coef;

pf-data.expn=p1-data.expn;

p1=p1-next;p2=p2-next;

}

else if(p1-data.expnp2-data.expn)

{

pf-data=p1-data;

p1=p1-next;

}

else if(p1-data.expnp2-data.expn){

pf-data=p2-data;

p2=p2-next;

}

if(pf-data.coef) //如果系數(shù)coef==0 則刪除該項(xiàng)成員

{p-next=pf;

p=p-next;}

}

p-next=NULL;f=f-next; f=turn(f);

return f;

}

Linklist sub(Linklist f1,Linklist f2) //f1-f2

{

Linklist p1,p2,f;

Linklist p,pf;

p1=f1; p2=f2;

p=f=(Linklist)malloc(sizeof(LNode));f-next=NULL;

while (p1||p2)

{

pf=(Linklist)malloc(sizeof(LNode));

if(p1(p2==NULL))

{

pf-data=p1-data;

p1=p1-next;

}

else if(p2(p1==NULL)){

pf-data.expn=p2-data.expn;

pf-data.coef=-p2-data.coef;

p2=p2-next;

}

else if(p1-data.expn-p2-data.expn==0)

{

pf-data.coef=p1-data.coef-p2-data.coef;

pf-data.expn=p1-data.expn;

p1=p1-next;p2=p2-next;

}

else if(p1-data.expnp2-data.expn)

{

pf-data=p1-data;

p1=p1-next;

}

else if(p1-data.expnp2-data.expn){

pf-data.expn=p2-data.expn;

pf-data.coef=-(p2-data.coef);

p2=p2-next;

}

if(pf-data.coef)

{p-next=pf;

p=p-next;}

}

p-next=NULL;f=f-next; f=turn(f);

return f;

}

Linklist mult(Linklist f1,Linklist f2) //f1*f2

{

Linklist p1,p2,f;

Linklist pf;f=NULL;

for(p1=f1;p1;p1=p1-next)

{

for(p2=f2;p2;p2=p2-next)

{

pf=(Linklist)malloc(sizeof(LNode));

pf-data.expn=p1-data.expn+p2-data.expn;

pf-data.coef=p1-data.coef*p2-data.coef;

pf-next=NULL;

f=Add(f,pf);

pf=NULL;

}

}

f=turn(f);

return f;

}

如何用c語(yǔ)言擬合二次方程y=a(x-x0)(x-x0) + b(x-x0) + c,根據(jù)多組(x,y)的值計(jì)算出參數(shù)a,b,c,x0的值?

其實(shí)很簡(jiǎn)單的。。就困空并是個(gè)汪跡搜索窮解問(wèn)題哎。。

void SOLVE(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4)

{

for(a=-10000;a10000;a++)

for(b=-10000;b10000;b++)

for(c=-10000;c10000;c++)

for(x0=-10000;x010000;x0++)

{

if(y1=a(x1-x0)(x1-x0) + b(x1-x0) + c)

if(y2=a(x2-x0)(x2-x0) + b(x2-x0) + c)

if(y3=a(x3-x0)(x3-x0) + b(x3-x0) + c)

if(y4=a(x4-x0)(x4-x0) + b(x4-x0) + c)

{

cout"a="a",""b="b","虧差"c="c",""x0="x0endl;

};

};

}

跪求c語(yǔ)言高手,編條程序用來(lái)算5個(gè)坐標(biāo)點(diǎn)的二次多項(xiàng)式擬合方程???急要,謝謝!!!

#include stdio.h

#include math.h

#include string.h

int p=4; //p為選定的擬合次數(shù)并加1,默認(rèn)值為4,輪做跡即擬合次數(shù)3

int t=5; //t為用戶(hù)輸入的數(shù)據(jù)的個(gè)數(shù)

void printa(double a[5][5])

{

int i,j;

for(j=1;j=p;j++)

{

for(i=1;i=p;i++)

{

printf("a[%d][%d]=%5.2e\t",j,i,a[j][i]);

}

printf("\n");

}

}

void printb(double b[5])

{

int i;

for(i=1;i=p;i++)

{

printf("b[%d]=%5.2e\t",i,b[i]);

}

printf("\n");

}

main()

{

int i=1,j=1, k=1, r; //在程序中為中間變量來(lái)記錄循環(huán)次數(shù)

double ss=0; // 在計(jì)算矩陣中未知參數(shù)的臨時(shí)變量

double temp,m; //中間變量

double x[6]={0,5,10,15,20,25},y[6]={0,1.0029,1.0023,1.0000,0.9990,0.9983}; //x[]為用戶(hù)輸入的橫坐標(biāo)的值

double a[5][5]; //a[ ][ ] 記錄在最小二乘算臘并法中產(chǎn)生的系數(shù)矩陣

double b[5]; //常數(shù)矩陣的元素的值

for(i=1;i=5;i++)

{

printf("x[%d]=%5.2e \t",i,x[i]);

}

printf("\n");

for(i=1;i=5;i++)

{

printf("y[%d]=%5.2e \t",i,y[i]);

}

printf("\n");

//計(jì)算系數(shù)矩陣的每個(gè)元素 a[i][j]和a[j][i]

for(j=1;j=p;j++) //p為選定的擬合次數(shù)并加1,默認(rèn)值為4,即擬合次數(shù)3

{

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

{

ss=0;

for( k=1;k=t;k++)

{ //t為用戶(hù)輸入的數(shù)據(jù)的個(gè)數(shù)

ss=ss+pow(x[k],i+j-2);

} //x[]為用戶(hù)輸入的橫坐標(biāo)的值

a[i][j] = ss; //ss為臨時(shí)變量

a[j][i]= ss;

} //a[ ][ ] 記錄在最小二乘算法中產(chǎn)生的系數(shù)矩陣

}

printa(a);

//計(jì)算常胡殲數(shù)矩陣的每個(gè)元素的值

for(i=1;i=p;i++)

{

ss=0;

for(k=1;k=t;k++)

{

ss=ss+y[k]*pow(x[k],i-1);

} //y[ ]為用戶(hù)的輸入的縱坐標(biāo)值

b[i] = ss;

}

printb(b);

//用Guass消去法解線(xiàn)性方程組

for(k=1;k=p;k++)

{

m=fabs(a[k][k]);//計(jì)算a[k][k]的絕對(duì)值

r=k;

//選主元

for(i=k;i=p;i++)

{

if( mfabs(a[i][k]))

{

m=fabs(a[i][k]);

r=i;

}

}

if(rk)

{ //交換兩行

for(j=k;j=p;j++)

{

temp=a[k][j];

a[k][j]=a[r][j];

a[r][j]=temp;

}

temp=b[k];

b[k]=b[r];

b[r]=temp;

}

//消元計(jì)算

for(j=k+1;j=p;j++)

a[k][j]=a[k][j]/a[k][k];

b[k]=b[k]/a[k][k];

for(i=1;i=p;i++)

{

if(i==k)

continue;

for(j=k+1;j=p;j++)

a[i][j]=a[i][j]-a[i][k]*a[k][j];

}

for(i=1;i=p;i++)

{

if(i==k)

continue;

b[i]=b[i]-a[i][k]*b[k];

}

}

//擬合多項(xiàng)式

printf("\nResult=");

for(i=1;i=p;i++)

{

printf("%5.2e x^%d+\t",b[i],i-1);

}

}

結(jié)果看最后:

a[1][1]=5.00e+000 a[1][2]=7.50e+001 a[1][3]=1.38e+003 a[1][4]=

2.81e+004

a[2][1]=7.50e+001 a[2][2]=1.38e+003 a[2][3]=2.81e+004 a[2][4]=

6.12e+005

a[3][1]=1.38e+003 a[3][2]=2.81e+004 a[3][3]=6.12e+005 a[3][4]=

1.38e+007

a[4][1]=2.81e+004 a[4][2]=6.12e+005 a[4][3]=1.38e+007 a[4][4]=

3.21e+008

b[1]=5.00e+000 b[2]=7.50e+001 b[3]=1.37e+003 b[4]=2.81e+004

Result=1.00e+000 x^0 4.42e-004 x^1 -5.69e-005 x^2 1.33e-006 x^3

========擬合次數(shù)2============

x[1]=5.00e+000 x[2]=1.00e+001 x[3]=1.50e+001 x[4]=2.00e+001 x[5]=2.50e+001

y[1]=1.00e+000 y[2]=1.00e+000 y[3]=1.00e+000 y[4]=9.99e-001 y[5]=9.98e-001

a[1][1]=5.00e+000 a[1][2]=7.50e+001 a[1][3]=1.38e+003

a[2][1]=7.50e+001 a[2][2]=1.38e+003 a[2][3]=2.81e+004

a[3][1]=1.38e+003 a[3][2]=2.81e+004 a[3][3]=6.12e+005

b[1]=5.00e+000 b[2]=7.50e+001 b[3]=1.37e+003

Result=1.00e+000 x^0+ -3.44e-004 x^1+ 3.14e-006 x^2+

C語(yǔ)言如何實(shí)現(xiàn)二次曲線(xiàn)擬合

首先,誰(shuí)都不能根據(jù)僅有的數(shù)據(jù)集來(lái)斷定這就是什么曲線(xiàn)。

我們只能通過(guò)對(duì)數(shù)據(jù)觀察推測(cè)可能會(huì)符合什么拍族指形式的曲線(xiàn)。

已知10個(gè)數(shù)據(jù)點(diǎn)的訓(xùn)練集,可以采用多項(xiàng)式擬合的辦法來(lái)做,但是不建議使用C語(yǔ)言來(lái)實(shí)現(xiàn)。

這種數(shù)學(xué)問(wèn)題用matlab很容易就可以解決,c語(yǔ)言寫(xiě)要麻襲配煩的多的多。比如你采用最小二乘法的話(huà),

你需要自己用c語(yǔ)言寫(xiě)很多矩穗配陣運(yùn)算。

分享題目:二次擬合函數(shù)c語(yǔ)言 二次函數(shù)擬合的參數(shù)如何求
本文網(wǎng)址:http://m.newbst.com/article0/ddpehio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站做網(wǎng)站網(wǎng)站排名網(wǎng)站維護(hù)建站公司網(wǎng)站營(yíng)銷(xiāo)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)