非线性方程求解算法的程序设计及比对_第1页
非线性方程求解算法的程序设计及比对_第2页
非线性方程求解算法的程序设计及比对_第3页
非线性方程求解算法的程序设计及比对_第4页
非线性方程求解算法的程序设计及比对_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——非线性方程求解算法的程序设计及比对题目:非线性方程求解算法的程序设计及比对

摘要

由于五次及其以上代数方程式大多不能用代数公式求解非线性方程的解.或者求解十分繁杂。而在工程和科学技术中大量问题往往归结为求解非线性方程式问题.所以需要研究非线性方程的数值解法的问题是十分重要.来适应我们社会的需要.

本课题主要介绍非线性方程的数值解法是直接从方程出发,逐步缩小根的存在区间,或逐步将根的近似值确切化,直到满足问题对精度的要求,主要的方法有二分法,迭代法,牛顿法,弦截法等。并写出这几种非线性方程的数值解法的算法和程序及其优缺点和计算条件.

关键词二分法;牛顿迭代法;弦截法法;程序框架图;C语言编程

目录

引言1第一章非线性方程求解算法2

§1.1二分法2

§1.1.1二分法的简介2§1.1.2二分法的原理2§1.1.3二分法的算法3§1.2不动点迭代法4

§1.2.1不动点迭代法的简介4§1.2.2不动点迭代法的几何意义4§1.2.3不动点迭代法的算法5§1.3牛顿迭代法6

§1.3.1牛顿迭代法的简介6§1.3.2牛顿迭代法的原理6§1.3.3牛顿迭代法的算法7§1.4弦截法8

§1.4.1弦截法的简介8§1.4.2弦截法的原理8§1.4.3弦截法的算法9

其次章非线性方程求解的C语言算法对比11

§2.1C语言求解非线性方程的根11

§2.1.1构造非线性方程迭代公式11§2.1.2计算迭代公式11§2.2C语言算法比较分析14§1.2不动点迭代法

§1.2.1不动点迭代法的简介

迭代法的基本思想是逐次迫近,即首先给出方程的根的一个近似初始值,然后反复使用迭代公式校正这个初始值,逐步确切化,直到满足预先给出的精度要求为止.首先设法把方程f(x)?0化为以下等价形式(g(x)称为迭代函数)

x?g(x)(1-1)

然后按式(1-1)构造迭代公式

在有根区间?a,b?上取一点x0作为方程f(x)?0根的初始近似根,代入式(1-2)右端,求得x1?g(x0),再把x1作为预计值,进一步得到x2?g(x1),如此反复进行下去,得到一个近似根的序列

x0,x1,x2x3?xn,?xk?1?g(xk)(k?0,1,2,3?n)(1-2)

假使迭代序列收敛于x,则当g(x)连续时,便是方程f(x)?0的根.

对预先给定的精度要求??0,只要某个k是满足xk?xk?1??,即可终止计算并取x?xk.

**§1.2.2不动点迭代法的几何意义

用迭代法求方程x4?2x2?x?3?0在区间?1,2?内的实根.可以写出一下下几种迭代格式,用Mathematica画出它们的图形,以此来观测它们的几何意义.

x??1(x)?(3?x?2x)yy1?423?x?2x21/4

1-2x-112y2?x-1-2

图1.3迭代几何图

4

y1?2x?4?1y1x-112y?x-12x??2(x)?x?4?1图1.4迭代几何图

x??3(x)?x?2x?3

42yy1?x?2x?3-242642-1-21xy2?x图1.5迭代几何图

§1.2.3不动点迭代法的算法

由不动点迭代法程序框架图(见附录A)写出一下迭代算法给定初始近似值x0,求x?g?x?的解.

输入:初始近似值x0;容许误差TOL;最大迭代次数Nmax.输出:近似解x或失败信息.

Step1Setk=1;

Step2While(k?Nmax);dosteps3-6

Step3Setx?g(x0);/*计算x*/

Step4Ifx?x0

开始输入x0,x1,?,N1?kyf(x0)?0?x0?x2nf(x1)?0?yx1?x2

k+1?kx1?x0x2?x1f(x1)?f(x0)f(x2)?f(x1)

nf(x1)?f(x0)?0?ynx1?f(x1)f(x1)?f(x0)(x1?x0)?x2yx2?x1???

ynk法比较.

下面用弦截法的C语言的程序来(程序详见附录B弦截法C语言程序)计算(2-4)式的在?1,2?的根,误差度在0.0001,初始迭代值为x0?1,x1?2,计算把结果写在表2-4.计算完成后与x进行比较,来得出算法的正确与否.

表2-4弦截法的计算结果

kxk*xk?xk?1备注1.f?(x)?12.xk?xk?1eps);/*判断是否达到精度要求,若没有达到,继续循环*/printf(\最终结果Therootis\\n\printf(\}

牛顿迭代法C语言程序

#include#include

doublejs1(doublex){doublej;

j=pow(x,4)+2*pow(x,2)-x-3;returnj;}

doublejs2(doublec){

doublej;

j=4*pow(c,3)+4*c-1;returnj;}

voidmain(){

doublex1,x,f,f1,h;intk=0;

printf(\scanf(\do

{x=x1;k++;

f=js1(x1);

19

f1=js2(x1);x1=x-f/f1;h=fabs(x1-x);

printf(\}while(fabs(x1-x)>1e-4);printf(\最终结果\\n\

printf(\}

牛顿迭代法C语言程序

#include

#defineeps0.0001/*容许误差*/#defineN100/*最大迭代次数N*/

doublef(doublex)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论