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

    C语言程序设计循环结构之科学计算.ppt

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

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

    C语言程序设计循环结构之科学计算.ppt

    第八讲第八讲 循环结构的经典算法之二循环结构的经典算法之二程序设计举例程序设计举例 (本节示例需重点掌握本节示例需重点掌握)教学重点:教学重点:1.用用普通迭代法普通迭代法求一元非线性方程的近似实根求一元非线性方程的近似实根r2.用用二分法二分法求一元非线性方程在某区间上的近似实根求一元非线性方程在某区间上的近似实根r3.用用牛顿切线法(又叫牛顿切线法(又叫Newton迭代法)迭代法)求一元非线性方程求一元非线性方程在某区间上的近似实根在某区间上的近似实根r4.用用矩形法矩形法求一元函数在某区间上的积分近似值求一元函数在某区间上的积分近似值S5.用用梯形法梯形法求一元函数在某区间上的积分近似值求一元函数在某区间上的积分近似值S6.加密、解密算法加密、解密算法所谓非线性方程,就是所谓非线性方程,就是因变量因变量与与自变量自变量之间的关系之间的关系不是线性不是线性的关系,这类方程的关系,这类方程很多,例如平方关系、对数关系、指数很多,例如平方关系、对数关系、指数关系、三角函数关系等等。关系、三角函数关系等等。5.9循环应用举例循环应用举例1.用用普通迭代法普通迭代法求方程的近似实根求方程的近似实根r5.9循环应用举例循环应用举例1.用用普通迭代法普通迭代法求方程的近似实根求方程的近似实根r普通迭代法的基本思想:普通迭代法的基本思想:求一元非线性方程求一元非线性方程f(x)=0的实根。的实根。(1)、将方程、将方程f(x)=0化为它的等价方程:化为它的等价方程:x=g(x),g(x)称为迭代函数。称为迭代函数。(2)、设定一个、设定一个x的初值的初值x0;(3)、用、用x=g(x)求出求出x的下一个值的下一个值x1;(4)、再将、再将x1代入上述公式,求出代入上述公式,求出x的下一个值的下一个值x2;(5)、如此继续下去,直到前后两次求出的、如此继续下去,直到前后两次求出的x值满足要求;值满足要求;迭代法迭代法也称辗转法,也称辗转法,是一种不断用变量的是一种不断用变量的旧值递推新值的过程。旧值递推新值的过程。5.9循环应用举例循环应用举例1.用用普通迭代法普通迭代法求方程的近似实根求方程的近似实根r例例1:编写程序,用普通迭代法求方程:编写程序,用普通迭代法求方程f(x)=x+sin(1.2x)-2.15=0在在区间区间0,5上的近似实根上的近似实根r,迭代初值自选,精确到。,迭代初值自选,精确到。提示:提示:必须把方程必须把方程f(x)=0化成其等价方程化成其等价方程x=g(x)#include#includemain()doublex,x0;x0=2.5;/*迭代初值自选迭代初值自选*/dox=x0;x0=2.15-sin(1.2*x);/*转化后的等价方程转化后的等价方程x=g(x)*/while(fabs(x-x0)=1e-4);printf(%.4fn,x0);5.9循环应用举例循环应用举例2.用用二分法二分法求一元非线性方程在某区间上的近似实根求一元非线性方程在某区间上的近似实根r原理:原理:对于方程对于方程f(x)=0,解方程即要求,解方程即要求f(x)的所有零点,的所有零点,(1)先输入先输入a、b的值,求的值,求f(a)和和f(b);(2)如果如果f(a)和和f(b)同号,说明在区间同号,说明在区间a,b内无实根,返回步骤内无实根,返回步骤(1),重新输入重新输入a和和b的值;如果的值;如果f(a)和和f(b)异号,说明在区间异号,说明在区间a,b内一定有一个零点,即实根。内一定有一个零点,即实根。(3)求求f(a+b)/2,现在假设,现在假设f(a)0,(ab)、如果、如果f(a+b)/2=0,该点就是零点,该点就是零点,、如果、如果f(a+b)/20,则在区间,则在区间(a,(a+b)/2)内有零点,令内有零点,令b=(a+b)/2,从从(3)开始继续使用中点函数值判断。开始继续使用中点函数值判断。这样就可以不断接近零点这样就可以不断接近零点,通过每次把通过每次把f(x)的零点所在小区间收缩一半的方法,的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。二分法。例例2:编写程序,用二分法求一元非线性方程:编写程序,用二分法求一元非线性方程f(x)=2x+sinx-2.15=0在区间在区间(0,5)上的近似实根上的近似实根r,精确到。,精确到。#include#includemain()floata,b,x0,fa,fb,f0;doscanf(%f,%f,&a,&b);fa=2*a+sin(a)-2.15;fb=2*b+sin(b)-2.15;while(fa*fb0);dox0=(a+b)/2;f0=2*x0+sin(x0)-2.15;if(fa*f0=1e-4);printf(%.4fn,x0);5.9循环应用举例循环应用举例3.用用牛顿切线法牛顿切线法求求方程在某区间的近似实根方程在某区间的近似实根rNewton切线法又叫切线法又叫Newton迭代法。此方法使用函数迭代法。此方法使用函数f(x)的泰勒的泰勒级数的前面几项来寻找方程级数的前面几项来寻找方程f(x)=0的根。的根。5.9循环应用举例循环应用举例3.用用牛顿切线法牛顿切线法求求方程在某区间的近似实根方程在某区间的近似实根r(1)先任意设定一个与真实的根先任意设定一个与真实的根r接近的值接近的值x0,作为第一次近似根,作为第一次近似根,由由x0求出求出f(x0),过点(,过点(x0,f(x0))做)做f(x)的切线,切线交的切线,切线交x轴轴于于x1;(2)把把x1作为第二次近似根,再由作为第二次近似根,再由x1求出求出f(x1),过点,过点(x1,f(x1))做)做f(x)的切线,切线交的切线,切线交x轴于轴于x2;(3)把把x2作为第三次近似根,再由作为第三次近似根,再由x2求出求出f(x2),再做切线。,再做切线。如此继续下去,直到满足要求,得真实的根如此继续下去,直到满足要求,得真实的根r的近似值。的近似值。从图中可以看出:切线的斜率从图中可以看出:切线的斜率f(x(n)=f(x(n)/(x(n)-x(n+1)因此得:因此得:x(n+1)=x(n)f(x(n)/f(x(n),称为牛顿迭代公式。,称为牛顿迭代公式。例例3:编写程序,用:编写程序,用Newton迭代法求方程迭代法求方程f(x)=2x+cosx-2.6=0在区间在区间0,4上的近上的近似实根似实根r,迭代初值自,迭代初值自选,精确到。选,精确到。提示提示:牛牛顿切线法的计算公式顿切线法的计算公式为为x=x-f(x)/f(x)#include#includemain()floatx,x0,f,f1;x=2;/*迭代初值自选迭代初值自选*/dox0=x;f=2*x0+cos(x0)-2.6;f1=2-sin(x0);x=x0-f/f1;while(fabs(x-x0)=1e-4);printf(%.4fn,x);5.9循环应用举例循环应用举例f1代表代表f(x)X0代表前一次的近似根,代表前一次的近似根,x代表后一次的近似根。代表后一次的近似根。求出一个求出一个x后,把它的后,把它的值赋给值赋给x0,然后用,然后用x0求求下一个下一个x。5.9循环应用举例循环应用举例求定积分的近似值求定积分的近似值常有矩形法与梯形法,其常有矩形法与梯形法,其实质实质都是面积求和。都是面积求和。l矩形法是把所要求的面积垂直矩形法是把所要求的面积垂直x轴分成轴分成n个小矩形,然后把这个小矩形,然后把这n个小个小矩形的面积相加,即为所求的定积分的值。矩形的面积相加,即为所求的定积分的值。l梯形法是把所要求的面积垂直分成梯形法是把所要求的面积垂直分成n个小梯形,然后作面积求和。个小梯形,然后作面积求和。l这两种近似求值的精度随分割个数这两种近似求值的精度随分割个数n的增加而增加,对于相同的的增加而增加,对于相同的n个数,相对来说,梯形法的精度比矩形法的要高一些。个数,相对来说,梯形法的精度比矩形法的要高一些。初始算法:初始化积分区间(初始算法:初始化积分区间(a,b),如果把积分区间划分为),如果把积分区间划分为100个格,则每个区间的宽度个格,则每个区间的宽度h=fabs(a-b)/100;4.用用矩形法矩形法求一元函数在某区间上的积分近似值求一元函数在某区间上的积分近似值s5.9循环应用举例循环应用举例【例【例5_34】:编写程:编写程序,用矩形法求一元函序,用矩形法求一元函数数f(x)=x*x在区间在区间0,1上的积分近似值上的积分近似值S。(课本(课本P103)5.9循环应用举例循环应用举例#includemain()intn,k;floata,b,h,f0,s=0,s1,x;scanf(%d,&n);a=0;b=1;h=(b-a)/n;x=a;f0=x*x;for(k=1;k=n;k+)s1=f0*h;s=s+s1;x=x+h;f0=x*x;printf(%f,%f,%d,%fn,a,b,n,s);法一法一例例4:编写程序,用矩形法求一元函数:编写程序,用矩形法求一元函数f(x)=(4-(sinx)2)(1/2)在在区间区间0,3.1416/6上的积分近似值上的积分近似值S,保留,保留4位小数(小区间数位小数(小区间数n=15,此参数不能改动,否则影响答案,此参数不能改动,否则影响答案,其中其中表示幂运算表示幂运算)。)。#include#includemain()doublex,y=0,h,a=0,b=3.1416/6,s;inti,n=15;h=fabs(a-b)/n;for(i=1;i=n;i+)x=a+(i-1)*h;y=y+sqrt(4-sin(x)*sin(x);s=y*h;printf(%.4fn,s);5.9循环应用举例循环应用举例法二法二5.9循环应用举例循环应用举例5.用用梯形法梯形法求一元函数在某区间上的积分近似值求一元函数在某区间上的积分近似值S原理:原理:求一个函数求一个函数f(x)在在a,b上的定积分,其几何意义是求上的定积分,其几何意义是求f(x)曲线和直线曲线和直线x=a,y=0,x=b所围成的曲边梯形面积。为了近似求所围成的曲边梯形面积。为了近似求出此面积,可将出此面积,可将a,b区间分成若各个小区间,每个区间的宽区间分成若各个小区间,每个区间的宽度为度为(b-a)/n,n为区间个数。近似求出每个小的曲边梯形面积,为区间个数。近似求出每个小的曲边梯形面积,然后将然后将n个小面积加起来,就近似的到总的面积。即定积分的个小面积加起来,就近似的到总的面积。即定积分的近似值,当近似值,当n愈大(即区间分的愈小),近似程度愈高。愈大(即区间分的愈小),近似程度愈高。#include#includemain()inti,n=10;floata=0,b=1,h,t1,t2,s1,s2,x;h=(b-a)/n;for(s1=0,s2=0,i=1;i=n;i+)x=a+(i-1)*h;t1=(float)exp(-x*x);t2=(float)exp(-(x+h)*(x+h);s1=s1+t1*h;/*矩形面积累加矩形面积累加*/s2=s2+(t1+t2)*h/2;/*梯形面积累加梯形面积累加*/printf(矩形法算得积分值:矩形法算得积分值:%.4fn,s1);printf(梯形法算得积分值:梯形法算得积分值:%.4fn,s2);例:用矩形法和梯形例:用矩形法和梯形法求一元函数法求一元函数f(x)=e(-x2)在区间在区间0,1上的积分近似值上的积分近似值S,保留保留4位小数。位小数。(区间区间数数n=10,此参数不能,此参数不能改动否则影响答案,改动否则影响答案,其中其中e为自然对数的为自然对数的底,底,表示幂运算表示幂运算)5.9循环应用举例循环应用举例5.9循环应用举例循环应用举例6.加密、解密算法加密、解密算法(P103)例例5_33:译密码。为使电文保密,往往按一定规律将其转换成密码,译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。例如,规律可以是将字母变成收报人再按约定的规律将其译回原文。例如,规律可以是将字母变成其后的第其后的第4个字母进行加密、解密。非字母字符不变,如个字母进行加密、解密。非字母字符不变,如“China!”转换为转换为“Gmlre!”。输入一行字符,要求输出其相应的密码。输入一行字符,要求输出其相应的密码。#includemain()charc;while(c=getchar()!=n)if(c=a&c=A&cZ&cz)c=c-26;printf(%c,c);elseprintf(%c,c);思考:思考:if语句不能写成:语句不能写成:if(cZ|cz)为什么?为什么?课堂小结课堂小结熟练掌握本节所讲的所有算法,熟练掌握本节所讲的所有算法,能够举一反三。能够举一反三。

    注意事项

    本文(C语言程序设计循环结构之科学计算.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




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

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

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

    收起
    展开