數值分析實驗二 數值積分

2021-07-30 13:33:09 字數 1935 閱讀 9923

(1)、(2)

#include

#include

using namespace std;

double f(double x)

return pow(x,2);

int main()

double a,b,e;

int n;

cin>>a>>b>>e;

cin>>n;

double h=(b-a)/n;

double x[1000];

// x[0]=a;另外一種形式

double result_ti,result_simpson;

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

x[i]=a+i*h;

for(int k=0;kresult_ti+=(h/2)*(f(x[k])+f(x[k+1]));

result_simpson+=(h/6)*(f(x[k])+4*f((x[k]+x[k+1])/2)+f(x[k+1]));

for(int k=1;kx[k]=a+h*k;

mid_ti=(h/2)*(f(a)+2*f(x[k])+f(b));

// result_simpson=(b-a)/6*(f(a)+4f((a+b)/2)+f(b));

result_ti=(h/2)*(f(a)+mid_ti+f(b));

cout<

(3)//sin(x)/x in [0,1] 

#include

#include

#define eps 1e-12

using namespace std;

double a, b, h;  

double fx(double x)

if (x==0)

return 1;  

return sin(x)/x;

int main()

cin>>a>>b;  

h = fabs(b-a);  

double s1, s2, t1, t2, c1, c2, r1, r2;  

double x, f;  

t2 = t1 = (fx(a)+fx(b)) * h/2;  

int k = 0;  

r1=0; r2=1; h *= 2;  

while (fabs(r2-r1)>eps)  

cout1)

cout2)

cout3)

cout

s1 = s2;

if (k>1)

c1 = c2;   

if (k>2)

r1 = r2;   

k++; h/=2;   

f = 0; x = a + h/2;   

while (xf += fx(x);    

x += h;   

t2 = (t1 + h * f) / 2;   

s2 = t2 + (t2 - t1)/3;   

if (k==1)

continue;   

c2 = s2 + (s2 - s1)/15;   

if (k==2)

continue;   

r2 = c2 + (c2 - c1)/63;    

return 0;

1. 拉格朗日插值在高次插值時同原函式偏差大、存在龍格現象,高次插值多項式不收斂。

2. 低次插值時,拉格朗日插值精度較高,與原值誤差較小

分段插值時,一般分段越多,精度相應越高

找規律

#include using namespace std;

數值分析實驗 二 之數值積分與微分

1 用復化梯形公式的自動控制誤差演算法求積分。2 romberg積分演算法求積分。復化梯形公式 sy2 1.m檔案 myint 0,1,100 fun1.m檔案 function f fun1 x if x 0 x 1 f 1 else f sin x x endmyint,m檔案 function...

數值分析第二章 數值積分

數值積分部分考點總結 梯形公式,中矩形公式,辛甫生公式應當熟練掌握p59 機械求積法 求積結點和求積係數 節點的權 代數精度的定義 會計算給定求積公式的代數精度 在求積節點給定的情況下,求積公式的構造本質上是個線性方程組的代數問題 插值型求積公式 定理1 形如 p59 4 的求積公式至少具有 n次代...

數值積分(實驗三)

函式介面double simpsonintegral func fun,double a,double b,double eps,int n 其中,b 與 a 為積分上下限,eps 為誤差精度,n 為區間等分數,l 為加速次數,fun 為被積分函式的名稱 實現 include stdafx.h in...