欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言如何進行函數(shù)擬合,怎么進行函數(shù)擬合

c語言怎么把數(shù)據擬合成函數(shù)并畫線

1、通過一些點擬合出一條直線。

雨山ssl適用于網站、小程序/APP、API接口等需要進行數(shù)據傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

2、參數(shù):pt_input指向傳入的點的指針。

3、ptNumbers傳入的點數(shù)量。

4、k指向擬合直線參數(shù)k的指針。

5、b指向擬合直線參數(shù)b的指針。

想用C語言編寫多項式擬合的程序

#include stdio.h

#include conio.h

#include stdlib.h

#include math.h

main()

{

int i,j,m,n=7,poly_n=2;

double x[7]={1,2,3,4,6,7,8},y[7]={2,3,6,7,5,3,2};

double a[3];

void polyfit(int n,double *x,double *y,int poly_n,double a[]);

system("cls");

polyfit(n,x,y,poly_n,a);

for (i=0;ipoly_n+1;i++)/*這里是升序排列,Matlab是降序排列*/

printf("a[%d]=%g\n",i,a[i]);

getch();

}

/*==================polyfit(n,x,y,poly_n,a)===================*/

/*=======擬合y=a0+a1*x+a2*x^2+……+apoly_n*x^poly_n========*/

/*=====n是數(shù)據個數(shù) xy是數(shù)據值 poly_n是多項式的項數(shù)======*/

/*===返回a0,a1,a2,……a[poly_n],系數(shù)比項數(shù)多一(常數(shù)項)=====*/

void polyfit(int n,double x[],double y[],int poly_n,double a[])

{

int i,j;

double *tempx,*tempy,*sumxx,*sumxy,*ata;

void gauss_solve(int n,double A[],double x[],double b[]);

tempx=calloc(n,sizeof(double));

sumxx=calloc(poly_n*2+1,sizeof(double));

tempy=calloc(n,sizeof(double));

sumxy=calloc(poly_n+1,sizeof(double));

ata=calloc((poly_n+1)*(poly_n+1),sizeof(double));

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

{

tempx[i]=1;

tempy[i]=y[i];

}

for (i=0;i2*poly_n+1;i++)

for (sumxx[i]=0,j=0;jn;j++)

{

sumxx[i]+=tempx[j];

tempx[j]*=x[j];

}

for (i=0;ipoly_n+1;i++)

for (sumxy[i]=0,j=0;jn;j++)

{

sumxy[i]+=tempy[j];

tempy[j]*=x[j];

}

for (i=0;ipoly_n+1;i++)

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

ata[i*(poly_n+1)+j]=sumxx[i+j];

gauss_solve(poly_n+1,ata,a,sumxy);

free(tempx);

free(sumxx);

free(tempy);

free(sumxy);

free(ata);

}

void gauss_solve(int n,double A[],double x[],double b[])

{

int i,j,k,r;

double max;

for (k=0;kn-1;k++)

{

max=fabs(A[k*n+k]); /*find maxmum*/

r=k;

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

if (maxfabs(A[i*n+i]))

{

max=fabs(A[i*n+i]);

r=i;

}

if (r!=k)

for (i=0;in;i++) /*change array:A[k]A[r] */

{

max=A[k*n+i];

A[k*n+i]=A[r*n+i];

A[r*n+i]=max;

}

max=b[k]; /*change array:b[k]b[r] */

b[k]=b[r];

b[r]=max;

for (i=k+1;in;i++)

{

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

A[i*n+j]-=A[i*n+k]*A[k*n+j]/A[k*n+k];

b[i]-=A[i*n+k]*b[k]/A[k*n+k];

}

}

c語言如何對若干離散點進行m階多項式擬合

m階多項式擬合,是算法問題,不是計算機語言問題。你先要有你的具體計算策略和方法,數(shù)值計算時,用計算機語言寫出程序,算出結果。用 c 語言 或 fortran 語言 或別的語言,大同小異,沒有原則差別。

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

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

a1,a2,...,am 是 m 個待定系數(shù)

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

若你有 n 個點,就得到 n 個 方程式。若 nm 有無窮解,若 n=m 有一解。

通常 離散點的個數(shù) 遠超過 方程階數(shù),也就是方程個數(shù)超出要解的未知數(shù)的個數(shù),nm,這時,

通常 用 最小二乘法 求解 這個線性方程組。也就是所謂的擬合。

最小二乘法 求解 這個線性方程組 的程序 網上(這里不敢寫,寫了,你就看不到我的貼子了)可以找到,自己寫也不復雜。

曲線擬合文章估計百度文庫里也有。

當前題目:c語言如何進行函數(shù)擬合,怎么進行函數(shù)擬合
文章轉載:http://chinadenli.net/article22/dsgdicc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPTApp開發(fā)網站制作響應式網站自適應網站網站收錄

廣告

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

成都網頁設計公司