实验三:分别用复化梯形公式和复化辛卜生公式计算f(x)=sin(x)/x的积分,并与准确值比较判断精度。

#include

#include

#include

double Trapezoid(float,float,float,int);

double Simpson(float,float,float,int);

double Integral(float,float);

int SigDigT(double,double,int);

void Euler(float a[50],float b);

float f(float);

float Bisection(float,float);

main()

{char q;

double d1,d2;

float a,b,h1,h2;

int i,m,n;

printf("\t\t\t实验三:数值积分\n");

printf("实验题目:分别用复化梯形公式和复化辛卜生公式计算f(x)=sin(x)/x的积分,并与准确值比较判断精度。\n\n");

printf("请输入定积分的上下限:\n");

printf("定积分下限:a=");

scanf("%f",&a);

printf("定积分上限:b=");

scanf("%f",&b);

if(a==b)

{printf("积分上下限相等,定积分的值为0。\n");

goto sign1;}

else

printf("请输入复化梯形公式划分的份数: ");

scanf("%d",&n);

printf("请输入复化辛卜生公式划分的份数:");

scanf("%d",&m);

h1=(b-a)/n;

h2=(b-a)/m;

printf("复化梯形公式的步长为: h=%f\n",h1);

printf("复化辛朴生公式的步长为: h=%f\n",h2);

printf("复化梯形公式的结果是:\nT=%f\n",Trapezoid(a,b,h1,n));

printf("复化辛卜生公式的结果是:\nS=%f\n",Simpson(a,b,h2,m));

printf("定义计算该公式的结果是:\nI=%f\n",Integral(a,b));

d1=fabs(Integral(a,b)-Trapezoid(a,b,h1,n));

d2=fabs(Integral(a,b)-Simpson(a,b,h2,m));

printf("复化梯形公式的误差是:\nd=%f\n",d1);

printf("复化辛卜生公式的误差是:\nd=%f\n",d2);

if(d1>d2) printf("复化梯形公式的精度高于复化辛卜生公式的精度\n");

else if(d1==d2) printf("复化辛卜生公式和复化梯形公式的精度相等\n");

else printf("复化辛卜生公式的精度高于复化梯形公式的精度\n");

for(i=0;i

{if(i==0) printf("划分%d份的复化梯形公式的有效位数是小数点后的第%d位\n",n,SigDigT(d1,d2,i));

else printf("划分%d份的复化辛卜生公式的有效位数是小数点后的第%d位\n",m,SigDigT(d1,d2,i));}

sign1:

printf("\n是否继续?(y/n)\n");

printf("注:选y 重新输入,选n 返回主界面\n");

getchar();

q=getchar();

if(q=='y')

system("cls");

else if(q=='n')

{system("cls");

main();}

else {printf("您输入的字符不可识别,请重新输入!\n");

goto sign1;}}

double Trapezoid(float a,float b,float h1,int n)

{double x,y,t=0;

int i;

for(i=1;i

{x=a+i*h1;

if(x==0) y=2;

else y=2*(sin(x)/x);

t=t+y;}

if(a==0) t=t+1+sin(b)/b;

else if(b==0) t=t+1+sin(a)/a;

else t=t+sin(a)/a+sin(b)/b;

t=(h1/2)*t;

return t;}

double Simpson(float a,float b,float h2,int m)

{double x,y,s=0;

int i;

for(i=1;i

{x=a+i*h2;

if(x==0) y=2;

else y=2*(sin(x)/x); s=s+y;}

for(i=0;i

{x=a+((1+2*i)*h2)/2; if(x==0) y=4;

else y=4*(sin(x)/x); s=s+y;}

if(a==0) s=s+1+sin(b)/b; else if(b==0) s=s+1+sin(a)/a; else s=s+sin(a)/a+sin(b)/b; s=(h2/6)*s;

return s;}

double Integral(float a,float b) {double h,x,y,I=0;

int n=500000;

h=(b-a)/500000;

for(n=0;n

if(x==0) y=1;

else y=sin(x)/x;

I=I+y*h;}

return I;}

SigDigT(double d1,double d2,int i) {int j=0,k=0;

double r=1,t;

if(i==0)

{do{r=r*(0.1);

t=d1/r;

j++;}while(t

else

{do{r=r*(0.1);

t=d2/r;

j++;}while(t

复化梯形公式c语言sinx x,复化梯形公式和复化辛卜生公式相关推荐

  1. 复化梯形公式c语言实验,实验4_数值积分与数值微分(完成版).doc

    数值分析实验报告四 数值积分与数值微分实验(2学时) 一 实验目的 1.掌握复化的梯形公式.辛扑生公式等牛顿-柯特斯公式计算积分. 2. 会用高斯公式计算积分. 3. 掌握数值微分的计算方法. 二 实 ...

  2. 微分求积:复化梯形、复化辛浦生

    复化梯形 将积分区间[a,b]划分n等分,步长,求积节点,在每个小区间上应用梯形公式 然后将它们累加求和,作为所求积分I的近似值. 记 式为复化梯形求积公式,下标n表示将区间n等分. 算法流程 算法代 ...

  3. 复化辛甫生求积法matlab,数值分析习题.doc

    数值分析习题 第一章 绪论 姓名 学号 班级 习题主要考察点:有效数字的计算.计算方法的比较选择.误差和误差限的计算. 1 若误差限为,那么近似数0.003400有几位有效数字?(有效数字的计算) 2 ...

  4. c语言计算sinx并输出,c语言sinx实验报告.doc

    c语言sinx实验报告 实验题目 C语言基本控制结构 实验时间 2014 年 3月 27日 实验地点 DZ1402 实验成绩 实验性质 □验证性 √设计性 □综合性 教师评价: □算法/实验过程正确: ...

  5. 辛甫生算法c语言,[转载]实变函数,计算方法程序,康托图

    计算方法程序: 1. 秦九韶算法 2.二分法 3.拉格朗日插值 4.埃特金算法 5.复化梯形法 6.复化辛甫生算法 7.二阶龙格库塔方法 8.四阶龙格库塔方法 9.改进的欧拉方法 10.迭代法 11. ...

  6. 复化梯形c语言计算定积分,第六章 函数和宏定义实验(2)

    1.利用复化梯形公式计算定积分 2.计算Ackerman函数 3.编写计算x的y次幂的递归函数getpower(int x,int y),并在主程序中实现输入输出 4.编写计算学生年龄的递归函数 5. ...

  7. 复合梯形公式C语言程序,复合梯形公式、复合辛普森公式 matlab(示例代码)

    1. 用1阶至4阶Newton-Cotes公式计算积分 程序: function I = NewtonCotes(f,a,b,type) % syms t; t=findsym(sym(f)); I= ...

  8. 【数值分析】微分求积:复化梯形、复化辛浦生

    本科课程参见:<软件学院那些课> 复化梯形 将积分区间[a,b]划分n等分,步长,求积节点,在每个小区间上应用梯形公式 然后将它们累加求和,作为所求积分I的近似值. 记

  9. #c语言sinx≈x-x^3^/3!+x^5^/5!-x^7^/7!+x^9^/9!-……,计算sinx的值,直到最后一项小于1e-5,并计算累加次数。

    标题sinx≈x-x3/3!+x5/5!-x7/7!+x9/9!---,计算sinx的值,直到最后一项小于1e-5,并计算累加次数. List item List item 3.List item # ...

  10. 怎样用C语言sinx的曲线长度,Javascript 绘制 sin 曲线过程附图

    Javascript 绘制 sin 曲线代码如下: #MyCanvas { background-color: cornflowerblue; } function draw(){ var my_ca ...

最新文章

  1. 30多岁程序员老W,无奈选择转行!问题出在哪?
  2. 文件的特殊权限:suid sgid sticky
  3. 绝对养眼 Tech·Ed 2008大会SHOW GIRL动感热舞
  4. Python基础教程:list深拷贝和浅拷贝
  5. 什么是SAP Graph
  6. 计算机操作系统(11):负载均衡
  7. 不允许后退提交数据的方法(抗重复刷新提交)
  8. [bzoj4592] [Shoi2015]脑洞治疗仪
  9. AlarmManager.setRepeating将不再准确
  10. MySQL(5)-----DQL语句的基本查询与高级查询
  11. 微信公众号怎么赚钱?
  12. mysql基于PHP的校园竞赛信息网站 毕业设计源码221230
  13. 温度对免疫代谢调节和癌症进展的影响
  14. 如何分析用户复购行为?
  15. php pdf文档内容修改,php2pdf-如何使用php修改pdf中的内容,并且保证格式不乱
  16. TLAB(Thread Local Allocation Buffer)
  17. 带api的php探针,从零开始搭建前端监控系统(一)——web探针sdk
  18. linux下数据库启动和停止
  19. HTC官方RUU固件提取刷机包rom.zip以及RUU解密教程
  20. r星服务器在那个文件,《GTA5》PC版R星编辑器存档位置及使用心得攻略

热门文章

  1. iPhone手机Mac地址查看
  2. 电脑虚拟服务器云主机运维论坛,虚拟服务器云主机论坛
  3. 计算机主板的定义,垃圾佬折腾笔记 篇一:HP Z228主板自测接口定义
  4. 第17节 三个败家子(17)——少侠孙坚
  5. centos安装NVI驱动
  6. Linux实现基于Loopback的NVI(NAT Virtual Interface)
  7. 【acwing 寒假每日一题(入门组)】day20 火星人
  8. 【洛谷T2695 桶哥的问题——吃桶】
  9. Mybatis解决查询返回Map类型时值为null的字段没有在Map结果集中的问题
  10. 190824-英雄联盟传记爬取