-
大小: 374KB文件類型: .rar金幣: 2下載: 1 次發(fā)布日期: 2021-11-25
- 語言: C/C++
- 標(biāo)簽:
資源簡介
數(shù)值計算方法中的幾個主要算法編程實現(xiàn),內(nèi)有程序(完全可運)和實驗報告(不明白的可以參照),包括M次多項式曲線擬合、復(fù)合辛普森、龍貝格求積分算法、經(jīng)典四階龍格庫塔法、泰勒公式、三次樣條插值、用牛頓法解非線性方程組等十一個算法,希望對大家能夠有所幫助。

代碼片段和文件信息
#include?
#include?
#include?
#define?M?10
void?polyfit(int?ndouble?*xdouble?*yint?poly_ndouble?a[]);
main()
{
int?ijnpoly_n=2;
double?x[M]y[M];
double?a[3];
printf(“Input?n?of?xy:“);
scanf(“%d“&n);
printf(“Input?x:“);
for(i=0;i scanf(“%d“&x[i]);
printf(“Input?y:“);
for(i=0;i scanf(“%d“&y[i]);
system(“cls“);
polyfit(nxypoly_na);
for?(i=0;i ?????printf(“a[%d]=%g\n“ia[i]);
getch();
}
/*==================polyfit(nxypoly_na)===================*/
/*=======擬合y=a0+a1*x+a2*x^2+……+apoly_n*x^poly_n========*/
/*=====n是數(shù)據(jù)個數(shù)?xy是數(shù)據(jù)值?poly_n是多項式的項數(shù)======*/
/*===返回a0a1a2……a[poly_n],系數(shù)比項數(shù)多一(常數(shù)項)=====*/
void?polyfit(int?ndouble?x[]double?y[]int?poly_ndouble?a[])
{
int?ij;
double?*tempx*tempy*sumxx*sumxy*ata;
void?gauss_solve(int?ndouble?A[]double?x[]double?b[]);
tempx=calloc(nsizeof(double));
sumxx=calloc(poly_n*2+1sizeof(double));
tempy=calloc(nsizeof(double));
sumxy=calloc(poly_n+1sizeof(double));
ata=calloc((poly_n+1)*(poly_n+1)sizeof(double));
for?(i=0;i ?????{
??????tempx[i]=1;
??????tempy[i]=y[i];
?????}
for?(i=0;i<2*poly_n+1;i++)
?????for?(sumxx[i]=0j=0;j ???{
????sumxx[i]+=tempx[j];
????tempx[j]*=x[j];
???}
for?(i=0;i ????for?(sumxy[i]=0j=0;j ???{
????sumxy[i]+=tempy[j];
????tempy[j]*=x[j];
???}
for?(i=0;i ?????for?(j=0;j ata[i*(poly_n+1)+j]=sumxx[i+j];
gauss_solve(poly_n+1ataasumxy);
free(tempx);
free(sumxx);
free(tempy);
free(sumxy);
free(ata);
}
void?gauss_solve(int?ndouble?A[]double?x[]double?b[])
{
int?ijkr;
double?max;
for?(k=0;k ?????{
??????max=fabs(A[k*n+k]);?/*find?maxmum*/
??????r=k;
??????for?(i=k+1;i ???if?(max ??????{
???????max=fabs(A[i*n+i]);
???????r=i;
??????}
??????if?(r!=k)
for?(i=0;i ??????{
???????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;i ???{
????for?(j=k+1;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];
???}
?????}
for?(i=n-1;i>=0;x[i]/=A[i*n+i]i--)
?????for?(j=i+1x[i]=b[i];j x[i]-=A[i*n+j]*x[j];
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????837120??2009-06-27?21:24??數(shù)值計算\數(shù)值計算課程設(shè)計報告.doc
?????文件???????2698??2009-06-11?09:36??數(shù)值計算\數(shù)值分析程序代碼\經(jīng)典四階龍格庫塔法.c
?????文件????????966??2009-06-11?10:00??數(shù)值計算\數(shù)值分析程序代碼\弦割法.c
?????文件???????2489??2009-06-11?12:15??數(shù)值計算\數(shù)值分析程序代碼\M次多項式曲線擬合.c
?????文件???????1316??2009-06-11?21:02??數(shù)值計算\數(shù)值分析程序代碼\高斯列主元.c
?????文件???????2294??2009-06-11?21:26??數(shù)值計算\數(shù)值分析程序代碼\用牛頓法解非線性方程組.c
?????文件???????2383??2009-06-11?22:08??數(shù)值計算\數(shù)值分析程序代碼\龍貝格求積分算法.c
?????文件???????1019??2009-06-11?22:15??數(shù)值計算\數(shù)值分析程序代碼\三次樣條插值.c
?????文件???????1146??2009-06-11?22:55??數(shù)值計算\數(shù)值分析程序代碼\雅克比迭代.c
?????文件????????801??2009-06-19?13:58??數(shù)值計算\數(shù)值分析程序代碼\泰勒公式.c
?????文件????????367??2009-06-19?14:17??數(shù)值計算\數(shù)值分析程序代碼\復(fù)合辛普森.c
?????文件????????624??2009-06-28?05:32??數(shù)值計算\數(shù)值分析程序代碼\二分法.c
?????目錄??????????0??2011-04-09?20:22??數(shù)值計算\數(shù)值分析程序代碼
?????目錄??????????0??2011-04-09?20:21??數(shù)值計算
-----------?---------??----------?-----??----
???????????????853223????????????????????14
- 上一篇:單片機(jī)水位檢測程序
- 下一篇:浮點數(shù)c語言除法模擬源碼
評論
共有 條評論