計算方法實驗 c語言 六項試驗

2021-08-08 14:36:37 字數 2769 閱讀 7000

計算方法實驗報告

實驗一捨入誤差與數值穩定性

目的與要求:

1、 通過上機程式設計,複習鞏固以前所學程式語言;

2、 通過上機計算,了解捨入誤差所引起的數值不穩定性。

3、 通過上機計算,了解運算次序對計算結果的影響,從而盡量避免大數吃小數的現象。

實驗內容:

● 通過正反兩個例項的計算,了解利用計算機進行數值計算中捨入誤差所引起的數值不穩定性,深入理解初始小的捨入誤差可能造成誤差積累從而對計算結果的巨大影響。

● 通過實際程式設計,了解運算次序對計算結果的影響,了解實數運算符合的結合律和分配律在計算機裡不一定成立。

● 1 對 n = 0,1,2,…,20 計算定積分

演算法 1 利用遞推公式

5 n = 1,2,…,20

取ln6- ln5 0.182 322

演算法 2 利用遞推公式

n = 20,19,…,1

注意到取演算法一:

#include

#include

#include

#include"stdlib.h"

void main(void)

getch();/*保持使用者螢幕*/

}執行結果:

演算法二:

#include

#include

#include

#include"stdlib.h"

main()

getch();

}執行結果:

說明:從計算結果可以看出,演算法1是不穩定的,而演算法2是穩定的。

計算方法實驗報告

實驗二拉格朗日插值與牛頓插值

熟悉拉格朗日插值多項式和牛頓插值多項式,注意其不同特點;

通過拉格朗日插值和牛頓插值多項式的兩個例項的計算,了解兩種求解方法,分析他們的優缺點。

演算法1. 輸入x,y (i=0,1,2,,n),令l(x)=0;

2. 對=0,1,2,,n計算

ll (x)=

l l+l (x)y

程式與例項

例1 已知函式表

用三次拉格朗日多項式求x=0.5635的函式近似值。

拉格朗日插值:

#include

#include

#include

#include"stdlib.h"

float lagrange(float *x,float *y,float xx,int n)

free(a);

return yy;

}void main()

; float y[4]=;

float xx=0.5635,yy;

float lagrange(float *,float *,float,int);

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

system("cls");/*清屏*/

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

getch();

}執行結果:

x=0.563500,y=0.826116

牛頓插值多項式 演算法

1. 輸入n,x,y (i=0,1,2,n);

2. 對k=1,2,3,n, i=1,2, ,k計算各階差商f(x,x ,x);

3. 計算函式值

n (x)=f(x)+f[x, x](x- x)++f[x, x,,x](x- x)(x- x)(x-x)

程式與例項

例2 已知函式表

用牛頓插值多項式求n (0.596)和n (0.895)。

牛頓插值多項式:

#include

#include

#include

#include"stdlib.h"

#define n 4

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

return;

}main()

; float y[n+1]=;

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

system("cls");/*清屏*/

b=y[n];

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

printf("ninterp(%f)=%f",varx,b);

getch();

}執行結果:

ninterp<0.596000>=0.631918

實驗三復化辛卜生法,龍貝格法

通過實際計算體會各種方法的精確度;

會編寫用復化辛卜生、龍貝格演算法求定積分的程式。

通過實際計算體會各種方法的精確度並且會編寫用復化辛卜生、龍貝格演算法求定積分的程式

復化辛卜生公式

演算法:復化辛卜生公式為sn=h/6,計算過程為:

1.令2.對計算

3. 。

程式與例項

例用復化辛卜生法計算積分

#include 此頭函式請不要刪除 */

#include

float n,a=0,b=1,x;

float f(float x);

float si復化辛普生公式

for(i=1;i

t=h*(f(a)+4*s1+2*s2+f(b))/6;

return(t);

} float f(float x被積分函式f(x)

double main主函式

printf( "結果為:%f \n",z);

getch此語句請不要刪除*/

計算方法C語言程式設計

第二章2已知方程在區間 1,2 內有一根,試問用二分法求根,使其具有5位有效數字至少應二分多少次?程式設計 include main while fabs x x0 0.00005 printf n d n n 執行結果 n 15 4用迭代法求的正根,要求準確到小數點後第5位。程式設計 includ...

計算方法 c 卷

1 用 1 x近似表示ex所產生的誤差是誤差 2 1.41300作為的近似值,有位有效數字 3 用二分法求方程在區間 0,1 內的根,進行一步後根的所在區間為 要求準確到,則至少應二分次 4 過點的二次插值多項式中的係數為 5 已知,則用simpson求積公式求得 6 n階newton cotes求...

計算方法 C 例題

1 6分 已知 將它按 四捨五入 的方法轉化為浮點數系中的數,則 2 6分 設,已知則 2 其中為已知實數 3 6分 設問 是否範數?否 填 是 或 否 又是否範數?是 這是因為 第乙個,取非零向量有,不符合範數定義 第二個,取,則非奇異,顯然,由教材p.31,例2.11可知是範數。4 8分 矩陣的...