- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 内部函数和外部函数 内部函数:函数只限于在本文件中调用,其它文件不能调用,用static 定义该函数。 static float fac( int n) { ...... } 外部函数:函数的默认形式,可以被其它文件调用,用extern 定义该函数。调用时,在文件中用extern 说明。 void main(void) { extern enter_string( ); char str[80]; enter_string(str); .......... } 说明外部函数 * 补充算法 方程求解 1、牛顿切线法 只有为数不多的方程有精确解,一般都是用迭代方法近似求方程的解。方程f(x)=0的实数解实际上是曲线f (x)在x轴上交点的值。 f(x) x y x0 * 1、任选一x值x1,在y1=f(x1)处做切线与x轴相交于x2处。 f(x) x y x0 f(x1) x1 x2 2、若|f(x2)|小于指定的精度,则令x1=x2,继续做1。当其满足所需的精度时,x2就是方程的近似解。 x1 x2 根据已知点求其切线的公式为: 这就是牛顿切线法。 牛顿切线法收敛快,适用性强,缺陷是必须求出方程的导数。 * 已知方程为f(x)=x*x-a时,用牛顿切线法求方程的解。给定初值x0,精度10-6,算法编程如下。 cinx1; //从键盘输入x0 do { x0=x1; x1=x0-(x0*x0-a)/(2*x0) ; // } while (fabs(x1*x1-a)=1e-6) ; cout”x=”x1endl; 旧值算本次循环的新值 上一循环的新值成为本次循环的旧值 * 2、弦截法 f(x) x y x 1、在x轴上取两点x1和x2, 要确保x1与x2之间有且只有方程唯一的解 x1 x2 f(x1) f(x2) 2、x1与x2分别与f(x)相交于y1=f(x1)、y2=f(x2)。 3、做直线通过y1、y2与x轴交于x0点。 x0 x2 x0 4、若|f(x0)|满足给定的精度,则x0即是方程的解,否则,若f(x0)*f(x1)0,则方程的解应在x1与x0之间,令x2=x0,继续做2。同理,若f(x0)*f(x1)0,则方程的解应在x2与x0之间,令x1=x0,继续做2 ,直至满足精度为止。 * 用弦截法求方程的根。 x3-5x2+16x-80=0 #include math.h float f (float x) {return x*x*x-5*x*x+16*x-80; } void main(void ) { float x1,x2, x0; do { coutInput x1, x2\n; cinx1x2; }while (f(x1)*f(x2)0); do { x0=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); if (f(x0)*f(x1)0) x1=x0; else x2=x0; }while (fabs(f(x0))=0.0001); coutx=x0endl; } 输入x,输出f(x) 输入x1,x2,输出x0 判断输入是否合法 * 3、两分法 f(x) x y x 1、在x轴上取两点x1和x2, 要确保x1与x2之间有且只有方程唯一的解。 x1 x2 2、求出x1,x2的中点x0。 x0 x2 x0 3、若|f(x0)|满足给定的精度,则x0即是方程的解,否则,若f(x0)*f(x1)0,则方程的解应在x1与x0之间,令x2=x0,继续做2。同理,若f(x0)*f(x1)0,则方程的解应在x2与x0之间,令x1=x0,继续做2 ,直至满足精度为止。 x0=(x1+x2)/2 * 用两分法求方程的根。 x3-5x2+16x-80=0 #include math.h float f (float x) {return x*x*x-5*x*x+16*x-80; } void main(void ) { float x1,x2, x0; do { cout“Input x1, x2\n”; cinx1x2; } while (f(x1)*f(x2)0); do { x0=(x1+x2)/2; if (f(x0)*f(x1) 0) x1=x0; else x2=x0; }while (fabs(f(x0)
您可能关注的文档
- 5自由落体运动资料.ppt
- 6、1、感受可能性资料.ppt
- B超在规模化猪场的应用资料.ppt
- 6、安全防护用软件资料.ppt
- 6、第六章电子政务与安全保密资料.ppt
- 6、冬雨季施工资料.ppt
- 6、静电场中的电介质、电场的能量资料.ppt
- B级辅导语法、写作最终资料.ppt
- 6、木材面油漆工程量计算(公开课)资料.ppt
- B受体阻滞剂的临床实践资料.ppt
- 新能源汽车售后服务售后服务质量提升与用户需求满意度报告.docx
- 绿色农业实践与创新.pptx
- 2025-2026学年小学英语四年级上册(2024)人教版(PEP)(2024)教学设计合集.docx
- 2025年生态修复技术在生态环境修复项目中的政策环境与市场前景.docx
- 光伏发电行业2025年跟踪支架控制技术创新应用分析.docx
- 2025-2026学年小学英语四年级上册(2024)闽教版(三起)(2024)教学设计合集.docx
- 2025年宠物食品消费者成分认知度与产品市场推广效果研究报告.docx
- 旅游产品策略新篇章.pptx
- 2025-2026学年小学英语四年级上册(2024)人教精通版(三起)(2024)教学设计合集.docx
- 2025年职业教育就业质量与就业服务创新研究报告.docx
文档评论(0)