第6章_函数与编译预处理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章_函数与编译预处理

例6.35 用牛顿迭代法求方程-3x3+4x2-5x+6 0在1.0附近的实根,精度要求为 。 牛顿迭代公式如下所示: 只要相邻两次迭代值误差的绝对值小于等于给定的精度要求,即| xk-xk-1|≤ 满足,我们就认为最后一次的迭代值为方程的近似解。实现牛顿迭代法的基本步骤如下: 1 给出初始近似根x0及精度 ; 2 计算 3 若| xk-xk-1|≤ ,转向 4 ;否则x0 x1,转向 2 ; 4 输出满足精度的根x1,结束。 6.8 程序举例 图6-5 牛顿迭代法的流程图和N-S图描述 6.8 程序举例 当f x -3x3+4x2-5x+6时,有f‘ x -9x2+8x-5 ,设初值x0 1.0。 #include #include #define eps 0.00001 /* 宏定义容许误差eps为0.00001 */ float f float x /* 定义函数f x */ return -3*x+4 *x-5 *x+6 ; float f1 float x /* 定义函数f x 的导数f1 x */ return -9*x+8 *x-5 ; void main float x0,x1 1.0; do x0 x1; /* 准备下一次迭代的初值 */ x1 x0-f x0 /f1 x0 ; /* 牛顿迭代 */ while fabs x1-x0 eps ; /* 若满足精度,输出近似根 */ printf x %f\n,x1 ; 程序运行结果: x 1.265328 6.8 程序举例 例 6.36 使用梯形求积公式求下列定积分的值。 梯形积分法的基本思想是,将区间[a,b]分成n个相等的小区间,则每个小区间的长度为h b-a /n,对每个小区间均实施如下的梯形求积: 将这些小梯形的求积值加起来,可以得到如下梯形求积公式: 6.8 程序举例 基于上述分析,实现梯形积分法的基本步骤: 1 输入区间[a,b]的端点a,b值以及分割数n; 2 将区间[a,b]等分成n个小区间,每一个小区间的长度h b-a /n; 3 计算每一个等分点的函数值与yi f a+ih i 0,1,2,…,n ; 4 计算: 5 输出s的值,结束。 6.8 程序举例 图6-6 梯形积分法的N-S图描述 6.8 程序举例 #include #define N 16 /* 宏定义等分数N为16 */ float func float x /* 定义函数func,计算被积函数的值 */ float y; y 4.0/ 1+x*x ; return y ; void gedianzhi float y[],float a,float h /* 定义函数gedianzhi,计算等分点的函数值 */ int i; for i 0;i N;i++ y[i] func a+i*h ; 6.8 程序举例 /* 定义函数trapeze,计算梯形面积 */ float trapeze float y[],float h float s; int i; s y[0]+y[N] /2.0; for i 1;i N;i++ s+ y[i]; return s*h ; 6.8 程序举例 void main float a,b,h,s,f[N+1]; printf input a,b ; scanf %f,%f,a,b ; h b-a /N; gedianzhi f,a,h ; /* 调用函数gedianzhi,计算等分点的函数值 */ s trapeze f,h ; /* 调用函数trapeze,计算梯形面积 */ printf s %f\n,s ; 程序运行结果: input a,b 0,1↙ s 3.140942 在上述程序中,如果需要计算其他函数的积分,则需要重新编写计算被积函数值的函数func,重新定义等分数N的值,以及通过键盘重新输入积分的下限和上限的值即可。 6.8 程序举例 例6.37 利用宏定义求三角形的面积(假设输入的三边长满足构成三角形的条件)。 #include #include #define S a,b,c a+b+c /2 /* 宏定义S a,b,c */ #define AREA a,b,c sqrt S a,b,c * S a,b,c -a * S a,b,c -b * S a,b,c -c /* 宏定义AREA a,b,c */ void main float a,b,c; printf input a,b,c ; scanf %f,%f,%f,a,

文档评论(0)

70后老哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档