数值分析程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用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

{

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公式}

相关文档
最新文档