欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    C语言-用六种方法求定积分.doc

    • 资源ID:4219541       资源大小:418KB        全文页数:12页
    • 资源格式: DOC        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言-用六种方法求定积分.doc

    C语言实验报告求定积分 班级 10信息与计算科学一班 姓名 戴良伟 学号 21 1. 描述问题利用左矩形公式,中矩形公式,右矩形公式 ,梯形公式,simpson公式,Gauss积分公式求解定积分。2. 分析问题定积分定积分的定义定积分就是求函数在区间中图线下包围的面积。即所包围的面积。这个图形称为曲边梯形,特例是曲边梯形。如下图:(图1)设一元函数,在区间内有定义。将区间分成个小区间。设,取区间中曲线上任意一点记做,作和式:若记为这些小区间中的最长者。当时,若此和式的极限存在,则称这个和式是函数 在区间上的定积分。记作:其中称为积分下限,为积分上限,为被积函数, 为被积式, 为积分号。之所以称其为定积分,是因为它积分后得出的值是确定的,是一个数,而不是一个函数。定积分的几何意义1它是介于x轴、函数f(x)的图形及两条直线x=a,x=b之间的各个部分面积的代数和。在x轴上方的面积取正号;在x轴下方的面积取负号。如图言实现定积分计算的算法利用复合梯形公式实现定积分的计算假设被积函数为,积分区间为,把区间等分成个小区间,各个区间的长度为,即,称之为“步长”。根据定积分的定义及几何意义,定积分就是求函数在区间中图线下包围的面积。将积分区间等分,各子区间的面积近似等于梯形的面积,面积的计算运用梯形公式求解,再累加各区间的面积,所得的和近似等于被积函数的积分值,越大,所得结果越精确。以上就是利用复合梯形公式实现定积分的计算的算法思想。复合梯形公式:2具体算法如下:算法一1:输入积分区间的端点值和;2:输入区间的等分个数(要求尽可能大,以保证程序运行结果有较高的精确度);3:计算步长;4:对累加和赋初值;5:计算累加和6:算出积分值;7:输出积分近似值,完毕。1.2.2利用Smpson公式实现定积分的计算假设被积函数为,积分区间为,把区间等分成个小区间,各个区间的长度为。在复合梯形公式的基础上,构造出一种加速计算积分的方法。作为一种外推算法, 它在不增加计算量的前提下提高了误差的精度。具体算法如下:算法二1:输入积分上限和下限;2:输入区间的等分个数(要求尽可能大,以保证程序运行结果有较高的精确度);3:利用辛甫生公式:2,实现对定积分的求解(其中,均为梯形公式计算所得的结果,由此可见辛甫生公式是以梯形公式为基础的);4:算出积分值;5:输出积分近似值,完毕。利用Guass公式实现定积分计算 Guass型求积公式是构造高精度差值积分的最好方法之一。他是通过让节点和积分系数待定让函数f(x)以此取i=0,1,2.n次多项式使其尽可能多的能够精确成立来求出积分节点和积分系数。高斯积分的代数精度是2n-1,而且是最高的。通常运用的是-1-+1的积分节点和积分系数,其他积分域是通过变换x=(b-a)t/2 +(a+b)/2 变换到-1到1之间积分。算法三1:输入积分上限和下限;2:利用Guass公式,求定积分 4:算出积分值;5:输出积分近似值,完毕。3. 程序的编写程序一(左矩形公式)源程序#include<>#include<>void main()double f(double x);/*f(x)为函数举例,即被积函数*/int i,n;/*n为区间等分的个数,应尽可能大*/double a,b,h,s;/*a为积分下限,b为积分上限,h为步长*/printf("积分下限 a:n");scanf("%lf",&a);printf("积分上限 b:n");scanf("%lf",&b);printf("区间等分个数 n :n");scanf("%d",&n);h=(b-a)/n; /*步长的计算*/s=f(a)*h;for(i=1;i<n;i+)s=s+f(a+i*h)*h;printf("函数 f(x) 的积分值为 s=%n",s);/*以下为被积函数的定义,即函数举例*/double f(double x)double y;y=sqrt(4-x*x);return (y);程序一的编译运行 被积函数为f(x)=sqrt4-(x*x)的情况先编译,再运行,屏幕显示及操作如下:输入0+回车输入2+回车输入1000+回车程序二(中矩形公式)源程序#include<>#include<>void main()double f(double x);/*f(x)为函数举例,即被积函数*/int i,n;/*n为区间等分的个数,应尽可能大*/double a,b,h,s;/*a为积分下限,b为积分上限,h为步长*/printf("积分下限 a:n");scanf("%lf",&a);printf("积分上限 b:n");scanf("%lf",&b);printf("区间等分个数 n :n");scanf("%d",&n);h=(b-a)/n; /*步长的计算*/s=*(f(a)+f(a+h)*h;for(i=1;i<n;i+)s=s+*(f(a+i*h)+f(a+(i+1)*h)*h;printf("函数 f(x) 的积分值为 s=%n",s);/*以下为被积函数的定义,即函数举例*/double f(double x)double y;y=sqrt(4-x*x);return (y);程序二的编译运行 被积函数为f(x)=sqrt4-(x*x)的情况先编译,再运行,屏幕显示及操作如下:输入0+回车输入2+回车输入1000+回车程序三(右矩形公式)源程序#include<>#include<>void main()double f(double x);/*f(x)为函数举例,即被积函数*/int i,n;/*n为区间等分的个数,应尽可能大*/double a,b,h,s;/*a为积分下限,b为积分上限,h为步长*/printf("积分下限 a:n");scanf("%lf",&a);printf("积分上限 b:n");scanf("%lf",&b);printf("区间等分个数 n :n");scanf("%d",&n);h=(b-a)/n; /*步长的计算*/s=f(a+h)*h;for(i=1;i<n-1;i+)s=s+f(a+(i+1*h)*h;printf("函数 f(x) 的积分值为 s=%n",s);/*以下为被积函数的定义,即函数举例*/double f(double x)double y;y=sqrt(4-x*x);return (y);程序三的编译运行 被积函数为f(x)=sqrt4-(x*x)的情况先编译,再运行,屏幕显示及操作如下:输入0+回车输入2+回车输入1000+回车程序四(梯形公式)源程序#include<>#include<>void main()double f(double x);/*f(x)为函数举例,即被积函数*/int i,n;/*n为区间等分的个数,应尽可能大*/double a,b,h,s;/*a为积分下限,b为积分上限,h为步长*/printf("积分下限 a:n");scanf("%lf",&a);printf("积分上限 b:n");scanf("%lf",&b);printf("区间等分个数 n :n");scanf("%d",&n);h=(b-a)/n; /*步长的计算*/s=*(f(a)+f(a+h)*h;for(i=1;i<n;i+)s=s+*(f(a+i*h)+f(a+(i+1)*h)*h;printf("函数 f(x) 的积分值为 s=%n",s);/*以下为被积函数的定义,即函数举例*/double f(double x)double y;y=sqrt(4-x*x);return (y);程序四的编译运行 被积函数为f(x)=sqrt4-(x*x)的情况先编译,再运行,屏幕显示及操作如下:输入0+回车输入2+回车输入1000+回车程序五(Simpson公式)源程序#include<>#include<>void main()double T(double x,double y,int z);double a,b,s;int n;printf("积分下限 a:n");scanf("%lf",&a);printf("积分上限 b:n");scanf("%lf",&b);printf("区间等分个数 n :n");scanf("%d",&n);s=(4*T(a,b,2*n)-T(a,b,n)/3;/*利用辛甫生公式求解定积分*/printf("函数 f(x) 的积分值为 s=%fn",s);/*以下为复合梯形公式的定义*/double T(double x,double y,int z)double h,Tn;int i;double f(double t);h=(y-x)/z;Tn=(f(x)+f(y)/2;for(i=1;i<z;i+)Tn=Tn+f(x+i*h);Tn=Tn*h;return (Tn);/*以下为被积函数的定义,即函数举例*/double f(double t)double s;s=sqrt(4-t*t);return (s);程序四的编译运行 被积函数为f(x)=sqrt4-(x*x)的情况先编译,再运行,屏幕显示及操作如下:输入0+回车输入2+回车输入1000+回车程序六(Guass公式)源程序#include <>#include <>#define N 3float gass_integral(float (*)(float),float,float,int);void main()float function_name(float);float a,b;printf("请输入积分上限bn");scanf("%f",&b);printf("请输入积分下限an");scanf("%f",&a);float ans;ans=gass_integral(function_name,a,b,N);printf("ans=%f",ans); -1-+1 之间float gass_integral(float (*func)(float x), float a,float b ,int n )左矩形公式误差:%,中矩形公式误差:%,右矩形公式误差:%,梯形公式误差:%,辛普森公式和高斯公式误差几乎等于0,六个程序运行结果对比,在计算相同的函数f(x)=sqrt(4-x*x)的定积分,Simpson公式和Guass公式比矩形和梯形公式更可行,更有效。

    注意事项

    本文(C语言-用六种方法求定积分.doc)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开