matlab中怎么求定积分怎么求

如何用矩形法(梯形法)求定积分
字体:[ ] 类型:转载 时间:
思路就是将积分区间划分成n等份,然后将这n等份近似看成矩形(或梯形),然后对所有的矩形(或梯形)的面积进行求和
分析:高中的时候,我们学习过,可以通过矩形法或者矩形法来求定积分。
思路就是将积分区间划分成n等份,然后将这n等份近似看成矩形(或梯形),然后对所有的矩形(或梯形)的面积进行求和。
简单的例子:求函数X^2在的定积分
矩形法: 代码如下:#include&iostream&#include&math.h&int main(){&float fun(float x);&float a,b;&cout&&"请输入函数X^2的定积分的下限a和上限b:";&cin&&a&&b;&int n=50;//将区间划分成50份 &float h=(b-a)/n;//h是每个区间分大小 &float s=0;//s是矩形的面积的和&float i=0;&for(i=a;i&b;i+=h){&&s=s+fun(i)*h;&} &cout&&"\n结果是:"&&s&&&cout&& }float fun(float x){&return pow(x,2);}梯形法: 代码如下:#include&iostream&#include&math.h&int main(){&float fun(float x);&float a,b;&cout&&"请输入函数X^2的定积分的下限a和上限b:";&cin&&a&&b;&int n=50;//将区间划分成50份 &float h=(b-a)/n;//h是每个区间分大小 &float s=0;//s是矩形的面积的和&float i=0;&for(i=a;i&b;i+=h){&&s=s+((fun(i)+fun(i+h))*h)/2;&} &cout&&"\n结果是:"&&s&&&cout&& }float fun(float x){&return pow(x,2);}一个较复杂的例子写一个通用函数,用来求sinx&& 、& cosx&&& 、& e^x&& 、& x^2& 的定积分分析:fun为用来求定积分的通用函数,调用fun函数的时候,需要将积分的上限,下限,区间划分的份数以及被积函数的指针传递过来。
矩形法: 代码如下:#include&iostream&#include&math.h&int main(){&float fsin( float x);&float fcos( float x);&float&& fe( float x);&float fpf(float x);&float fun(float a,float b, int n,float (*p)(float x));&float a[4],b[4],r[4];&cout&&"请输入求正弦函数定积分的上限a和下限b:";&cin&&a[0]&&b[0];&r[0]=fun(a[0],b[0],50,fsin);&cout&&"\n结果是:"&&r[0]&&&cout&&"\n请输入求余弦函数定积分的上限a和下限b:";&cin&&a[1]&&b[1];&r[1]=fun(a[1],b[1],50,fcos);&cout&&"\n结果是:"&&r[1]&&&cout&&"\n请输入求以e为底的指数函数定积分的上限a和下限b:";&cin&&a[2]&&b[2];&r[2]=fun(a[2],b[2],50,fe);&cout&&"\n结果是:"&&r[2]&&&cout&&"\n请输入求X^2函数定积分的上限a和下限b:";&cin&&a[3]&&b[3];&r[3]=fun(a[3],b[3],50,fpf);&cout&&"\n结果是:"&&r[3]&&&&cout&&&return 0;}float fsin(float x){&return sin(x);}float fcos(float x){&return cos(x);}float fe(float x){&return exp(x);}float fpf(float x){&return pow(x,2);}float fun(float a,float b,int n,float (*p)(float x)){&&float h=(b-a)/n;&float s=0;&for(i=a;i&b;i+=h){&&s=s+p(i)*h;//利用了矩形求面积的公式 &}&}梯形法: 代码如下:#include&iostream&#include&math.h&int main(){&float fsin( float x);&float fcos( float x);&float&& fe( float x);&float fpf(float x);&float fun(float a,float b, int n,float (*p)(float x));&float a[4],b[4],r[4];&cout&&"请输入求正弦函数定积分的上限a和下限b:";&cin&&a[0]&&b[0];&r[0]=fun(a[0],b[0],50,fsin);&cout&&"\n结果是:"&&r[0]&&&cout&&"\n请输入求余弦函数定积分的上限a和下限b:";&cin&&a[1]&&b[1];&r[1]=fun(a[1],b[1],50,fcos);&cout&&"\n结果是:"&&r[1]&&&cout&&"\n请输入求以e为底的指数函数定积分的上限a和下限b:";&cin&&a[2]&&b[2];&r[2]=fun(a[2],b[2],50,fe);&cout&&"\n结果是:"&&r[2]&&&cout&&"\n请输入求X^2函数定积分的上限a和下限b:";&cin&&a[3]&&b[3];&r[3]=fun(a[3],b[3],50,fpf);&cout&&"\n结果是:"&&r[3]&&&&cout&&&return 0;}float fsin(float x){&return sin(x);}float fcos(float x){&return cos(x);}float fe(float x){&return exp(x);}float fpf(float x){&return pow(x,2);}float fun(float a,float b,int n,float (*p)(float x)){&&float h=(b-a)/n;&float s=0;&for(i=a;i&b;i+=h){&&s=s+((p(i)+p(i+h))*h)/2;//梯形法求面积 &}&}
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具如何对不完全beta函数求定积分? 求大家帮助!!
已有 3169 次阅读
|个人分类:|系统分类:|关键词:求助计算不完全beta函数的定积分
如何对这个式子求积分:?
转载本文请联系原作者获取授权,同时请注明本文来自任庆福科学网博客。链接地址:
当前推荐数:1
评论 ( 个评论)
扫一扫,分享此博文
热门博文导读
Powered by
Copyright &扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
带绝对值的定积分怎么求,给个简单的列子
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
带绝对值的定积分怎么求-----讨论,把绝对号去掉.∫(0,2)︱x-1︱dx=∫(0,1)︱x-1︱dx+∫(1,2)︱x-1︱dx=∫(0,1)(-x+1)dx+∫(1,2)(x-1)dx=[(-1/2)x^2+x](0,1)+[(1/2x^2-x](1,2)=1/2-(-1/2)=1
为您推荐:
其他类似问题
扫描下载二维码博客访问: 22696
博文数量: 13
注册时间:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
求定积分近似值&&& 试求定积分
的近似值(积分限a,b从键盘输入)。算法分析如下:&&& 求定积分的近似值常有矩形法与梯形法,其实质都是面积求和。
&&& 矩形法是把所要求的面积垂直x轴分成n个小矩形,然后把这n个小矩形的面积相加,即为所求的定积分的值。&&& 梯形法是把所要求的面积垂直分成n个小梯形,然后作面积求和。&&& 这两种近似求值的精度随分割个数n的增加而增加,对于相同的n个数,相对来说,梯形法的精度比矩形法的要高一些。程序代码如下:#include#includevoid main(){&&& int i,n=1000;&&& float a,b,h,t1,t2,s1,s2,x;&&& printf("请输入积分限a,b:");&&& scanf("%f,%f",&a,&b);&&& h=(b-a)/n;&&& for(s1=0,s2=0,i=1;i<=n;i++)&&& {&&&&&&& x=a+(i-1)*h;&&&&&&& t1=(float)exp(-x*x/2);t2(float)=exp(-(x+h)*(x+h)/2);&&&&&&& s1=s1+t1*h;&&&&&&& /*矩形面积累加*/&&&&&&& s2=s2+(t1+t2)*h/2;&&&&&&& /*梯形面积累加*/&&& }&&& printf("矩形法算得积分值:%f.\n",s1);&&& printf("梯形法算得积分值:%f.\n",s2);}程序运行结果如下:&&& 矩形法算得积分值:0.855821&&& 梯形法算得积分值:0.855624&&& 由上面的比较可知,梯形法的精度要高于矩形法。
例二& 求函数f(x)=x*x+2*x+1在【0,2】上的定积分。
&&& #include&&& main()&&&&&& {&&& double s=0,h,a,b,f0,f1,n;&&&&&&&&&&& &&&&&&&&&&&&& printf("Enter n,a,b:");&&&&&&&&&&&&&scanf("%lf,%lf,%lf",&n,&a,&b);&&&&&&&&&&&& h=(b-a)/n;&&&&&&&&&&& &f0=a*a+2*a+1;&&&&&&&&&&&& for(i=1;i<=n;i++)&&&&&&&&&&&&&&& &{& a=a+h;&&&&&&&&&&&&&&&&&&&&&f1=a*a+2*a+1;&&&&&&&&&&&&&&&&&&&& s+=(f0+f1)*h/2;&&&&&&&&&&&&&&&&&&& &f0=f1;&&&&&&&&&&&&&&& &}&&&&&&&&&&& printf("sum is %f",s);&&&&&&& }
阅读(11983) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 matlab怎么求定积分 的文章

 

随机推荐