当前位置:文档之家› 数值分析程序

数值分析程序

用N-C积分公式计算sin(x)在区间[0,∏]上的积分值。

#include"stdio.h"
#include"math.h"
void main()
{
int n,k;
double sum=0.0,a=0.0,b=3.2415926;
double Cotes[8][9]={{0.5,0.5},{1.0/6,4.0/6,1.0/6},{1.0/8,3.0/8,3.0/8,1.0/8},
{7.0/90,32.0/90,12.0/90,32.0/90,7.0/90},{19.0/288,75.0/288,50.0/288,50.0/288,75.0/288, 19.0/288},
{41.0/840,216.0/840,27.0/840,272.0/840,27.0/840,216.0/840,41.0/840},
{751.0/17280,3577.0/17280,1323.0/17280,2989.0/17280,2989.0/17280,1323.0/17280,35 77.0/17280,751.0/17280},
{989.0/28350,5888.0/28350,-928.0/28350,10496.0/28350,-4540.0/28350,10496.0/28350, -928.0/28350,5888.0/28350,989.0/28350}};
//printf("请输入积分区间a和b:");
//scanf("%lf,%lf",&a,&b);
printf("请输入积分节点n(1<=n<=8):");
scanf("%d",&n);
printf("\n");
for(k=0;k<=n;k++)
sum+=Cotes[n-1][k]*(sin(a+k*(b-a)/n));
sum=sum*(b-a);
printf("%lf\n",sum);
printf("误差值为:%lf\n",2.0-sum);
}
用复化梯形公式和复化Sipsion公式求函数(sinx)/x在区间[0,1]上的积分。

#include"stdio.h"
#include"math.h"
void Ti(double a,double b,int n)
{
double sum=0.0,h=0.0,x=0.0;
int i;
h=(b-a)/n;
for(i=1;i<n;i++)
{
x=a+i*h;
sum+=2*sin(x)/(x);
}
sum=(h/2)*(1+sin(b)/b+sum);
printf("函数sin(x)/x在区间[%lf,%lf]上的积分是%lf\n",a,b,sum);
}
void Si(double a,double b,int n)
{
double sum=0.0,h=0.0,x=0.0,y=0.0;
int i,j;
h=(b-a)/n;
for(i=1;i<=n/2;i++)
{
x=a+(2*i-1)*h;
sum+=4*sin(x)/x;
}
for(j=1;j<=n/2-1;j++)
{
y=a+2*j*h;
sum+=2*sin(y)/y;
}
sum=(h/3)*(1+sin(b)/b+sum);
printf("函数sin(x)/x在区间[%lf,%lf]上的积分是%lf\n",a,b,sum);
}
void main()
{
int s,n;
double a=0.0,b=0.0;
printf("请选择公式(1为复化梯形公式,2为复化Simpsion公式):");
scanf("%d",&s);
printf("\n");
printf("请输入分段数目n:");
scanf("%d",&n);
printf("\n");
printf("请输入求积区间a、b:");
scanf("%lf,%lf",&a,&b);
if(s==1)
Ti(a,b,n);//调用复化梯形公式else if(s==2)
Si(a,b,n);//调用复化Simpion公式}。

相关主题