数值分析实验报告四
数值积分与数值微分实验(2学时)
一 实验目的
1.掌握复化的梯形公式、辛扑生公式等牛顿-柯特斯公式计算积分。
2. 会用高斯公式计算积分。
3. 掌握数值微分的计算方法。
二 实验内容
1.分别用复化的梯形公式和辛扑生公式计算积分。
M=4
2.用高斯公式(n=3)
3.给定下列表格值
X50556065Y1.69901.74041.77821.8129利用四点式(n=3)的值。
三 实验步骤(算法)与结果
1.计算积分
1.1 复化梯形公式
利用C语言编程,程序源代码如下:
#include
#include
float f(float x)
{
return(sqrt(x));
}
void main()
{
float a,b,h,x[10],sum;
int i,m;
printf("input a:");
scanf("%f",&a);
printf("input b:");
scanf("%f",&b);
printf("input m:");
scanf("%d",&m);
h=(b-a)/m;x[0]=a;x[m]=b;
for(i=1;i
x[i]=a+h*i;
for(sum=0,i=0;i
sum=sum+(f(x[i])+f(x[i+1]))*h/2;
printf("the result is %f",sum);
getch();
}
得出结果如下图:
所以:=17.368643
1.2 复化辛扑生公式
利用C语言编程,程序源代码如下:
#include
#include
float f(float x)
{
return(sqrt(x));
}
void main()
{
float a,b,h,x[10],sum=0,sum1=0,sum2=0,sum3=0;
int i,m;
printf("input a:");
scanf("%f",&a);
printf("input b:");
scanf("%f",&b);
printf("input m:");
scanf("%d",&m);
h=(b-a)/m;x[0]=a;x[m]=b;
for(i=1;i
x[i]=a+h*i;
sum1=f(x[0])+f(x[m]);
for(i=1;i<=m-1;i++,i++)
sum2=sum2+f(x[i]);
for(i=2;i<=m-2;i++,i++)
sum3=sum3+f(x[i]);
sum=(sum1+4*sum2+2*sum3)*h/3;
printf("the result is %f",sum);
getch();
}
得出结果如下图:
所以:=17.726210
2
3. 利用四点式(n=3)的值
利用C语言编程,程序源代码如下:
#include
#include
void main()
{
float h=5,f1,f2,x[10],y[10];
int i;
printf("input x:");
for(i=0;i<4;i++)
scanf("%f",&x[i]);
printf("input y:");
for(i=0;i<4;i++)
scanf("%f",&y[i]);
f1=(-11*y[0]+18*y[1]-9*y[2]+2*y[3])/(6*h);
f2=(12*y[0]-30*y[1]+24*y[2]-6*y[3])/(6*h*h);
printf("the result is:f(1)(50)=%f,f(2)(50)=%f",f1,f2);
getch();
}
得出结果如下图:
所以:
四 实验收获与教师评语
1. 实验收获:
对于这次实验,我可以锻炼到上机实验的能力,并且感受到数学知识在现实生活中还是挺多应用,现在比较熟悉的运用计算机解决数学问题。
另外,正是因为这次上机实验,让我重温了有些遗忘的编程知识。
2.教师评语
4