經典演算法10

2021-05-10 11:06:37 字數 3357 閱讀 3839

關鍵字: 拉格朗日,牛頓插值,高斯,龍貝格

1.拉格朗日插值多項式 ,用於離散資料的擬合

c/c++ code

#include

#include

#include

float lagrange(float *x,float *y,float xx,int n)     /*拉格朗日插值演算法*/

free(a);

return yy; }

main()

if(n<=0)

for(i=0;i<=n-1;i++)

printf("/n");

for(i=0;i<=n-1;i++)

printf("/n");

printf("input xx:");

scanf("%f",&xx);

yy=lagrange(x,y,xx,n);

printf("x=%f,y=%f/n",xx,yy);

getch(); }

2.牛頓插值多項式,用於離散資料的擬合

c/c++ code

#include

#include

#include

void difference(float *x,float *y,int n)

if(n<=0)

for(i=0;i<=n-1;i++)

printf("/n");

for(i=0;i<=n-1;i++)

printf("/n");

difference(x,(float *)y,n);

printf("input xx:");

scanf("%f",&xx);

yy=y[20];

for(i=n-1;i>=0;i--) yy=yy*(xx-x[i])+y[i];

printf("newtoninter(%f)=%f",xx,yy);

getch(); }

3.高斯列主元消去法,求解其次線性方程組

c/c++ code

#include

#include

#define n 20

int main()

if(n<=0)

printf("now input a(i,j),i,j=0...%d:/n",n-1);

for(i=0;imx)

if(i=0;i--)

for(k=1;k<=n-1;k++)                     

else if(flag!=k)

exchange(flag,k);

for(i=k+1;i<=n;i++)

for(j=k+1;j<=n+1;j++)

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

x[n]=a[n][n+1]/a[n][n];

for( k=n-1;k>=1;k--)

x[k]=(a[k][n+1]-me)/a[k][k]; }

for(i=1;i<=n;i++)

message(); }

exchange(int r,int k)     

float max(int k)        

return temp; }

message()                                   

} }

4.龍貝格求積公式,求解定積分

c/c++ code

#include

#include

#define f(x) (sin(x)/x)

#define n 20

#define max 20     

#define a 2

#define b 4

#define e 0.00001     

float lbg(float p,float q,int n)

} }

c/c++ code

5.牛頓迭代公式,求方程的近似解

c/c++ code

#include

#include

#include

#define n 100

#define ps 1e-5

#define ta 1e-5

float newton(float (*f)(float),float(*f1)(float),float x0 )

float f(float x)

float f1(float x)

void main()

6. 牛頓-科特斯求積公式,求定積分

c/c++ code

#include

#include

int nc(a,h,n,r,f)

float (*a);

float h;

int n,f;

float *r;

main()

7.雅克比迭代,求解方程近似解

c/c++ code

#include

#include

#define n 20

#define max 100

#define e 0.00001

int main()

main()

while(n<1);

printf("input value:");

for(i=0;i<=n;i++)

scanf("%f",&a[i]);

printf("input frequency:");

scanf("%f",&x);

r=qin(a,n,x);

printf("answer:%f",r);

getch(); }

9.冪法

c/c++ code

#include

#include

#define n 100

#define e 0.00001

#define n 3

float x[n]=;

float a[n][n]=,,};

float y[n];

main()

break; }

no=0.0;

for(i=0;i=0.1e-6);

if(no<0.1e-6)

getch(); }

經典排序演算法整理1 0

對一串行物件根據某個關鍵字進行排序叫做排序 穩定與不穩定 若排序前a在b之前且a b,排序後a還在b前叫做穩定,若a不一定在b前叫做不穩定.內排序與外排序 所有排序都在記憶體中完成叫做內排序 由於資料量大,所以把資料放在磁碟中,而外排序就是必須得通過磁碟和內初的資料傳輸才能進行的排序.複雜度 複雜度...

演算法 經典演算法

1 匹配演算法 匹配開始,從長的字串開始,匹配成功,長的和短的字串均向後匹配,而匹配失敗,則長的字串從開始的位置向後乙個字元,重新開始匹配,而短的字串則完全從頭開始。匹配演算法 param str1 長匹配字串 param str2 短的匹配字串 return 匹配成功 返回短字串在長字串開始的位置...

經典演算法 回溯演算法

回溯是遍歷搜尋空間所有可能組態的方法。這些組態也許代表物件的所有排列或這是構建物件集合的所有可能的方法 子集 其他情況包括列舉乙個圖的所有生成樹,兩個節點的所有路徑或是把節點分類成不同顏色的所有不同的方式。這些問題有乙個共同的難點就是我們必須每次產生乙個可能的組態。避免重複或遺漏組態的方法就是我們必...