c语言编程非线性方程求解,c语言计算机编程三种方法求解非线性方程.doc

c语言计算机编程三种方法求解非线性方程.doc

本 科 专 业 学 年 论 文题 目非线性方程求解比较姓 名 何 娟 专 业 计算机科学技术系 班 级 08 级本科(2)班 指 导 老 师 刘 晓 娜 完成日期 2010 年 11 月 21 日计算机学年专业论文 非线性方程求解- 1 -题 目非线性方程求解比较摘 要本文给出了三种求解非线性方程的方法,分别是二分法,牛顿迭代法,割弦法。二分法巧妙地利用插值得到的点以及有根区间中点这两点处的函数值,缩小隔根区间,以期望得到更快的收敛速度。牛顿迭代法是非线性方程根的一种常见的数值方法,对于非线性方程的单重零点来说,牛顿迭代法一般具有局部二阶收敛性,但是当所求的根 X*是 FX的 M 重根时,M 是大于等于 2 的整数,此时牛顿迭代法只有一阶收敛性。弦截法是将牛顿迭代公式中用差商 F -F kx1/ ( - )代替导数 。本文给出了算法改进的具体步骤及算法流程图kx1kFx相关的数值结果也说明了方法的有效性。关 键 词 二分法;牛顿迭代法;割弦法;非线性方程计算机学年专业论文 非线性方程求解- 2 -目 录第一章 绪 论 1 第二章 求解非线性方程的三种常见算法 2 2.1 二分法 2 2.2 牛顿迭代法 3 2.3 割弦法 5 第三章 求解非线性方程的三种算法比较 6 3.1 二分法求解方法 6 3.2 牛顿迭代法求解 8 3.3 割弦法求解 9 参 考 文 献 12计算机学年专业论文 非线性方程求解- 3 -第一章 绪 论在科技飞速发展的今天,计算机已经成为我们生活中不可缺少的一部分了,在我们生活与生产中扮演越来越重要的角色,而科学计算已经成为科学计算的重要方法之一,其应用范围已渗透到所有科学领域,作为科学与工程计算的数学工具,计算方法已成为高等院校数学与应用数学,信息与计算科学,应用物理学等必修课。 在永恒变化发展的自然界与人类社会中,在研究其内部规律的各个科学领域中,更深刻、更精确地描述其内部规律的数学工具之一,就是非线性方程。非线性代数是研究大规模离散数据的运算处理与内在性状的数学科学,科学技术离不开数据处理与数据分析,因此非线性代数具有广泛的应用。无论在物理学、力学、化学、控制论等科学领域中,非线性方程屡见不鲜。就是在生命科学领域中,也是用非线性方程来描述生命过程中的能量、信息、物质等传递过程的。因此,对非线性方程的求解自然就是一个非常重要了。然而求解非线性方程有很多种方法,每种方法都有自己的优缺点。目前已有的数学软件可以帮助我们实现上机计算,基本上已经将数值分析的主要内容设计成简单的函数,只要调用这些函数进行运算便可得到数值结果。非线性代数中许多数值计算与计算机结合,才能得到更很好,更快,更精准的结果。为了将计算机与线性代数方程组更好的结合在一起,本文做了比较全面的的解说。本文比较全面的介绍了现代计算机科学与工程计算中常见的数值计算方法,对这些数值计算方法的基本理论与实际计算机实践应用进行了详细的分析,同时还简要的分析了这些数值算法的计算效果,稳定性,收敛效果,适用范围以及优劣性与特点。本文着重于化抽象为具体,引用一个具体的非线性方程用发散性的思维对其进行彻底的分析,主要有 引入一个非线性方程,分别运用三种思想进行分析,得到三种解法的根本思想; 把数学方法与数学思想提出来,并进行简洁易懂的理论证明,既突出了线性代数的理论和基本思想,又可以帮助读者对该数学方法的理解; 给出各种算法的循环思想以及流程图,展现出一个清新的框架在读者面前; 基于 c 语言的基础上,写出可执行的代码。 对各种算法得到的结果进行比较分析。计算机学年专业论文 非线性方程求解- 4 -第二章 求解非线性方程的三种常见算法2.1 二分法单变量函数方程f(x)0其中,fx在闭区间a,b上连续、单调,且 fa*fb0,000f则由牛顿法产生的迭代序列 收敛于 fx0 的根 ,且nx*x21limfk定理 2对于方程 fx0,设 f(x)在a,b上有二阶连续导数且满足下述条件(1)fafb* *xf0,当 【 -, 】时,由牛顿迭代法 (k0,1,2 ,)式产0 xx1kkfx生的序列 是以不低于二阶的收敛速度收敛到 .n *2.3 割弦法 设 , 为方程 fx0 的两个近似根。用差商得f -f / - ,kx1 kx1kx1代替牛顿迭代公式中的导数 f , 于是得到如下的迭代公式 kx - 。下面研究割弦法的几何意义1kx11kkkxff经过点( ,f )及点( ,f )两点作割线,其点斜式方程为1kx计算机学年专业论文 非线性方程求解- 7 -Yf( )- ,其零点为 X - kx1kkxxffkx把 X 用 表示即得到迭代格式,它又称为双点弦割11kkkff 1k法,需要两个初值此割线与 X 轴交点的横坐标就是新的近似值 ,所以弦截法又称为割线1kx法,如图所示。 下面三个定理为弦割法收敛定理定理 1设 f(x)在其零点 的邻域 U( , ) - , 0*x*x*x*内有二阶连续导数, ,则当 U( , )时,由割弦法式产生的0f0序列 收敛于 ,且收敛的阶为 1.618。nx*定理 2设 在区间a,b 上连续,且满足下述三点f(1)fafb0内有二阶连续导*x*xx数,fx 0 则当 U , 时,由弦割 -01k 11kkkxff计算机学年专业论文 非线性方程求解- 8 -式产生的序列 收敛于 ,且收敛的阶为 1.618。nx*第三章 求解非线性方程的三种算法比较本章主要通过具体实例比较了第二章中三种算法的优缺点,并得到相应结论,求解非线性方程 x*x*x4*x*x-100 在1,2上,x01.5 附近的解精确到0.000 000 001。3.1 二分法求解方法二分法是求方程近似根的方法中行之有效的最简单的方法,它的递推过程简单,便于计算机上实现,实现二分法的基本步骤如下。1 输入有根区间的端点 a,b 及预先给定的精度 exp ;2 计算 xab/2 ;3 若 fa*fx1e-6;0 xprintf“The root is f“, ;0运行结果 n 有根区间a,b f 的符号nxnx1 1.0,2.0 1.5 2 1.0,1.5 1.25 _3 1.25,1.5 1.375 4 1.25,1.375 1.3125 _5 1.3125,1.375 1.343 75 _6 1.3475,1.375 1.359 375 _7 1.359375,1.375 1.367 185 计算机学年专业论文 非线性方程求解- 10 -The root is 1.3652303.2 牛顿迭代法求解步骤1 给出初始近似根 及精度 exp ;0 x2 计算 -f /f ;1x03 若 | - |1e-6;0 xprintf“The root is f“, ;0运行结果The root is 1.3652313.3 割弦法求解步骤1 选择迭代初值 , 及精度 esp ;0 x12 计算 -(f * - / f -f );210 x10 x3 若| - |include define eps 0.00001 /* 容许误差 */define N 100 /* 最大迭代次数 N */float ffloat x /* 定义函数 fx */ float y;y x*x*x4*x*x-10;returny;void main float ,x1, ;0 x2int i;printf“ , “;01scanf“f,f“,xfori1;iN;i -f * - /f -f ; /* 弦截法迭代公式 */2x1101x0iffabs - eps fabsf eps /*满足精度要求输出近似根并退出*/2 printf“nRoot of equation is8.6fn“, ;2xreturn; ; /* 准备下一次迭代的初值 */0 x1 ;2计算机学年专业论文 非线性方程求解- 13 -printf“nAfter d repeat, no solved.n“,N; /* 输出无解信息 */运行结果K f kxkx0 1.0 -5.01 2.0 14.02 1.263 157 895 -1.602274 3843 1.338 827 839 -0.430 364 7444 1.366 616 395 -0.022 909 4275 1.365 211 903 -2.990 671*pow10,-46 1.365 200 01 -2.0416*pow10,-77 1.365 230 013 0.08 1.365 230 013 0.0Root of equation is 1.365230小结二分法的优点是计算简单,方法可靠,误差容易估计,只要求连续,且总是收敛的,因此对函数的性质要求较低。它的缺点是不能求偶数重根,也不能求复根,且收敛较慢。故一般不单独将其用于求根,只用其为根求得一个较好的近似值。 牛顿迭代法是多项式求根的一种效率很高的算法,收敛速度快(对单根) 。算法简单是迭代法中较好者,但是它有两个缺点第一每次只能求出一个 根,求其它根时若采用降次处理又会产生精度降低的问题。第二有时会遇到由于初始点选择不当而使算法失效。,牛法和割弦法都是先将 fx线性化,然后求根,但线性化的方式不同从分析的角度说,牛顿法是在根 *x 邻近点处的切线函数作为 fx的近似,而割弦法是在* x 邻近用 fx的一次插值函数作为 fx的近似函数,它们本质的区别在于,牛顿迭代法在计算 时,只用到前一步的值 ,弦截法需要用两1k kx个猜测值 , , 因此使用这种方法必须先给出两个初始值 , 。1k 10根据以上三种方法的优缺点,我们在使用非线性方程求根时,应根据实际方程选出一种或者多种方法进行综合求解,以便快速,便捷的求出最佳精确值。计算机学年专业论文 非线性方程求解- 14 -参 考 文 献1 郭曦娟,Jacobi 和 Gauss-Seidel 迭代法收敛性的判定【J】,东北重型机械学院学报,199519(1) 。2 郝福华,侯建强,孟晋忠,迭代法在编程中的应用【J】,山西水利科技,1995109(5) 。3 赵艳霞,非线性方程求根的迭代法研究【J】,鸡西大学学报。20088(2) 。4 黄忆潭,王德明,割线法向牛顿法德过度格式【J】 ,哈尔滨工业大学学报,199527(4) 。5 吴新元,解非线性方程的二阶收敛指数迭代法【J】,计算方法,199820(4) 。6 程小力,牛顿法的收敛性【J】,浙江工业大学学报,199725(3) 。7 倪攸颖,求解非线性方程的一种半隐式迭代法【J】,哈尔滨理工大学学报,19983(2) 。8 高虹倪,曹泽阳,一种新的非线性方法的求根迭代法【J】,空军工程大学学报,20023(2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最近用到这个强大的工具 PhysicsEditor (转)

今天收到PhysicsEditor作者发过来的license key,所以顺便把PhysicsEditor也尝试了一下。主要是尝试将PhysicsEditor与cocos2dx,box2d结合开发的一些步骤。之前大概网络检索了一下,知道PhysicsEditor的功能其实很简单。一句话就是给图片的边缘…

浅谈块级元素和内联元素的嵌套规则

1. 替换和不可替换元素 从元素本身的特点来讲&#xff0c;可以分为替换和不可替换元素。 a) 替换元素 替换元素就是浏览器根据元素的标签和属性&#xff0c;来决定元素的具体显示内容。 例如浏览器会根据<img>标签的src属性的值来读取图片信息并显示出来&#xff0c;而如…

如何更新Chrome

在浏览器的地址栏中输入chrome://help即可进行自动更新&#xff0c;如下图&#xff1a;

c语言用指针实现打开和关闭文件,我用rewind函数没把指针直到开始,关闭文件然后打开就行。帮忙看看...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼高手啊&#xff0c;我试了&#xff0c;结果是回到文件头了&#xff0c;把123覆盖了&#xff0c;为ABC 但我这个程序就能直接不关闭文件而用rewind函数到开头&#xff0c;你帮忙看看&#xff0c; //二进制文件的输入输出--数据块的读…

最佳适应算法模拟内存分配

最佳适应算法 从全部空闲区中找出能满足作业要求的&#xff0c;且大小最小的空闲分区&#xff0c;这种方法能使碎片尽量小。 问题描述 Given five memory partitions of 100 KB, 500 KB, 200 KB, 300 KB, and 600 KB (in order), how would each of the first-fit, best-fit…

单片机c语言 i%3c%3c1,单片机C语言作业及上机习题及答案

《单片机C语言作业及上机习题及答案》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《单片机C语言作业及上机习题及答案(37页珍藏版)》请在人人文库网上搜索。1、第一次课熟悉winTC编译环境、熟悉C语言程序结构1.使用C 语言编译环境&#xff0c;输入下面的源程序。将你…

基于顺序搜索的动态分区分配算法模拟内存动态分配--最佳适应算法(best fit,BF)

BF算法、男朋友算法&#xff0c;哈哈 要实现动态分区分配&#xff0c;需要考虑三个方面的问题。分别是数据结构、分区分配算法、分区的分配与回收操作。 首数据结构 这里我们使用的是空闲分区链&#xff0c;采用双向链表表示空闲分区。 具体实现如下&#xff1a; typedef …

我也要谈谈大型网站架构之系列(4)——分布式中的异步通信

我们知道在面向对象编程中&#xff0c;总会想着各种办法来实现代码的解耦&#xff0c;从而让项目中的各种人员面对自己熟悉的业务进行开发&#xff0c; 做到术业有专攻&#xff0c;比如大家非常熟悉的三层架构&#xff0c;MVC&#xff0c;MVP以及MVVM模式&#xff0c;让前端设计…

node模块函数图解

已截图方式记录模块信息&#xff1a; HTTP模块&#xff1a; 对于网络返回处理状态封装了很多种&#xff0c;我已截图展现 以上状态也是在http协议中包含的状态。 http函数&#xff1a; path模块&#xff1a; 转载于:https://www.cnblogs.com/kuailingmin/p/4547538.html

android 心跳效果动画,Android实现心跳的效果

最近再做一个教育类的项目。在做一些学习工具的时候&#xff0c;美工提出了一些要求&#xff0c;大致如下&#xff1a;其实实现过程也不难&#xff0c;大致就是对一个视图控件添加一个圆形的背景&#xff0c;然后该视图进行动画处理&#xff0c;膨胀的同时&#xff0c;透明度增…

Oracle超出最大连接数问题及解决

用过Oracle的应该都熟悉如何查看和设置Oracle数据库的最大连接数。这里就再啰嗦一遍。 查看当前的连接数&#xff0c;可以用select count(*) from v$process;设置的最大连接数&#xff08;默认值为150&#xff09;select value from v$parameter where name ‘processes’;修改…

操作系统上机作业--使用系统调用实现mycat

mycat.c的功能与系统cat程序相同mycat将指定的文件内容输出到屏幕&#xff0c;例子如下&#xff1a;要求使用系统调用open/read/write/close实现 $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/u…

GCDAynscSocket简单使用-客户端

这是一篇介绍GCDAynscSocket客户端简单使用的文章&#xff08;服务端后续添加&#xff09; 背景&#xff1a;在这篇文章之前我对socket的了解仅限于知道有TCP、UDP两种方式&#xff0c;使用抓包工具时甚至看不懂抓包数据&#xff08;惭愧...&#xff09;&#xff0c;所以本文介…

微信android版字体,微信炫彩字下载-微信七彩字体 安卓版v1.6.2-PC6安卓网

微信七彩字体一款方便的手机字体更换软件&#xff0c;微信炫彩字软件集合了上百款优质中文美化字体&#xff0c;微信七彩发光字里有可爱的喵呜体、卡通体&#xff0c;清秀的静蕾体等多种字体。软件介绍微信、qq上最好用、最个性的聊天字体应用&#xff0c;让你的聊天与众不同&a…

Android SQLite 数据库 增删改查操作

Android SQLite 数据库 增删改查操作 转载▼一、使用嵌入式关系型SQLite数据库存储数据在Android平台上&#xff0c;集成了一个嵌入式关系型数据库——SQLite&#xff0c;SQLite3支持NULL、INTEGER、REAL&#xff08;浮点数字&#xff09;、TEXT(字符串文本)和BLOB(二进制对象…

SIT与UAT的分别

在企业级软件的测试过程中&#xff0c;经常会划分为三个阶段——单元测试&#xff0c;SIT和UAT&#xff0c;如果开发人员足够&#xff0c;通常还会在SIT之前引入代码审查机制&#xff08;Code Review&#xff09;来保证软件符合客户需求且流程正确。下面简单介绍一下SIT和UAT的…

操作系统上机作业--使用系统调用实现mycp

mycp.c的功能与系统cp程序相同将源文件复制到目标文件&#xff0c;例子如下&#xff1a;要求使用系统调用open/read/write/close实现 $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nolo…

android自动化持续集成,基于持续集成的Android自动化测试.pdf

基于持续集成的Android自动化测试.pdf2015 年 第24 卷 第 5 期 计 算 机 系 统 应 用①基于持续集成的Android 自动化测试王 焱, 张 征(华中科技大学 自动化学院, 武汉 430074)摘 要: Android 测试方面的研究大多集中在测试工具和框架的实现上, 有些工具和框架可以实现测试用例…

Csharp 高级编程 C7.1.2

第七章 代理&#xff08;1&#xff09; 一、代理要声明 二、代理使用步骤 声明代理初始化代理&#xff08;使用 实例的方法名 作为参数&#xff09;使用代理代码示例&#xff1a; /*C7.1.2*/ using System; using System.Collections.Generic; using System.Linq; using System…

操作系统上机作业--实现mysys(多进程)

mysys.c: 实现函数mysys&#xff0c;用于执行一个系统命令&#xff0c;要求如下mysys的功能与系统函数system相同&#xff0c;要求用进程管理相关系统调用自己实现一遍使用fork/exec/wait系统调用实现mysys不能通过调用系统函数system实现mysys 测试程序 #include <stdio.…