欢迎来到天天文库
浏览记录
ID:11226022
大小:99.53 KB
页数:11页
时间:2018-07-10
《非线性方程组牛顿迭代法(1)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、华中师范大学课程结业论文题目:非线性方程组牛顿法及MATLAB程序院系:数学与统计学学院专业:数学与应用数学年级:2014级课堂名称:数值分析(1)实验学生姓名:杨帅学号:20142126432016年6月18非线性方程组牛顿法及其MATLAB程序〔摘要〕学了《数值分析》这门课,了解到非线性方程的数值解法有:对分区间法、简单迭代法、Aitken-Steffensen加速法、Newton迭代法、正割法等,自然就会想到非线性方程组的数值解法有哪些呢?和非线性方程的数值解法有哪些不不同呢?在研究非线性方程组的数值解法之前,首先要给
2、非线性方程组下一个合理定义;n个变量n个方程(n>1)的方程组表示为(其中i=1,2...,n),若中至少有一个是非线性函数,则称上述的表示为非线性方程组。在R中记,,其中记且。若存在尣∈D,使ƒ(尣)=0,则称尣为非线性方程组的解。上述方程组可能有一个解或多个解,也可能有无穷多解或无解。对非线性方程组解的存在性的研究远不如线性方程组那样成熟,现有的解法也不象线性方程组那样有效。除极特殊的方程外,一般不能用直接方法求得精确解,目前主要采用迭代法求近似解。根据不同思想构造收敛于解尣的迭代序列{尣}(k=0,1,…),即可得到求
3、解非线性方程组的各种迭代法;但研究数学问题的时候,一般是由简单到复杂,由特殊到一般。因此要在研究非线性方程组牛顿解法的时候,首先要探究非线性方程的牛顿解法。1.1求解线性方程组的牛顿法及其MATAB程序1.1.1程序设计思路输入的量:初始值、近似根的误差限tol,近似根的函数值得误差限ftol,迭代次数的最大值gxmax、函数fnq(x)=及其导数dfnq(x)=f’(x)。输出的量:迭代序列{}、迭代k次得到的迭代值(迭代次数超过gxmax时,运行后输出信息'请注意:迭代次数超过给定的最大值gxmax')、相邻两次迭代的偏
4、差piancha=
5、
6、和它的偏差的相对误差xdpiancha=
7、
8、/
9、
10、的值。1.1.2具体操作现提供名为newtonqx.m的M文件:function[k,xk,yk,piancha,xdpiancha]=newtonqx(x0,tol,ftol,gxmax)x(1)=x0;fori=1:gxmaxx(i+1)=x(i)-fnq(x(i))/(dfnq(x(i))+eps);piancha=abs(x(i+1)-x(i));xdpiancha=piancha/(abs(x(i+1))+eps);i=i+1;xk=x(i);
11、yk=fnq(x(i));[(i-1)xkykpianchaxdpiancha]if(abs(yk)12、(xdpianchagxmaxdisp('请注意:迭代次数超过给定的最大值gxmax。')return;end[(i-1),xk,yk,piancha,xdpiancha]';1.1.3例题分析用牛顿法求解方程2x^3-3x^2+1=0在=-0.4和0.9的13、近似根,要求精度=10^(-3).然后判断此方法分别在方程的根=-0.5和1处的收敛速度.(1),先求方程的近似根.在MATLAB工作窗口输入程序>>[k,xk,yk,piancha,xdpiancha]=newtonqx(-0.4,0.001,0.001,100)运行后输出初始值=-0.4的迭代结果如表所示.k14、15、16、17、/18、19、1-0.5167-0.07670.11670.22582-0.5004-0.00160.01630.03263-0.5000-0.00000.00040.0007迭代次数k=3,根的近似值=-0.50020、,它的函数值=-1.759e-013,偏差piancha=1.712e-007和相对误差xdpiancha=3.423e-007如果将-0.4改作0.9,则运行后输出初始值=-0.4的迭代结果为k=7;piancha=7.290e-004;xdpiancha=7.295e-004;=0.999;=1.590e-006.(2),再讨论收敛速度比较初始值分别是=-0.4和0.9的两组结果,在=-0.4处迭代3次就得到单根=-0.5的近似值=-0.500;而在x0=0.9处迭代7次才得到二重根=1的近似值=0.999.可见,牛顿切21、线迭代法在单根处的迭代速度比二重根处的迭代速度快很多.这正如前面讨论的结果一样,即若是f(x)=0的单根,则牛顿切线法是平方收敛的;若是f(x)=0的二重根,则牛顿切线法是线性收敛的;2.1,求解二元非线性方程组的牛顿法及其MATLAB程序2.1.1程序设计思路:输入的量:初始值X=[],
12、(xdpianchagxmaxdisp('请注意:迭代次数超过给定的最大值gxmax。')return;end[(i-1),xk,yk,piancha,xdpiancha]';1.1.3例题分析用牛顿法求解方程2x^3-3x^2+1=0在=-0.4和0.9的
13、近似根,要求精度=10^(-3).然后判断此方法分别在方程的根=-0.5和1处的收敛速度.(1),先求方程的近似根.在MATLAB工作窗口输入程序>>[k,xk,yk,piancha,xdpiancha]=newtonqx(-0.4,0.001,0.001,100)运行后输出初始值=-0.4的迭代结果如表所示.k
14、
15、
16、
17、/
18、
19、1-0.5167-0.07670.11670.22582-0.5004-0.00160.01630.03263-0.5000-0.00000.00040.0007迭代次数k=3,根的近似值=-0.500
20、,它的函数值=-1.759e-013,偏差piancha=1.712e-007和相对误差xdpiancha=3.423e-007如果将-0.4改作0.9,则运行后输出初始值=-0.4的迭代结果为k=7;piancha=7.290e-004;xdpiancha=7.295e-004;=0.999;=1.590e-006.(2),再讨论收敛速度比较初始值分别是=-0.4和0.9的两组结果,在=-0.4处迭代3次就得到单根=-0.5的近似值=-0.500;而在x0=0.9处迭代7次才得到二重根=1的近似值=0.999.可见,牛顿切
21、线迭代法在单根处的迭代速度比二重根处的迭代速度快很多.这正如前面讨论的结果一样,即若是f(x)=0的单根,则牛顿切线法是平方收敛的;若是f(x)=0的二重根,则牛顿切线法是线性收敛的;2.1,求解二元非线性方程组的牛顿法及其MATLAB程序2.1.1程序设计思路:输入的量:初始值X=[],
此文档下载收益归作者所有