欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    自适应Simpson积分算法(MATLAB及C++实现代码)(4页).docx

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

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

    自适应Simpson积分算法(MATLAB及C++实现代码)(4页).docx

    -自适应Simpson积分算法(MATLAB及C+实现代码)-第 4 页自适应Simpson积分算法(MATLAB及C+实现代码) (计算数学课用)在CSDN论坛中找到了却要金币,无奈之下自己写了一份。对于类似问题,改一下积分函数和区间即可。针对问题:数学上已经证明了0141+x2dx=成立,所以可以通过数值积分来求的近似值。试利用自适应Simpson算法计算积分近似值。C+版:(直接复制粘贴在VC+6.0即可运行)/*用自适应Simpson积分方法计算积分值*/#include<iostream>#include<cmath>int n=0; /设置全局变量n,用来记录最高迭代次数,避免递归一直进行下去。double pi=3.141592653589793238462643 ; /设置近似精确值,用以比较double e1=0.00001 ; /设置误差容限为10-5double f(double); /要积分的函数 double Simpson (double,double,double,double); / 迭代函数using namespace std;/主函数 int main() double a=0,b=1,t,h,S;/积分区间 h=(b-a)/2; S=h/3*(f(a)+f(b)+4*f(a+b)/2); /第一次Simpson公式积分值 t=Simpson(a,b,e1,S); cout<<"积分值为:"<<t<<endl; cout<<"最大迭代次数为:"<<n<<endl; cout<<"设置误差容限为"<<e1<<"n误差为:"<<pi-t<<endl; return 0; /子函数1(积分函数) double f(double x) return 4/(1+x*x); /子函数2(迭代函数) double Simpson (double A,double B,double e,double S) double h,S1,S2; h=(B-A)/2; n+; /统计迭代次数 if(n>500) cout<<"方法有误,跳出递归"<<endl; return 0; S1=h/6*(f(A)+f(A+h)+4*f(A+h/2); / 在A,(A+B)/2 区间上计算Simpson积分值 S2=h/6*(f(A+h)+f(B)+4*f(A+3/2*h); / 在(A+B)/2,B 区间上计算Simpson积分值 if(fabs(S-S1-S2)<15*e) return S1+S2; /如果满足误差容限要求 ,就以S1+S2作为此时对应区间上的函数的近似值else return Simpson(A,(A+B)/2,e/2,S1)+Simpson(A+B)/2,B,e/2,S2); /递归调用MATLAB版: (两个函数文件加一个脚本文件)1.编写积分函数文件:function y =f(x)y=4./(1+x.2);end2.编写Simpson 迭代函数文件function y = Simpson( A,B,e,S )h=(B-A)/2;S1=h/6*(f(A)+f(A+h/2)+4*f(A+h/2);S2=h/6*(f(A+h)+4*af(A+3/2*h)+f(B);if abs(S-S1-S2)<10*e y= S1+S2;else y=Simpson(A,(A+B)/2,e/2,S1)+Simpson(A+B)/2,B,e/2,S2);endend3.编写脚本调用文件tic clear; a=0; b=1; %积分区间e=0.0000001; %误差容限h=(b-a)/2; S=h/3*(f(a)+f(b)+4*f(1/2*(a+b); %第一次Simpson积分值t=Simpson(a,b,e,S) %最终自适应方法积分值abs(pi-t) %实际误差e %设置的误差容限toc %返回所用时间亲测可用。这两个代码本质上是一样的。我先用C+语言写好,然后又换用成MATLAB语言。MATLAB好像可以把误差容限调到10-7以下,而C+ 则只能到10-5左右。原因不甚了解,猜测可能是由于C+计算时字节长度不够,导致精度不够,要递归调用很多次才能达到所需精度。

    注意事项

    本文(自适应Simpson积分算法(MATLAB及C++实现代码)(4页).docx)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开