数值分析程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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公式}