数值分析实验二 数值积分

 
 
 


 
 
  
  
  
  

(1)、(2)

#include <iostream>

#include <cmath>

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;k<n;k++)

{

result_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;k<n;k++)

{

x[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<<"Ti result: "<<result_ti<<endl;

cout<<"Simpson result: "<<result_simpson<<endl;

cout<<"The exact result: "<<(pow(b,3)-pow(a,3))/3<<endl;

return 0;

}


(3)

//Sin(x)/x in [0,1]

#include <iostream>

#include <cmath>

#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)  

{      

cout<<T2<<" ";   

if (k>1)

cout<<S2<<" ";   

if (k>2)

cout<<C2<<" ";   

if (k>3)

cout<<R2;   

cout<<endl;     

T1 = T2;     

S1 = S2;

   if (k>1)

C1 = C2;   

if (k>2)

   R1 = R2;   

k++; h/=2;   

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

while (x<b)   

{    

f += 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 <iostream> using namespace std;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李霁明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值