求代数方程的近似根(解)

合集下载

第2章方程的近似解法

第2章方程的近似解法

第二章 方程求根在许多实际问题中,常常会遇到方程f(x)=0求解的问题。

当f(x)为一次多项式时,f(x)=0称为线性方程,否则称为非线性方程。

对于非线性方程,由于f(x)的多样性,求其根尚无一般的解析方法可以使用,因此研究非线性方程的数值解法是十分必要的。

法、迭代法、牛顿法及割线法。

这些方法均是知道根的初始近似值后,进一步把根精确化,直到达到所要求的 精度为止。

也即求非线性方程根的数值方法。

第一节 第一节 增值寻根法与二分法2.1.1 增值寻根法设非线性方程f(x)=0的根为*x ,增值寻根法的基本思想是,从初始值0x 开始,按规定 的一个初始步长h 来增值。

令 1n x +=n x +h(n=0,1,2,…),同时计算f(1n x +)。

在增值的计算过程中可能遇到三种情形:(1) f(1n x +)=0,此时1n x +即为方 程的根*x 。

(2) f(n x )和f(1n x +)同符号。

这说明区间[n x , 1n x +]内无根。

(3) f(n x )和f(1n x +)异号,f(n x )·f(1n x +)<0此时当f(x)在区间[n x , 1n x +]上连续时,方程f(x)=0在[n x , 1n x +] 一定有根。

也即我们用增值寻根法找到了方程根的存在区间,n x 或1n x +均可以视为根的近似值。

下一步就是设法在该区间内寻找根 *x 更精确的近似值,为此再用增值寻根法 把n x 作为新的初始近似值,同时把步长缩小,例如选新步长1100h h =,这 样会得到区间长度更小的有根区间,从而也得到使f(x)n x ,作为*x 更 精确的近似值,若精度不够,可重复使用增值寻根法,直到有根区间的长度|1n x +-n x |<ε(ε为所要求的精度)为止。

此时f(n x )或f(1n x +)就可近似认为是零。

n x 或1n x +就是满足精度的方程的近似根(如图2-1).2—1例1 用增值寻根法求方程f(x)=324x x +-10=0的有根区间。

(整理)matlab实例教程-比较实用.

(整理)matlab实例教程-比较实用.

实验一特殊函数与图形一、问题背景与实验目的二、相关函数(命令)及简介三、实验内容四、自己动手一、问题背景与实验目的著名的Riemann函数大家都很熟悉了,但是关于它的图像你是否清楚呢除了最上面那几点,其他都很难画吧你想不想看看下面那些“挤在一起”的点是怎样分布的呢还有几何中的马鞍面、单叶双曲面等是怎样由直线生成的,是不是也想目睹一下呢这些,都离不开绘图.实际上绘图一直是数学中的一种重要手段,借助图形,往往可以化繁为简,使抽象的对象得到明白直观的体现.比如函数的基本性质,一个图形常可以使之一目了然,非常有效.它虽不能代替严格的分析与证明,但在问题的研究过程中,可以帮助研究人员节约相当一部分精力.此外,它还可以使计算、证明、建模等的结果得到更明白易懂的表现,有时,这比科学论证更有说服力.同时,数学的教学与学习过程也离不开绘图.借助直观的图形,常可以使初学者更容易接受新知识.如数学分析中有不少函数,其解析式着实让人望而生畏,即使对其性质作了详尽的分析,还是感到难明就里;但如果能看到它的图形,再配合理论分析,则问题可以迎刃而解.又如在几何的学习中,会遇到大量的曲线与曲面,也离不开图形的配合.传统的手工作图,往往费力耗时,效果也不尽理想.计算机恰恰弥补了这个不足,使你可以方便地指定各种视角、比例、明暗,从各个角度进行观察.本实验通过对函数的图形表示和几个曲面(线)图形的介绍,一方面展示它们的特点,另一方面,也将就Matlab软件的作图功能作一个简单介绍.大家将会看到,Matlab 的作图功能非常强大.二、相关函数(命令)及简介1.平面作图函数:plot,其基本调用形式:plot(x,y,s)以x作为横坐标,y作为纵坐标.s是图形显示属性的设置选项.例如:x=-pi:pi/10:pi;y=sin(x);plot(x,y,'--rh','linewidth',2,'markeredgecolor','b','markerfacecolor','g')图1在使用函数plot时,应当注意到当两个输入量同为向量时,向量x与y必须维数相同,而且必须同是行向量或者同是列向量.绘图时,可以制定标记的颜色和大小,也可以用图形属性制定其他线条特征,这些属性包括:linewidth 指定线条的粗细.markeredgecolor 指定标记的边缘色markerfacecolor 指定标记表面的颜色.markersize 指定标记的大小.若在一个坐标系中画几个函数,则plot的调用格式如下:plot(x1,y1,s1,x2,y2,s2,……)2.空间曲线作图函数:plot3,它与plot相比,只是多了一个维数而已.其调用格式如下:plot3(x,y,z,s).例如:x=0:pi/30:20*pi;y=sin(x);z=cos(x);plot3(x,y,z)得到三维螺旋线:图23.空间曲面作图函数:(1)mesh函数.绘制彩色网格面图形.调用格式:mesh(z),mesh(x,y,z)和mesh(x,y,z,c).其中,mesh(x,y,z,c)画出颜色由c指定的三维网格图.若x、y均为向量,则length(x)=n,length(y)=m,[m,n]=size(z).(2)surf在矩形区域内显示三维带阴影曲面图.调用格式与mesh类似.(3)ezmesh用符号函数作三维曲面网格图.调用格式:ezmesh(x,y,z)其中x = x(s,t), y = y(s,t),z = z(s,t).画图区域默认为: -2*pi < s < 2*pi 且-2*pi < t < 2*pi.或者用格式:ezmesh(x,y,z,[smin,smax,tmin,tmax])(4)ezsurf用符号函数作三维曲面图.调用格式与ezmesh类似.(5)sphere画球体命令.4.meshgrid,调用格式:[x,y]=meshgrid(m,n),这里的m,n为给定的向量,可以定义网格划分区域和划分方法.矩阵x和矩阵y是网格划分后的数据矩阵.5.图像的修饰与其他函数:(1)axis equal 控制各个坐标轴的分度,使其相等;(2)colormap设置绘图颜色.调用格式:colormap([r g b])其中r,g,b都是0-1之间的数.或者用格式:colormap(s)s颜色映像相应的颜色系颜色映像相应的颜色系autumn红黄色系hsv色调饱和色系gray线性灰色系hot黑红黄白色系cool青和洋红色系pink柔和色系(3(4)find找出符合条件的元素在数组中的位置.调用格式:y=find(条件)例如:输入:a=[4 5 78 121 4 665 225 4 1];b=find(a>7)输出: b =3 4 6 7三、实验内容数学分析中,特别是积分部分,我们接触了不少有趣的函数,由于其中有的不是一一对应的,用上面的方法无法画出它们的图像,这时就只能用参数了.此外还有些图形只能用参数来画,比如空间曲线,在计算机上不接受“两个曲面的交线”这种表示,所以也只能用参数来实现.用参数方式作图的关键在于找出合适的参数表示,尤其是不能有奇点,最好也不要用到开方.所以要找的参数最好是有几何意义的.当然这也不可一概而论,需要多积累经验.1.利用函数plot在一个坐标系中画以下几个函数图像,要求采用不同颜色、不同线形、不同的符号标记.函数为:.程序如下:t=0:pi/20:2*pi;x=sin(t);y=cos(t);z=sin(2*t);plot(t, x, '--k*', t, y, '-rs', t, z, ':bo')图像如下:图32.绘制类似田螺线的一条三维螺线(方程自己设计).程序如下:t=0:.1:30;x=2*(cos(t)+t.*sin(t));y=2*(sin(t)-t.*cos(t));z=*t;plot3(x,y,-z) %取–z 主要是为了画图看起来更清楚axis equal图像如下:图43.利用函数,绘制一个墨西哥帽子的图形.程序如下:[a,b]=meshgrid(-8:.5:8); %先生成一个网格c=sqrt(a.^2+b.^2)+eps;z=sin(c)./c;mesh(a,b,z)axis square图像如下:图5思考:这里的 eps 是什么其作用是什么4.利用surf绘制马鞍面图形(函数为:).程序如下:[x,y]=meshgrid(-25:1:25,-25:1:25);z=x.^2/9-y.^2/4;surf(x,y,z)title('马鞍面')grid off图像如下:图65.分别用ezmesh和ezsurf各绘制一个圆环面,尝试将两个圆环面放在一个图形界面内,观察它们有什么不同之处.提示:圆环面的方程为:,而圆环面的参数方程为:程序参见附录1.图像如下:图76.绘制黎曼函数图形,加深对黎曼函数的理解.说明:黎曼函数的定义为程序参见附录2.图像如下:图8四、自己动手1.作出下图所示的三维图形:图9提示:图形为圆环面和球面的组合.2.作出下图所示的墨西哥帽子及其剪裁图形:图103.画出球面、椭球面、双叶双曲面、单叶双曲面.4.若要求田螺线的一条轴截面的曲边是一条抛物线:时.试重新设计田螺线的参数方程,并画出该田螺线.5.作出下图所示的马鞍面(颜色为灰色,并有一个标题:“马鞍面”):图116.绘制图8所示的黎曼函数图形,要求分母的最大值的数值由键盘输入(提示:使用input语句).回目录下一页实验二定积分的近似计算一、问题背景与实验目的二、相关函数(命令)及简介三、实验内容1.矩形法2.梯形法3.抛物线法4. 直接应用Matlab命令计算结果四、自己动手一、问题背景与实验目的利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分.本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法.对于定积分的近似数值计算,Matlab有专门函数可用.二、相关函数(命令)及简介1.sum(a):求数组a的和.2.format long:长格式,即屏幕显示15位有效数字.(注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度).3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值.4.quad():抛物线法求数值积分.格式: quad(fun,a,b) ,注意此处的fun是函数,并且为数值形式的,所以使用*、/、^等运算时要在其前加上小数点,即 .*、./、.^等.例:Q = quad('1./(x.^3-2*x-5)',0,2);5.trapz():梯形法求数值积分.格式:trapz(x,y)其中x为带有步长的积分区间;y为数值形式的运算(相当于上面介绍的函数fun)例:计算x=0:pi/100:pi;y=sin(x);trapz(x,y)6.dblquad():抛物线法求二重数值积分.格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递.例1:Q1 = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)顺便计算下面的Q2,通过计算,比较Q1 与Q2结果(或加上手工验算),找出积分变量x、y的上下限的函数代入方法.Q2 = dblquad(inline('y*sin(x)'), 0, pi, pi, 2*pi)例2:Q3 = dblquad(@integrnd, pi, 2*pi, 0, pi)这时必须存在一个函数文件:function z = integrnd(x, y)z = y*sin(x);7.fprintf(文件地址,格式,写入的变量):把数据写入指定文件.例:x = 0:.1:1;y = [x; exp(x)];fid = fopen('','w'); %打开文件fprintf(fid,'% %\n',y); %写入fclose(fid) %关闭文件8.syms 变量1 变量2 …:定义变量为符号.9.sym('表达式'):将表达式定义为符号.解释:Matlab中的符号运算事实上是借用了Maple的软件包,所以当在Matlab中要对符号进行运算时,必须先把要用到的变量定义为符号.10.int(f,v,a,b):求f关于v积分,积分区间由a到b.11.subs(f,'x',a):将 a 的值赋给符号表达式 f 中的 x,并计算出值.若简单地使用subs(f),则将f的所有符号变量用可能的数值代入,并计算出值.三、实验内容1.矩形法根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度.针对不同的取法,计算结果会有不同,我们以为例(取),(1)左点法:对等分区间,在区间上取左端点,即取,,理论值,此时计算的相对误差(2)右点法:同(1)中划分区间,在区间上取右端点,即取,,理论值,此时计算的相对误差(3)中点法:同(1)中划分区间,在区间上取中点,即取,,理论值,此时计算的相对误差如果在分割的每个小区间上采用一次或二次多项式来近似代替被积函数,那么可以期望得到比矩形法效果好得多的近似计算公式.下面介绍的梯形法和抛物线法就是这一指导思想的产物.2.梯形法等分区间,相应函数值为().曲线上相应的点为()将曲线的每一段弧用过点,的弦(线性函数)来代替,这使得每个上的曲边梯形成为真正的梯形,其面积为,.于是各个小梯形面积之和就是曲边梯形面积的近似值,,即,称此式为梯形公式.仍用的近似计算为例,取,,理论值,此时计算的相对误差很显然,这个误差要比简单的矩形左点法和右点法的计算误差小得多.3.抛物线法由梯形法求近似值,当为凹曲线时,它就偏小;当为凸曲线时,它就偏大.若每段改用与它凸性相接近的抛物线来近似时,就可减少上述缺点,这就是抛物线法.将积分区间作等分,分点依次为,,对应函数值为(),曲线上相应点为().现把区间上的曲线段用通过三点,,的抛物线来近似代替,然后求函数从到的定积分:由于,代入上式整理后得同样也有……将这个积分相加即得原来所要计算的定积分的近似值:,即这就是抛物线法公式,也称为辛卜生(Simpson)公式.仍用的近似计算为例,取,=,理论值,此时计算的相对误差4. 直接应用Matlab命令计算结果(1)数值计算方法1:int('1/(1+x^2)','x',0,1) (符号求积分)方法2:quad('1./(1+x.^2)',0,1) (抛物线法求数值积分)方法3:x=0::1;y=1./(1+x.^2);trapz(x,y) (梯形法求数值积分)(2)数值计算方法1:int(int('x+y^2','y',-1,1),'x',0,2) (符号求积分)方法2:dblquad(inline('x+y^2'),0,2,-1,1) (抛物线法二重数值积分)四、自己动手1.实现实验内容中的例子,即分别采用矩形法、梯形法、抛物线法计算,取,并比较三种方法的精确程度.2.分别用梯形法与抛物线法,计算,取.并尝试直接使用函数trapz()、quad()进行计算求解,比较结果的差异.3.试计算定积分.(注意:可以运用trapz()、quad()或附录程序求解吗为什么)4.将的近似计算结果与Matlab中各命令的计算结果相比较,试猜测Matlab中的数值积分命令最可能采用了哪一种近似计算方法并找出其他例子支持你的观点.5.通过整个实验内容及练习,你能否作出一些理论上的小结,即针对什么类型的函数(具有某种单调特性或凹凸特性),用某种近似计算方法所得结果更接近于实际值6.学习的程序设计方法,尝试用函数 sum 改写附录1和附录3的程序,避免for 循环.上一页回目录下一页实验三求代数方程的近似根(解)一、问题背景和实验目的二、相关函数(命令)及简介三、实验内容四、自己动手一、问题背景和实验目的求代数方程的根是最常见的数学问题之一(这里称为代数方程,主要是想和后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当是一次多项式时,称为线性方程,否则称之为非线性方程.当是非线性方程时,由于的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间,或给出某根的近似值.在实际问题抽象出的数学模型中,可以根据物理背景确定;也可根据的草图等方法确定,还可用对分法、迭代法以及牛顿切线法大致确定根的分布情况.通过本实验希望你能:1. 了解对分法、迭代法、牛顿切线法求方程近似根的基本过程;2. 求代数方程(组)的解.二、相关函数(命令)及简介1.abs( ):求绝对值函数.2.diff(f):对独立变量求微分,f 为符号表达式.diff(f, 'a'):对变量a求微分,f 为符号表达式.diff(f, 'a', n):对变量 a 求 n 次微分,f 为符号表达式.例如:syms x tdiff(sin(x^2)*t^6, 't', 6)ans=720*sin(x^2)3.roots([c(1), c(2), …, c(n+1)]):求解多项式的所有根.例如:求解:.p = [1 -6 -72 -27];r = roots(p)r =4.solve('表达式'):求表达式的解.solve('2*sin(x)=1')ans =1/6*pi5.linsolve(A, b):求线性方程组 A*x=b 的解.例如:A= [9 0; -1 8]; b=[1; 2];linsolve(A, b)ans=[ 1/9][19/72]6.fzero(fun, x0):在x0附近求fun 的解.其中fun为一个定义的函数,用“@函数名”方式进行调用.例如:fzero(@sin, 3)ans=7.subs(f, 'x ', a):将 a 的值赋给符号表达式 f 中的 x,并计算出值.例如:subs('x^2 ', 'x ', 2)ans = 4三、实验内容首先,我们介绍几种与求根有关的方法:1.对分法对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根.设在上连续,,即,或,.则根据连续函数的介值定理,在内至少存在一点,使.下面的方法可以求出该根:(1)令,计算;(2)若,则是的根,停止计算,输出结果.若,则令,,若,则令,;.……,有、以及相应的.(3) 若 (为预先给定的精度要求),退出计算,输出结果;反之,返回(1),重复(1),(2),(3).以上方法可得到每次缩小一半的区间序列,在中含有方程的根.当区间长很小时,取其中点为根的近似值,显然有以上公式可用于估计对分次数.分析以上过程不难知道,对分法的收敛速度与公比为的等比级数相同.由于,可知大约对分10次,近似根的精度可提高三位小数.对分法的收敛速度较慢,它常用来试探实根的分布区间,或求根的近似值.2. 迭代法1)迭代法的基本思想:由方程构造一个等价方程从某个近似根出发,令,可得序列,这种方法称为迭代法.若收敛,即,只要连续,有即可知,的极限是的根,也就是的根.当然,若发散,迭代法就失败.以下给出迭代过程收敛的一些判别方法:定义:如果根的某个邻域中,使对任意的,迭代过程,收敛,则称迭代过程在附近局部收敛.定理1:设,在的某个邻域内连续,并且,,则对任何,由迭代决定的序列收敛于.定理2:条件同定理 1,则定理3:已知方程,且(1) 对任意的,有.(2) 对任意的,有,则对任意的,迭代生成的序列收敛于的根,且.以上给出的收敛定理中的条件要严格验证都较困难,实用时常用以下不严格的标准:当根区间较小,且对某一,明显小于1时,则迭代收敛(参见附录3).2) 迭代法的加速:a) 松弛法:若与同是的近似值,则是两个近似值的加权平均,其中称为权重,现通过确定看能否得到加速.迭代方程是:其中,令,试确定:当时,有,即当,时,可望获得较好的加速效果,于是有松弛法:,松弛法的加速效果是明显的 (见附录4),甚至不收敛的迭代函数经加速后也能获得收敛.b) Altken方法:松弛法要先计算,在使用中有时不方便,为此发展出以下的 Altken 公式:,是它的根,是其近似根.设,,因为,用差商近似代替,有,解出,得由此得出公式;;,这就是Altken 公式,它的加速效果也是十分明显的,它同样可使不收敛的迭代格式获得收敛(见附录5).3. 牛顿(Newton)法(牛顿切线法)1) 牛顿法的基本思想:是非线性方程,一般较难解决,多采用线性化方法.记:是一次多项式,用作为的近似方程.的解为记为,一般地,记即为牛顿法公式.2) 牛顿法的收敛速度:对牛顿法,迭代形式为:注意分子上的,所以当时,,牛顿法至少是二阶收敛的,而在重根附近,牛顿法是线性收敛的.牛顿法的缺点是:(1)对重根收敛很慢;(2)对初值要求较严,要求相当接近真值.因此,常用其他方法确定初值,再用牛顿法提高精度.4. 求方程根(解)的其它方法(1) solve('x^3-3*x+1=0')(2) roots([1 0 -3 1])(3) fzero('x^3-3*x+1', -2)(4) fzero('x^3-3*x+1',(5) fzero('x^3-3*x+1',(6) linsolve([1, 2, 3; 4, 5, 6; 7, 8, 0], [1, 2, 3]')体会一下,(2)(5) 用了上述 1 3 中的哪一种方法以下是本实验中的几个具体的实验,详细的程序清单参见附录.具体实验1:对分法先作图观察方程:的实根的分布区间,再利用对分法在这些区间上分别求出根的近似值.输入以下命令,可得的图象:f='x^3-3*x+1';g='0';ezplot(f, [-4, 4]);hold on;ezplot(g, [-4, 4]); %目的是画出直线 y=0,即 x 轴grid on;axis([-4 4 -5 5]);hold off请填写下表:实根的分布区间该区间上根的近似值在某区间上求根的近似值的对分法程序参见附录1.具体实验2:普通迭代法采用迭代过程:求方程在附近的根,精确到第 4 位小数.构造等价方程:用迭代公式:,用 Matlab 编写的程序参见附录2.请利用上述程序填写下表:分析:将附录2第4行中的分别改为以及,问运行的结果是什么你能分析得到其中的原因吗看看下面的“具体实验3”是想向你表达一个什么意思.用 Matlab 编写的程序参见附录3.具体实验3:收敛/发散判断设方程的三个根近似地取,和,这些近似值可以用上面的对分法求得.迭代形式一:收敛 (很可能收敛,下同)不收敛 (很可能不收敛,下同)不收敛迭代形式二:收敛不收敛不收敛迭代形式三:不收敛收敛收敛具体实验4:迭代法的加速1——松弛迭代法,,迭代公式为程序参见附录4.具体实验5:迭代法的加速2——Altken迭代法迭代公式为:,,程序参见附录5.具体实验6:牛顿法用牛顿法计算方程在-2到2之间的三个根.提示:,迭代公式:程序参见附录6 (牛顿法程序).具体实验7:其他方法求下列代数方程(组)的解:(1)命令:solve('x^5-x+1=0')(2)命令:[x, y]=solve('2*x+3*y=0', '4*x^2+3*y=1')(3) 求线性方程组的解,已知,命令:for i=1:5for j=1:5m(i, j)=i+j-1;endendm(5, 5)=0;b=[1:5]'linsolve(m, b)思考:若,或是类似的但阶数更大的稀疏方阵,则应如何得到四、自己动手1.对分法可以用来求偶重根附近的近似解吗为什么2.对照具体实验2、4、5,你可以得出什么结论3.选择适当的迭代过程,分别使用:(1)普通迭代法;(2)与之相应的松弛迭代法和 Altken 迭代法.求解方程在附近的根,精确到4位小数,请注意迭代次数的变化.4.分别用对分法、普通迭代法、松弛迭代法、Altken 迭代法、牛顿切法线等5种方法,求方程的正的近似根,.(建议取.时间许可的话,可进一步考虑的情况.)上一页回目录下一页。

《用二分法求方程的近似解》教学设计

《用二分法求方程的近似解》教学设计

《用二分法求方程的近似解》教学设计1. 引言1.1 背景介绍二分法是一种常用的数值计算方法,广泛应用于计算机科学、数学和工程领域。

它通常用于寻找数值解的逼近值,特别是在无法准确求解的情况下。

二分法的基本原理是将求解区间逐步缩小,直到满足精度要求为止。

在实际应用中,我们常常需要解决一些复杂的方程,例如非线性方程、传统解法求解困难的方程等。

这时候,二分法就成为了一种简单而有效的求解方法。

通过不断缩小求解区间,逐步逼近方程的解,我们可以快速得到一个近似解。

在本次教学设计中,我们将重点介绍二分法的原理、算法步骤和示例演示,帮助学生更好地理解和掌握这一数值计算方法。

通过本次教学,我们旨在引导学生掌握二分法的基本思想和应用技巧,提高他们的数值计算能力,为进一步学习和研究相关领域打下坚实的基础。

1.2 问题提出问题提出:在数学中,求解方程是一个常见的问题。

特别是对于非线性方程,往往无法用代数方法得到精确解析解。

我们需要借助数值计算方法来求得近似解。

二分法是一种简单且常用的数值计算方法,可以用来求解单调函数的根。

在实际应用中,我们经常遇到需要求解方程的情况,比如物理问题中的牛顿定律、化学问题中的化学反应速率等等。

掌握二分法求方程的近似解有着重要的意义。

本教学设计将重点介绍二分法的原理及应用,帮助学生掌握这一实用的数值计算方法。

1.3 目的本教学设计的目的是帮助学生了解和掌握二分法求解方程的基本原理和方法,通过实际的示例演示和练习,培养学生解决实际问题的能力和思维。

通过本教学设计,学生将能够掌握二分法的具体步骤,理解其优缺点,掌握其应用范围,并能将所学知识运用到实际生活和工作中。

通过本教学设计的学习,学生将不仅能够提高数学解题的能力,还能培养逻辑思维和分析问题的能力,为将来深入学习数学和相关领域打下扎实的基础。

本教学设计也旨在培养学生的团队合作和沟通能力,鼓励学生通过合作学习和讨论来促进自身的学习效果。

通过本教学设计,学生将不仅能够学会求解方程的方法,还能够培养自主学习和解决问题的能力,为未来的学习和工作打下坚实的基础。

牛顿拉普森迭代法原理

牛顿拉普森迭代法原理

牛顿拉普森迭代法原理一、引言牛顿拉普森迭代法(Newton-Raphson iteration method)是一种用于求解方程近似解的数值方法。

它的原理是基于牛顿法和拉普森法的思想,通过不断迭代逼近方程的根。

二、牛顿拉普森迭代法的原理牛顿拉普森迭代法的核心思想是通过不断迭代逼近方程的根。

具体步骤如下:1. 选择一个初始近似解x0;2. 假设f(x)是一个连续可导的函数,求出f(x)在x0处的导数f'(x0);3. 计算方程的切线方程,即通过(x0, f(x0))点并且斜率为f'(x0)的直线;4. 求出切线方程与x轴的交点,作为新的近似解x1;5. 重复步骤2-4,直到达到预设的精度要求。

三、牛顿拉普森迭代法的优点牛顿拉普森迭代法具有以下几个优点:1. 收敛速度快:相比于其他迭代法,牛顿拉普森迭代法通常收敛速度更快,特别是当初始近似解离真实解较近时。

2. 高精度:通过不断迭代逼近,可以达到较高的精度要求。

3. 广泛适用:牛顿拉普森迭代法不仅适用于求解代数方程,也适用于求解一些特殊的函数方程,如三角函数方程等。

四、牛顿拉普森迭代法的应用牛顿拉普森迭代法在实际问题中有着广泛的应用。

以下是几个典型的应用场景:1. 方程求解:牛顿拉普森迭代法可以用于求解非线性方程的近似解。

例如,可以通过迭代逼近求解多项式方程、指数方程等。

2. 优化问题:牛顿拉普森迭代法可以用于求解优化问题的极值点。

例如,在最小二乘法中,可以使用该方法求解最佳拟合曲线的参数。

3. 物理模拟:牛顿拉普森迭代法可以用于模拟物理系统的行为。

例如,可以通过迭代逼近求解自由落体运动中的位置、速度等参数。

五、牛顿拉普森迭代法的注意事项在使用牛顿拉普森迭代法时,需要注意以下几点:1. 初始近似解的选择:初始近似解的选择对迭代结果的精度和收敛速度有着重要影响,需要根据实际问题合理选择。

2. 收敛性判断:在迭代过程中,需要判断迭代结果是否达到了预设的收敛要求,以避免无限迭代或者迭代结果不满足要求的情况。

代数方程的牛顿迭代法

代数方程的牛顿迭代法

7-18-19-代数方程的牛顿迭代法牛顿迭代法(Newton's method)是一种用于数值求解代数方程的迭代方法,通常用于找到方程的根。

它的基本思想是通过不断逼近方程的根,直到满足某个精度要求。

下面是使用牛顿迭代法求解代数方程的一般步骤:
假设要求解方程 f(x) = 0。

1. 选择一个初始猜测值 x₀,通常选择接近根的值。

2. 计算 f(x₀) 和 f'(x₀),其中 f'(x₀) 是 f(x) 的导数。

3. 计算下一个近似根的值:x₁ = x₀ - f(x₀) / f'(x₀)。

4. 重复步骤 2 和 3,直到满足停止条件,如达到指定精度或经过一定数量的迭代。

数学表示为: xᵢ₊₁ = xᵢ - f(xᵢ) / f'(xᵢ)
这个迭代过程将不断逼近方程的根,直到满足精度要求。

下面是一个示例,假设要解方程f(x) = x² - 4 = 0,其中我们知道根是 x = 2。

我们使用牛顿迭代法来逼近这个根:
1. 初始猜测值 x₀ = 3。

2. 计算 f(x₀) = 3² - 4 = 5 和 f'(x₀) = 2 * 3 = 6。

3. 计算下一个近似根:x₁ = 3 - 5 / 6 = 2.1667。

4. 重复步骤 2 和 3,直到达到所需的精度或迭代次数。

不断迭代,最终我们会得到x ≈ 2,它是方程的根。

请注意,牛顿迭代法的有效性和收敛性取决于初始猜测值的选择,以及方程 f(x) 和它的导数 f'(x) 的性质。

有时可能需要多次尝试不同的初始猜测值来确保收敛到正确的根。

Matlab 求代数方程的近似解

Matlab 求代数方程的近似解
k k k


x*
即 x* ( x*)
( x*)
f ( x*) 0
注:若得到的点列发散,则迭代法失效!
迭代法收敛性判断
如果存在 x* 的某个 邻域 =(x*- , x* + ), 使 定义: 得对 x0 开始的迭代 xk+1 = (xk) 都收敛, 则称该迭代法在 x* 附近局部收敛。 设 x* =(x*),的某个邻域 内连续,且对 定理 1: x 都有 |’(x)|q< 1, 则对 x0 ,由迭 代 xk+1 = (xk) 得到的点列都收敛。
f 是符号表达式,也可以是字符串 默认变量由 findsym(f,1) 确定
>> syms x >> f=sin(x)+3*x^2; >> g=diff(f,x) >> g=diff('sin(x)+3*x^2','x')
Matlab 解方程函数
roots(p):多项式的所有零点,p 是多项式系数向量。 fzero(f,x0):求 f=0 在 x0 附近的根,f 可以使用
inline、字符串、或 @,但不能是方程或符号表达式!
linsolve(A,b):解线性方程组。 solve(f,v):求方程关于指定自变量的解,f 可以是用
得到一个迭代序列
k = 0, 1, 2, ... ...
xk k 0

f (x) = 0 f (x) 的零点
等价变换
x = (x)
(x) 的不动点
迭代法的收敛性
收敛性分析
若 ,假设 (x) 连续,则 xk x * xk 收敛,即lim k

数学问题:解决复杂方程的常用方法

数学问题:解决复杂方程的常用方法

数学问题:解决复杂方程的常用方法引言解决复杂方程是数学中重要的任务之一。

无论是在纯粹的理论研究还是实际应用中,我们经常需要找到方程的解。

本文将介绍一些常用的方法来解决复杂方程。

1. 代数ic方法代数ic方法是通过代数运算对方程进行求解的一种方法。

下面列出了三种经典的代数ic方法:1.1 因式分解法因式分解法适用于具有明显因子项的多项式方程。

首先,我们观察方程是否可以进行因式分解,并将其写成多个乘积形式,然后令每个因子等于零,再求解得到方程的根。

例子:考虑如下方程:x^2 - x = 0 我们可以将该方程因式分解为 x(x-1) = 0,并得到两个根x=0和x=1。

1.2 全等变换法全等变换法是通过对等价关系进行变换来简化或转换方程的求解过程。

通过使用合适的等价变换规则,我们可以将复杂的方程转化为简单易解的形式。

例子:考虑如下非线性方程:x^2 + 4x + 4 = 0 通过将方程进行平移,我们得到(x+2)^2 = 0,从而解得唯一根x=-2。

1.3 系数比较法系数比较法是通过观察多项式方程的系数之间的关系来求解方程。

通过比较系数,我们可以获得一些等式或不等式,然后根据这些关系求解方程。

例子:考虑如下二次方程:ax^2 + bx + c = 0 通过比较系数的大小和符号,我们可以推导出判别式D=b^2-4ac的值与方程根的关系。

如果D>0,则有两个实根;如果D=0,则有一个实根;如果D<0,则有两个复数根。

2. 数值近似法当遇到无法用代数方法直接求解的复杂方程时,我们可以利用数值近似法来获取近似解。

以下是几种常见的数值近似方法:2.1 迭代法迭代法是一种逐步逼近真实解的方法。

它基于初始猜测,并使用递归公式反复迭代直到满足预设精度要求为止。

例子:考虑如下非线性方程:f(x)=0 我们可以选择一个初始猜测值x_0,并使用递归公式x_{n+1}=g(x_n)进行迭代,直到达到预设的精度要求。

方程求根的数值方法

方程求根的数值方法

方程求根的数值方法数值方法是一种求解方程根的近似方法,它通过一系列计算和迭代来逼近方程的根。

这些方法常用于无法通过代数方法求得解析解的复杂方程,或者是当方程没有明确的解析解时。

在这篇文章中,我们将讨论三种常用的数值方法:二分法、牛顿法和割线法。

二分法是一种基于零点定理的根查找方法。

零点定理指出,如果一个函数在区间[a,b]的两个端点处取得正负值,那么这个函数在这个区间内至少存在一个根。

二分法的基本思想是将区间二分,并判断根是否在分割后的子区间内。

具体步骤如下:1.选择一个初始区间[a,b],使得f(a)和f(b)异号。

2.计算区间中点c=(a+b)/23.如果f(c)等于0或者f(c)的绝对值小于给定的误差限,那么c是近似的根。

4.如果f(c)和f(a)异号,那么根在左半区间[a,c]内;否则,根在右半区间[c,b]内。

5.重复步骤2到4,直到找到满足条件的近似根。

二分法的优点是简单易懂,收敛速度较快;缺点是每次迭代只能减少一半的区间长度。

牛顿法是一种迭代法,通过对函数f(x)的一阶导数进行线性逼近,来求得方程f(x)=0的根。

具体步骤如下:1.选择一个初始近似根x0。

2.计算函数f(x)在x=x0处的导数f'(x0)。

3.计算线性逼近方程的解x1=x0-f(x0)/f'(x0)。

4.如果f(x1)的绝对值小于给定的误差限,那么x1是近似的根。

5.否则,令x0=x1,重复步骤2到4,直到找到满足条件的近似根。

牛顿法的优点是收敛速度快,通常是二次收敛;缺点是对于一些特殊的函数,可能会出现发散或者陷入局部最优解的情况。

割线法是对牛顿法的改进,它通过将区间的两个端点连接起来,构建一条割线来逼近方程的根。

具体步骤如下:1.选择两个初始近似根x0和x1,使得f(x0)和f(x1)异号。

2.计算割线的斜率k=(f(x1)-f(x0))/(x1-x0)。

3.计算线性逼近方程的解x2=x1-f(x1)/k。

第七讲MATLAB中求方程的近似根(解)教学目的学习matlab中求根命令

第七讲MATLAB中求方程的近似根(解)教学目的学习matlab中求根命令

第七讲MATLAB中求方程的近似根(解)教学目的:学习matlab中求根命令,了解代数方程求根求解的四种方法,即图解法、准解析法、数值方法以及迭代方法,掌握对分法、迭代法、牛顿切法线求方程近似根的基本过程;掌握求代数方程(组)的解的求解命令.教学重点:求方程近似解的几种迭代方法,代数方程(组)的解的求解命令的使用方法.利用所学的编程知识,结合具体的实例,编制程序进行近似求根.掌握相关的代数方程(组)的求解命令及使用技巧.教学难点:方程的近似求解和非线性方程(组)的求解.一、问题背景和实验目的求代数方程0xf的根是最常见的数学问题之一(这里称为代数方程,主要是想和(=)后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当)f为线性方程,否则称之为非线性方程.(x(=x)f是一次多项式时,称0当0(xf的多样性,尚无一般的解析解法可使用,但如f是非线性方程时,由于))x(=果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.同时对于多未知量非线性方程(组)而言,简单的迭代法也是可以做出来的,但在这里我们介绍相关的命令来求解,不用迭代方法求解.通过本实验,达到下面目的:1. 了解对分法、迭代法、牛顿切线法求方程近似根的基本过程;2. 求代数方程(组)的解.首先,我们先介绍几种近似求根有关的方法:1.对分法对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根.设)af⋅bf,即()0f a>,()0f a<,()0f b<或()0f b>.则),(<(x[bf在]a上连续,0()根据连续函数的介值定理,在)fξ=.a内至少存在一点ξ,使()0,(b下面的方法可以求出该根:(1) 令0()/2x a b =+,计算0()f x ;(2) 若0()0f x =,则0x 是()0f x =的根,停止计算,输出结果0x x =.若 0()()0f a f x ⋅<,则令1a a =,10b x =,若0()()0f a f x ⋅>,则令10a x =,1b b =;111()/2x a b =+.……,有k a 、k b 以及相应的()/2k k k x a b =+.(3) 若()k f x ε≤ (ε为预先给定的精度要求),退出计算,输出结果()/2k k k x a b =+; 反之,返回(1),重复(1),(2),(3).以上方法可得到每次缩小一半的区间序列{[,]}k k a b ,在(,)k k a b 中含有方程的根. 当区间长k k b a -很小时,取其中点()/2k k k x a b =+为根的近似值,显然有2111()/2()/(2)()/2k k k k k k x b a b a b a ξ+---≤-=-==-以上公式可用于估计对分次数k .分析以上过程不难知道,对分法的收敛速度与公比为12的等比级数相同.由于1021024=,可知大约对分10次,近似根的精度可提高三位小数.对分法的收敛速度较慢,它常用来试探实根的分布区间,或求根的近似值. 2. 迭代法a) 松弛法:由方程()0f x =构造一个等价方程()x x φ=.则迭代方程是:1(1)()k k k k k x x x ωωφ+=-+,1/(1'())k k x ωφ=-,其中'()1x φ≠.松弛法的加速效果是明显的 (见附录4),甚至不收敛的迭代函数经加速后也能获得收敛.b) Altken 方法:松弛法要先计算'()k x φ,在使用中有时不方便,为此发展出以下的 Altken 公式:(1)()k k x x φ= ;(2)(1)()k k x x φ=;(2)(2)(1)2(2)(1)1()/(2)k k k k k k k x x x x x x x +=---+, ,2,1,0=k这就是Altken 公式,它的加速效果也是十分明显的,它同样可使不收敛的迭代格式获得收敛(见附录5).3. 牛顿(Newton)法(牛顿切线法)()0f x =是非线性方程其迭代公式为:1(()/'())k k k k x x f x f x +=- ,2,1,0=k即为牛顿法公式.牛顿法的缺点是:(1)对重根收敛很慢;(2)对初值0x 要求较严,要求0x 相当接近真值*x .因此,常用其他方法确定初值0x ,再用牛顿法提高精度. 以下是本实验中的几个具体的实验 具体实验1:对分法先作图观察方程:3310x x -+=的实根的分布区间,再利用对分法在这些区间上分别求出根的近似值.程序如下: function [y,p]=erfen()clc, x=[];a=[];b=[]; a(1)=1;b(1)=2; i=1;x(i)=(a(i)+b(i))/2; e=abs(f(x(i))); ezplot('x^3-3*x+1',[a(1),b(1)]);hold on, plot([a(i),b(i)],[0,0]) while e>10^(-5)plot([a(i),a(i)],[0,100],[x(i) x(i)],[0 100],[b(i) b(i)],[0 100]),pause(0.5) if f(a(i))*f(x(i))<0a(i+1)=a(i);b(i+1)=x(i);x(i+1)=(a(i+1)+b(i+1))/2; elsea(i+1)=x(i);b(i+1)=b(i);x(i+1)=(a(i+1)+b(i+1))/2; ende=abs(f(x(i)));i=i+1; endy=x(i);p=[a;x;b]' function u=f(x) u=x^3-3*x+1; end end图形如下:结果为:1.5321具体实验2:普通迭代法采用迭代过程:1()k k x x φ+=求方程3310x x -+=在 0.5 附近的根,精确到第 4 位小数.构造等价方程:3(1)/3x x =+用迭代公式: 31(1)/3k k x x +=+, ,2,1,0=k 具体实验3:迭代法的加速1——松弛迭代法3()(1)/3x x φ=+,2()'x x φ=,21/(1)k k x ω=-迭代公式为31(1)(1)/3k k k k k x x x ωω+=-++clc;x=[];w=[]; x(1)=1;w(1)=1/(1-x(1)); for i=1:10w(i)=1/(1- x(i)); x(i+1)=(1-w(i))*x(i)+ w(i)*(x(i)^3+1)/3; end x另外有程序可以参考,详见参见附录4. 具体实验4:迭代法的加速2——Altken 迭代法迭代公式为:(1)3(1)/3k k x x =+,(2)(1)3(1)/3k k x x =+(2)(2)(1)2(2)(1)1()/(2)k k k k k k k x x x x x x x +=---+, ,2,1,0=k%(符号计算)syms x fx gx;gx=(x^3+1)/3;fx=x^3-3*x+1; disp('k x x1 x2') x=0.5;k=0; ffx=subs(fx, 'x', x); while abs(ffx)>0.0001;u=subs(gx, 'x', x);v=subs(gx, 'x', u);disp([num2str(k), ' ', num2str(x), ' ', num2str(u), ' ', num2str(v)]) x=v-(v-u)^2/(v-2*u+x);k=k+1;ffx=subs(fx, 'x', x); enddisp([num2str(k), ' ', num2str(x), ' ', num2str(u), ' ', num2str(v)]) %(数值计算)function [y,p]=althken() % 求方根的迭代程序 clc,format long e , x(1)=6; i=1;p=[];ezplot('x^3-3*x+1',[x(1)-9,x(1)+1]);hold on plot([x(1)-20,x(1)+2],[0,0]) while abs(f(x(i)))>=10^(-5) plot(x(i),0,'*')t1=phi(x(i));t2=phi(t1); x(i+1)=t2-(t2-t1)^2/(t2-2*t1+x(i)+eps); p=[p;[i, x(i),t1,t2]]; i=i+1; pause(0.1) endp,y=x(i), i, format function u=phi(x) u=(x^3+1)/3; endfunction u=f(x) u=x^3+1-3*x; end end具体实验5:牛顿法用牛顿法计算方程3310x x -+=在-2到2之间的三个根. 提示:3()31f x x x =-+,2'()33f x x =-迭代公式:2321(31)/(33)k k k k k x x x x x +=--+-function [y,p]=newton() % 求方根的迭代程序 clc,format long e , x(1)=6; i=1; p=[]; ezplot('x^3-3*x+1',[x(1)-9,x(1)+1]);hold on plot([x(1)-20,x(1)+2],[0,0]) while abs(f(x(i)))>=10^(-5)plot(x(i),0,'*'), x(i+1)=x(i)-f(x(i))/(df(x(i))+eps); p=[p;[i, x(i)]]; i=i+1; pause(0.1) endformat short , p,y=x(i), i, function u=df(x) u=3*x^2-3; endfunction u=f(x) u=x^3+1-3*x; end end 结果:结果为: 1.5321※进一步思考:用迭代法求3的平方根. 迭代公式为1(3/)/2n n n x x x +=+. 编写M 函数文件My_sqrt.m, 求3正的平方根x . 要求误差小于510-.仅要求写出源程序.试使用以上介绍的迭代法来相互比较 参考程序:function y=my_sqrt(a) % 求方根的迭代程序if nargin~=1|~isa(a,'double') , error('输入数字为一个正数!'),end if a<0, error('输入数字为正数!'), endif a>0format long e , x(1)=0; x(2)=1; i=1; while abs(x(i+1)-x(i))>=10^(-5)i=i+1;x(i+1)=1/2*(x(i)+a/(x(i)+eps));endy=x(i+1);i,format end现在我们简单介绍图解法如何来求解一元方程和二元方程的根: 例:exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)=0.5>>ezplot('exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5',[0 5]) >>hold on, line([0,5],[0,0])验证:t=3.5203 >>syms x; t=3.5203;vpa(exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5) ans =-.43167073997540938989914138801396e-4例::x^2*exp(-x*y^2/2)+exp(-x/2)*sin(x*y)=0y^2 *cos(y+x^2) +x^2*exp(x+y)=0>> ezplot('x^2*exp(-x*y^2/2)+exp(-x/2)*sin(x*y)')>> hold onezplot('y^2 *cos(y+x^2) +x^2*exp(x+y)')具体的结果请大家自己下来运行二、关于直接利用函数(命令)求解方程及简介(1) solve('f(x)'),f(x)为一个具体的表达式.(2) roots(A),A为某个多项式按x降幂排列的系数矩阵(3) fzero('f(x)', x0),f(x)为一个具体的表达式,x0为一个具体的数值(4) linsolve(A,b),A为一方程组的系数矩阵,b为方程组右端的常数矩阵.1.单变量的多项式方程求根:命令格式:roots(A)例:x^3-6*(x^2)-72*x-27=0;>>p=[1 -6 -72 -27]>>r=roots(p)r=12.1229-5.7345-0.38842. 多项式型方程的准解析解法命令格式:[x,…]=solve(eqn1,eqn2,…)例:x^2+y^2-1=00.75*x^3-y+0.9=0>>syms x y;>> [x,y]=solve('x^2+y^2-1=0', '75*x^3/100-y+9/10=0')检验:>>[eval('x.^2+y.^2-1'), eval('75*x.^3/100-y+9/10')]具体结果就请大家下来自己运行3. 线性方程组的求解例:求线性方程组b⋅的解,已知m=[1 2 3 4 5;2 3 4 5 6;3 4 5 6 7 8;4 5 6 7 8 ;5 6 7 8 0],m=xb=[1;2;3;4;5]for i=1:5for j=1:5m(i, j)=i+j-1;endendm(5, 5)=0;b=[1:5]'; linsolve(m, b)4. 非线性方程数值求解(1)单变量非线性方程求解在MATLAB中提供了一个fzero函数,可以用来求单变量非线性方程的根.该函数的调用格式为:z=fzero('fname',x0,tol,trace)其中fname是待求根的函数文件名,x0为搜索的起点.一个函数可能有多个根,但fzero 函数只给出离x0最近的那个根.tol控制结果的相对精度,缺省时取tol=eps,trace•指定迭代信息是否在运算中显示,为1时显示,为0时不显示,缺省时取trace=0.例:求f(x)=x-10x+2=0在x0=0.5附近的根.步骤如下:(a) 建立函数文件funx.m.function fx=funx(x)fx=x-10.^x+2;(b)调用fzero函数求根.z=fzero('funx',0.5)z = 0.3758(2)非线性方程组的求解对于非线性方程组F(X)=0,用fsolve函数求其数值解.fsolve函数的调用格式为: X=fsolve('fun',X0,option)其中X为返回的解,fun是用于定义需求解的非线性方程组的函数文件名,X0是求根过程的初值,option为最优化工具箱的选项设定.最优化工具箱提供了20多个选项,用户可以使用optimset命令将它们显示出来.如果想改变其中某个选项,则可以调用optimset()函数来完成.例如,Display 选项决定函数调用时中间结果的显示方式,其中‘off’为不显示,‘iter’表示每步都显示,‘final’只显示最终结果.optim set(‘Display’,‘off’)将设定Display 选项为‘off’. 例: 求下列非线性方程组在(0.5,0.5) 附近的数值解.(a) 建立函数文件myfun.m . function q=myfun(p) x=p(1);y=p(2);q(1)=x-0.6*sin(x)-0.3*cos(y);q(2)=y-0.6*cos(x)+0.3*sin(y); (b) 在给定的初值x0=0.5,y0=0.5下,调用fsolve 函数求方程的根. x=fsolve('myfun',[0.5,0.5]',optimset('Display','off')) x = 0.6354 0.3734将求得的解代回原方程,可以检验结果是否正确,命令如下: q=myfun(x) q = 1.0e-009 * 0.2375 0.2957 可见得到了较高精度的结果.精品案例:螺旋线与平面的交点问题:螺旋线与平面相交的情况多种多样, 根据螺旋线与平面方程的不同可以相交, 也可以不相交. 在相交的情况下, 可以交于一点, 也可以交于好多点. 对于各种相交的情况, 要求其交点的坐标并不是一件容易的事. 本次实验就以此为背景讨论下面的具体问题:已知螺旋线的参数方程为4cos ,4sin ,,08x y z θθθθπ===≤≤.平面的方程为:0.520x y z ++-=. 求该螺旋线与平面的交点. 要求:1)求出所有交点的坐标;2)在同一图形窗口画出螺旋线、平面和交点. 实验过程: 1.1 问题分析可以采用多种方法求螺旋线与平面的交点坐标, 包括fsolve 等. 先对方程化简,减少变量个数,使用图解方法求方程的根.再分别画出螺旋线,平面,及其交点. 1.2 算法描述与分析先对方程化简,减少变量个数,再利用fsolve, 选择适当的初值, 求其数值解;再分别会出图形;最后对图形作出必要的修饰. 1.3 源程序及注释将螺旋线的参数方程代入平面方程后可得: 等价变形得 : 建立下面M 文件intersect_point.m %使用图解法求交点,并且三维图 %画图确定解的个数和大概位置 theta=0:0.01:8*pi;y1=4*(cos(theta)+sin(theta)); y2=2-0.5*theta;plot(theta,y1,theta,y2) %画出两个函数的图形%画螺旋线%theta=0:pi/100:8*pi; x=4*cos(theta); y=4*sin(theta); z=theta;figure %新建图形窗口plot3(x,y,z) %画含有参数的空间曲线 hold on %透明的画平面%x1=-5:0.1:5; %取值和螺旋线的范围[-4,4]有关. y1=x1;[X1 Y1]=meshgrid(x1,y1);%网格化,画曲面 Z1=4-2*X1-2*Y1;surf(X1,Y1,Z1) %或者使用mesh(X1,Y1,Z1)25.0sin 4cos 4=-++θθθθθθ5.02sin 4cos 4-=+shading flatalpha(0.5) %设置透明度alpha('z') %设置透明度方向%求交点坐标,为避免变量混淆和覆盖,这里用t 代替theta%i=1for n=[2,5,9,11] %根据画图确定解的大概位置作为初值t(i)=fsolve(inline('4*cos(t)+4*sin(t)+0.5 *t-2'),n)%选择不同初值求交点 x0(i)=4*cos(t(i));y0(i)=4*sin(t(i));z0(i)=t(i);i=i+1;endplot3(x0,y0,z0,'ro')1.4 测试结果(写清输入输出情况)从图形可见在 内与三角曲线有4个交点.交点坐标为:theta 的数值解为:t=[2.1961 5.3759 9.1078 11.1023]四个交点的近似坐标为:x0 =[-2.3413 2.4635 -3.8007 0.4261]y0 =[3.2432 -3.1514 1.2468 -3.9772]z0 =[2.1961 5.3759 9.1078 11.1023]1.5 调试和运行程序过程中产生的问题及采取的措施求交点的时候会出现重根和漏根的情形,通过选择适当的初值避免了上述情况.1.6 对算法和程序的讨论、分析, 改进设想及其它经验教训solve 函数只能求解一个数值解,不能全部求出;用fsolve 函数好; 为了满足更好的视觉πθ80≤≤效果,可以对图形进行进一步的修饰.习题1.已知多项式323)(2345+++-=x x x x x f2.解方程组:sin()0x x y ye +-=(1)22x y -= (2)3.求解方程: ex x x =)cos( 4.求解多项式方程 0189=++x x5.求下列代数方程(组)的解:(1) 510x x -+=(2) 230x y += ①2431x y += ②6.选择适当的迭代过程,分别使用:(1)普通迭代法;(2)与之相应的松弛迭代法和 Altken 迭代法.求解方程0133=+-x x 在 1.4 附近的根,精确到4位小数,请注意迭代次数的变化.7.分别用对分法、普通迭代法、松弛迭代法、Altken 迭代法、牛顿切法线等5种方法,求方程 sin()t x x ⋅= 的正的近似根,10≤<t .(建议取 5.0=t .时间许可的话,可进一步考虑 25.0=t 的情况.)五、附录为供近似求根的算法附录1:对分法程序(fulu1.m )syms x fx; a=0;b=1;fx=x^3-3*x+1;x=(a+b)/2;k=0;ffx=subs(fx, 'x', x);if ffx==0;disp(['the root is:', num2str(x)])else disp('k ak bk f(xk)')while abs(ffx)>0.0001 & a<b;disp([num2str(k), ' ', num2str(a), ' ', num2str(b), ' ', num2str(ffx)]) fa=subs(fx, 'x', a);ffx=subs(fx, 'x', x);if fa*ffx<0b=x;elsea=x;endk=k+1;x=(a+b)/2;enddisp([num2str(k), ' ', num2str(a), ' ', num2str(b), ' ', num2str(ffx)])end注:实验时,可将第 2 行的 a、b 改为其它区间端点进行其它实验.附录2:普通迭代法(fulu2.m)syms x fx gx; gx=(x^3+1)/3;fx=x^3-3*x+1; disp('k x f(x)')x=0.5;k=0; ffx=subs(fx, 'x', x);while abs(ffx)>0.0001;disp([num2str(k), ' ', num2str(x), ' ', num2str(ffx)]);x=subs(gx, 'x', x);ffx=subs(fx, 'x', x);k=k+1;enddisp([num2str(k), ' ', num2str(x), ' ', num2str(ffx)])附录3:收敛/发散判断(fulu3.m)syms x g1 g2 g3 dg1 dg2 dg3;x1=0.347;x2=1.53;x3=-1.88;g1=(x^3+1)/3;dg1=diff(g1, 'x');g2=1/(3-x^2);dg2=diff(g2, 'x');g3=(3*x-1)^(1/3);dg3=diff(g3, 'x');disp(['1 ', num2str(abs(subs(dg1, 'x', x1))), ' ', ...num2str(abs(subs(dg1, 'x', x2))), ' ', num2str(abs(subs(dg1, 'x', x3)))]) disp(['2 ', num2str(abs(subs(dg2, 'x', x1))), ' ', ...num2str(abs(subs(dg2, 'x', x2))), ' ', num2str(abs(subs(dg2, 'x', x3)))]) disp(['3 ', num2str(abs(subs(dg3, 'x', x1))), ' ', ...num2str(abs(subs(dg3, 'x', x2))), ' ', num2str(abs(subs(dg3, 'x', x3)))])附录4:松弛迭代法(fulu4.m)syms fx gx x dgx;gx=(x^3+1)/3;fx=x^3-3*x+1;dgx=diff(gx, 'x');x=0.5;k=0;ggx=subs(gx, 'x', x);ffx=subs(fx, 'x', x);dgxx=subs(dgx, 'x', x);disp('k x w')while abs(ffx)>0.0001;w=1/(1-dgxx); disp([num2str(k), ' ', num2str(x), ' ', num2str(w)]) x=(1-w)*x+w*ggx;k=k+1;ggx=subs(gx, 'x', x);ffx=subs(fx, 'x', x);dgxx=subs(dgx, 'x', x);enddisp([num2str(k), ' ', num2str(x), ' ', num2str(w)])附录5: Altken 迭代法(fulu5.m)syms x fx gx; gx=(x^3+1)/3;fx=x^3-3*x+1;disp('k x x1 x2') x=0.5;k=0;ffx=subs(fx, 'x', x);while abs(ffx)>0.0001;u=subs(gx, 'x', x);v=subs(gx, 'x', u);disp([num2str(k), ' ', num2str(x), ' ', num2str(u), ' ', num2str(v)]) x=v-(v-u)^2/(v-2*u+x);k=k+1;ffx=subs(fx, 'x', x);enddisp([num2str(k), ' ', num2str(x), ' ', num2str(u), ' ', num2str(v)])附录6:牛顿法(fulu6.m)syms x fx gx;fx=x^3-3*x+1;gx=diff(fx, 'x');x1=-2;x2=0.5;x3=1.4;k=0;disp('k x1 x2 x3')fx1=subs(fx, 'x', x1);fx2=subs(fx, 'x', x2);fx3=subs(fx, 'x', x3);gx1=subs(gx, 'x', x1);gx2=subs(gx, 'x', x2);gx3=subs(gx, 'x', x3);while abs(fx1)>0.0001|abs(fx2)>0.0001|abs(fx3)>0.0001;disp([num2str(k), ' ', num2str(x1), ' ', num2str(x2), ' ', num2str(x3)])x1=x1-fx1/gx1;x2=x2-fx2/gx2;x3=x3-fx3/gx3;k=k+1;fx1=subs(fx, 'x', x1);fx2=subs(fx, 'x', x2);fx3=subs(fx, 'x', x3);gx1=subs(gx, 'x', x1);gx2=subs(gx, 'x', x2);gx3=subs(gx, 'x', x3);enddisp([num2str(k), ' ', num2str(x1), ' ', num2str(x2), ' ', num2str(x3)])。

牛顿求根法计算

牛顿求根法计算

这三个根周围构成三个“吸引盆”,初始点迅速被吸引到盆内,最后停止在三点之一。用计算机迭代, 以当前点到三个终点的距离远近为标准,标上不同的颜色,就能得到美丽的分形图,特别是在 120 线、240 线附近有复杂的“项链”结构。
五、实验结论 实验图形说明了牛顿法“以直代曲”,逐次逼近的本质。 六、注记 本实验用牛顿求根法绘出了一元方程的分形图,1027 李生寿 一、问题叙述 求代数方程 f(x)=0 的精确解是很难的事情,特别地当 f(x)是 高于 5 次的多项式时, 不能通过多项式系数的有限次运算得到根的表达式。 在这种情况下求方程的近似解却是可以 的,牛顿法就是一种比较好的逐次逼近法。以 f(x)=x3-1 为例,用牛顿法生成分形图形。 二、问题分析 首先猜测一个值 x1,用它近似方程的根 c,用过(x1,f(x1))点的切线 y=f(x1)+f’(x1)(x-x1)近似代替曲线 f(x),然后用切线方程 y=f(x1)+f’(x1)(x-x1)=0 的 根 x=x2=x1-f(x1)/f’(x1)近似代替曲线方程的根 c,这样就得到 c 的第二个近似值。 依此类 推可得到迭代公式。 在复平面上选定一个区域,对于任意初始点(除去(0,0)点),讨论它在牛顿法迭代过程 中的行为。一般选 f(x)=xp-1,其中 p 是大于 2 的正整数。这样,迭代公式还可以 改写为对 于 x3-1=0,有三个根:x1=1,x2=[-1+SQR(3)i]/2,x3=[-1-SQR(3)i]/2,三个根均匀地分布 在单位圆上。迭代过程要先将复数分解为实部和虚部:
x→2x/3+(x2-y2)/[3(x2+y2)2], y→2y/3-2xy/[3(x2+y2)2]
三、实验程序 N=160; warning off [X,Y]=meshgrid((-N:N)/N*2); [m,n]=find(X==0&Y==0); X(m,n)=1; Y(m,n)=1; R=zeros(321); G=R; B=R; for k=1:30; Xn=2*X/3+(X.^2-Y.^2)./(3*(X.^2+Y.^2)); Yn=2*Y/3-2*X.*Y./(3*(X.^2+Y.^2)); X=Xn; Y=Yn; end R(X>0.8)=1; G(Y<-0.5)=1; B(Y>0.5)=1; imshow(cat(3,R,G,B)) 四、实验数据结果及分析 程序运行后,图形如下:

求根公式是什么

求根公式是什么

求根公式是什么1. 引言求根公式(Root-finding formula)是数学中的一个重要概念,用于解决代数方程的根的问题。

在数学、物理、工程等领域,求解方程的根是一项基本的任务。

求根公式的研究具有广泛的应用价值,并且在数值计算、优化算法等领域有着重要的影响。

2. 代数方程与根的定义首先,我们来了解代数方程的概念。

代数方程是一个包含了未知数的数学等式,它可以用来描述数学模型中的关系。

一般地,代数方程可以写成如下形式:f(x)=0其中,f(x)是一个表示未知数的函数,x是未知数。

方程的解,也就是根,是使得方程等式成立的未知数的值。

3. 求根公式的意义求根公式的主要目的是通过一定的数学运算,找到满足代数方程的根的值。

它的存在和使用可以将代数方程的解析解表示出来,从而解决了一类方程无法用简单的代数运算直接求解的问题。

不同类型的代数方程有不同的求根公式。

例如,一次方程(线性方程)可以通过简单的代数运算得到解析解;二次方程可以使用求根公式(如韦达定理)得到解析解;高阶多项式方程的根无法用有限的代数运算表示,需要使用常见的数值方法进行近似求解。

4. 常见的求根公式4.1 一次方程求根公式一次方程(线性方程)的一般形式为:ax+b=0,其中a eq0。

它的求根公式为:$$x = -\\frac{b}{a}$$这是因为一次方程只有一个未知数,可以通过简单的代数运算得到解析解。

4.2 二次方程求根公式二次方程的一般形式为:ax2+bx+c=0,其中a eq0。

二次方程的求根公式,也称为韦达定理(Vieta’s formulas),是一种十分重要的求根公式。

根据韦达定理,二次方程的根可以通过如下公式计算得出:$$x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}$$其中,$\\pm$ 表示两个可能的根。

需要注意的是,方程的根取决于判别式D=b2−4ac的值,当判别式大于零时,方程有两个不相等的实根;当判别式等于零时,方程有两个相等的实根;当判别式小于零时,方程有两个共轭复根。

求根计算公式的原理和方法

求根计算公式的原理和方法

求根计算公式的原理和方法求根计算公式是数学中常见的一种计算方法,用于求解方程的根。

在数学中,方程是一种数学陈述,它表达了一个或多个未知数与已知数之间的关系。

求根计算公式的原理和方法是通过一系列数学推导和运算,找到方程的根或解。

本文将从求根计算公式的原理和方法两个方面进行介绍。

求根计算公式的原理。

求根计算公式的原理是基于代数学和数学分析的理论。

在代数学中,方程的根是指方程成立的解,即满足方程等式的数值。

对于一元一次方程ax+b=0,其根为x=-b/a。

对于一元二次方程ax^2+bx+c=0,其根可以通过求解二次方程的根公式得到。

在数学分析中,求根计算公式的原理是基于函数的零点理论。

对于一个函数f(x),其零点即为方程f(x)=0的解。

因此,通过函数的性质和图像,可以求得方程的根。

求根计算公式的方法。

求根计算公式的方法包括了多种求解方程的技巧和算法。

在代数学中,常见的求根方法有因式分解、配方法、代数运算等。

对于一元二次方程,可以通过求解一元二次方程的根公式得到方程的解。

在数学分析中,求根计算公式的方法是基于函数的性质和图像的分析。

通过函数的增减性、奇偶性、极值点等性质,可以求得函数的零点,进而求得方程的根。

除了代数学和数学分析的方法,还有一些特殊的方程求根方法。

比如,对于高次方程或者无理方程,可以通过换元、代换、递推等方法进行求解。

对于复杂的方程,还可以通过数值计算方法进行求解。

数值计算方法是一种逼近求解的方法,通过数值计算和近似计算,可以得到方程的根。

在实际应用中,求根计算公式的方法还可以通过计算机程序进行求解。

通过编程语言和算法,可以实现对各种类型方程的求解。

比如,利用牛顿迭代法、二分法、试位法等算法,可以实现对方程的高效求解。

总结。

求根计算公式是数学中常见的一种计算方法,用于求解方程的根。

其原理和方法是基于代数学和数学分析的理论,通过一系列数学推导和运算,找到方程的根或解。

求根计算公式的方法包括了多种求解方程的技巧和算法,可以通过代数方法、数学分析方法、数值计算方法等途径进行求解。

matlab二分法求方程的近似解

matlab二分法求方程的近似解

题目:matlab二分法求方程的近似解一、概述由于许多实际问题都可以用方程来描述,而有些方程并不能通过代数方法求解,因此需要利用计算机进行数值计算。

二分法是一种简单而又常用的数值计算方法,通过不断缩小一个区间来逼近方程的根,从而获得方程的近似解。

本文将介绍如何使用matlab编程实现二分法求解方程的近似解,并给出示例代码和实际应用。

二、二分法求解方程的原理1. 什么是二分法二分法又称折半法,是一种在有序数组中查找特定值的搜索算法。

它的工作原理是不断将待查找的范围分成两半,然后确定待查找值可能存在的那一半。

通过不断缩小范围,最终找到目标值或确定目标值不存在。

2. 二分法求解方程的思想对于一个非线性方程f(x)=0,如果我们能够找到两个值a和b,使得f(a)和f(b)异号,那么在[a,b]区间内一定存在方程的根。

二分法的思想就是不断将[a,b]区间缩小,从而逼近方程的根。

三、使用matlab编程实现二分法求解方程1. 确定搜索区间需要确定方程的根存在的区间[a,b],并保证f(a)和f(b)异号。

这一步可以通过实际问题分析或者数值计算得到。

2. 定义求解函数在matlab中,需要定义方程f(x)的求解函数。

定义一个求解方程x^2-2的函数为:```matlabfunction y = func(x)y = x^2 - 2;end```3. 编写二分法求解程序在matlab中,编写二分法求解程序如下:```matlabfunction [result, iter] = binary_search(a, b, f, tol)fa = f(a);fb = f(b);if sign(fa) == sign(fb)error('f(a) and f(b) must have opposite signs');enditer = 0;while (b - a)/2 > tolc = (a + b)/2;fc = f(c);if fc == 0break;endif sign(fc) == sign(fa)a = c;fa = fc;elseb = c;fb = fc;enditer = iter + 1;endresult = (a + b)/2;end```四、示例代码及应用以方程x^2-2=0为例,使用上述编写的程序求解方程的近似解:```matlab[a, b] = [1, 2];tol = 1e-6;[result, iter] = binary_search(a, b, func, tol);fprintf('The approximate solution of x^2-2=0 is .6f, it takes d iterations\n', result, iter);```运行结果为:The approximate solution of x^2-2=0 is 1.xxx, it takes 20 iterations以上代码实现了对方程x^2-2=0近似解的求解,并且给出了迭代次数。

方程近似解

方程近似解

方程近似解在我们的生活中,数学无处不在。

从简单的加法和减法到复杂的微积分和线性代数,数学是人类思维和科学发展的基石。

而方程近似解则是数学中一个重要的概念,它使我们能够在实际情况中获得更加精确的结果。

本文将带领读者一起探索方程近似解的奇妙世界,并展示它在现实生活中的应用。

方程近似解是指通过一系列逼近方法来求解复杂方程的过程。

它与数值计算和近似算法密切相关,通过使用数值方法来逼近方程的解,从而获得一个足够精确的近似结果。

这种方法在科学、工程和经济等领域中得到广泛应用。

让我们以一个简单的例子来说明方程近似解的原理。

假设我们想要计算圆的周长,但是我们只知道圆的半径。

根据几何学的知识,圆的周长可以通过公式C=2πr来计算,其中C表示周长,r表示半径。

然而,在实际应用中,我们可能只能获得一个近似的半径值。

这时,我们可以使用方程近似解的方法来计算圆的周长。

我们将已知的半径值代入到公式C=2πr中,得到一个初步的结果。

然后,我们可以通过不断迭代的方式,逐渐逼近真实的周长值。

通过每一次迭代中的计算结果,我们可以不断修正近似值,使得结果更加接近真实值。

最终,我们可以得到一个足够精确的近似结果,从而解决了我们的问题。

方程近似解不仅在数学中有着重要的应用,还在科学研究和工程实践中发挥着重要的作用。

在物理学中,方程近似解可以帮助我们解决复杂的物理问题,例如天体运动、电磁场的分布等。

在工程学中,方程近似解可以帮助我们设计更加高效和可靠的结构,例如建筑物、桥梁和飞机等。

在经济学中,方程近似解可以帮助我们分析市场行为和预测经济走势,从而指导决策和规划。

除了在科学和工程中的应用,方程近似解还在日常生活中发挥着重要的作用。

例如,当我们使用导航软件导航时,软件会根据我们所提供的起点和终点位置,使用方程近似解的方法计算出最短路径。

这样,我们就能够在最短的时间内到达目的地。

又如,在电子游戏中,方程近似解可以帮助我们计算出游戏中的物理效果,例如重力、速度和碰撞等,使得游戏更加真实和有趣。

初中数学 如何求解一元二次方程的近似解

初中数学  如何求解一元二次方程的近似解

初中数学如何求解一元二次方程的近似解在初中数学中,求解一元二次方程的近似解是一个重要的概念。

在这里,我将详细解释如何使用近似方法来求解一元二次方程,并提供一些实例和解题技巧。

希望这能帮助你更好地理解和应用一元二次方程的近似解。

首先,让我们回顾一下一元二次方程的一般形式:ax^2 + bx + c = 0,其中a、b和c是实数,且a不等于0。

对于一些复杂的一元二次方程,我们可能无法通过代数方法精确求解得到方程的根。

这时,我们可以使用近似方法来获得一个接近于真实解的估计值。

一元二次方程的近似解可以通过以下方法来获得:方法1:图像法通过绘制方程的图像,我们可以观察到方程的根在哪个区间内,并获得一个近似解的估计值。

我们可以使用计算机或手绘图像来帮助我们更准确地确定方程的根所在的位置。

例如,考虑方程x^2 - 4x + 3 = 0。

我们可以绘制方程的图像,并观察到方程的根位于x=1和x=3之间。

因此,我们可以估计方程的近似解为x ≈ 2。

方法2:二分法二分法是一种常用的近似求解方法,适用于对于一个在某个区间内连续的函数进行求解。

我们可以通过迭代的方式逼近方程的根。

具体步骤如下:1. 选择一个初始的区间[a, b],确保方程在这个区间内连续。

2. 计算区间中点c = (a + b) / 2。

3. 计算方程在中点c处的函数值f(c)。

4. 如果f(c)接近于0,我们可以认为c是方程的近似解。

如果不是,则根据f(c)与0的关系,更新区间[a, b]。

5. 重复步骤2至4,直到我们获得一个满足要求的近似解。

例如,考虑方程x^2 - 4x + 3 = 0。

我们可以选择初始的区间[a, b]为[1, 3]。

计算中点c = (1 + 3) / 2 = 2,然后计算f(c) = (2)^2 - 4(2) + 3 = -1。

由于f(c)不接近于0,我们可以更新区间为[a, b] = [2, 3],然后重复上述步骤,直到获得一个满足要求的近似解。

数学根号知识点总结

数学根号知识点总结

数学根号知识点总结一、根号的定义根号是一种数学符号,表示对一个数进行开平方的运算。

根号符号通常写成√,它出现在一个被称为被开方数的数字的前面。

下面是根号的一般形式:√a = b其中,a是被开方数,b是开方的结果。

在这个式子中,a是一个非负实数,b是一个实数。

二、根号的运算性质1. 根号的乘法性质如果a和b都是非负实数,则有√a * √b = √(a * b)这个性质可以用来简化根式的乘法运算,使得计算更加便利。

2. 根号的除法性质如果a和b都是非负实数,则有√a / √b = √(a / b)这个性质可以用来简化根式的除法运算,同样可以使得计算更加便利。

3. 根号的加减性质根号的加减性质指的是对根号进行加减运算时,只有在根号下的被开方数相等的情况下,才能进行加减运算。

即√a ± √b = √a ± b其中,a和b必须相等才能进行加减运算。

4. 根号的化简对于一个数的平方根,可以进行化简。

例如,根号中包含可以分解成完全平方因子的数时,可以进行化简。

例如√72 = √(36*2) = √36 * √2 = 6√2三、一些常用的根号运算1. 求根的平方给定一个数a,求其平方根,可以用根号的运算来表示。

即√a = b, 则b*b = a。

这个运算在代数中常常会用到。

2. 求根式的值给定一个根式,要求其值,就是要对根号下的被开方数进行求值。

通常可以分解被开方数,然后进行计算。

3. 求根的近似值对于一个不是完全平方数的数,要求其平方根的近似值,通常可以使用迭代法或二分法来进行计算。

这个运算在数值计算中有广泛的应用。

四、根号的应用1. 代数方程中的应用在代数方程中,根号常常出现在方程的解中。

对代数方程的解进行计算时,要对根号进行处理,以求得准确的解。

2. 几何中的应用在几何中,根号的运算常常用来求取长度、面积等物理量。

例如,在三角形的勾股定理中,就有根号的运算。

3. 微积分中的应用在微积分中,根号的运算常常用来对曲线的弧长、曲线的面积等物理量进行求取。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x + 2y − z = 2 例:解方程组 x+z=3 x + 3y = 8
>> A=[1 2 -1; 1 0 1; 1 3 0]; >> b=[2;3;8]; >> x=linsolve(A,b) b 是列向量! 是列向量!
21
非线性方程的根 非线性方程的根
非线性方程的数值求解 fzero(f,x0):求方程 f=0 在 x0 附近的根 :
牛顿法是目前求解非线性方程 (组) 的主要方法 牛顿法是目前求解非线性方程 组 牛顿的缺点 牛顿的缺点
对重根收敛速度较慢(线性收敛) 对重根收敛速度较慢(线性收敛) 对初值的选取很敏感, 对初值的选取很敏感,要求初值相当接近真解 在实际计算中, 在实际计算中,可以先用其它方法获得真解的一个粗 糙近似,然后再用牛顿atlab 解方程函数
roots(p):多项式的所有零点,p 是多项式系数向量。 是多项式系数向量。 fzero(f,x0):求 f=0 在 x0 附近的根,f 可以使用 附近的根,
inline、字符串、或 @,但不能是方程或符号表达式! 字符串、 但不能是方程或符号表达式!
linsolve(A,b):解线性方程组。 解线性方程组。 solve(f,v):求方程关于指定自变量的解,f 可以是用 求方程关于指定自变量的解, 可以是用
fzero('x^3-3*x+1',2)
内联函数: 内联函数: f=inline('x^3-3*x+1'); fzero(f,2)
f 不是方程,即不含等号! 不是方程,即不含等号!
缺点: 缺点:每次迭代需计算导数
中的解。 例:用松弛迭代法求 x3 - 3x + 1 = 0 在 [0, 1] 中的解。 (fuluD.m) )
14
主要内容
本实验讨论的数值算法
对分法 不动点迭代法 不动点迭代一般形式 松弛迭代法 牛顿迭代法
15
牛顿迭代法 牛顿迭代法
基本思想: 基本思想:
用线性方程来近似非线性方程,即采用线性化方法 用线性方程来近似非线性方程,即采用线性化方法 近似非线性方程 线性化 设非线性方程 f (x)=0 , f (x) 在 x0 处的 Taylor 展开为 f ''(η ) 2
f ( x ) f ''( x ) ϕ '( x ) = [ f '( x )]2
当 f ’(x*) ≠ 0 时 ϕ’(x*)=0 牛顿法至少二阶局部收敛
的解。 例:用牛顿法求 x3 - 3x + 1 = 0 的解。(fuluF.m)
17
牛顿法迭代公式 牛顿法迭代公式
牛顿的 牛顿的优点
至少二阶局部收敛,收敛速度较快, 至少二阶局部收敛,收敛速度较快,特别是当迭 代点充分靠近精确解时。 代点充分靠近精确解时。
字符串表示的方程、符号表达式或符号方程; 字符串表示的方程、符号表达式或符号方程; solve 也可解方程组 包含非线性 ; 也可解方程组(包含非线性 包含非线性); 得不到解析解时,给出数值解。 得不到解析解时,给出数值解。
19
多项式的零点 多项式的零点
多项式的零点 多项式的零点 x=roots(p):若 p 是 n 次多项式,则输出是 : 次多项式,则输出是 p=0 的 n 个根组成的 n 维向量 例:已知 p = 2x3 - x2 + 3,求 p(x) 的零点
ak + bk ,所以 2
0(k
∞)
对分法总是收敛的
对分法的收敛速度通常较慢 对分法的收敛速度通常较慢 对分法通常用来试探实根的分布区间,或给出根的一 对分法通常用来试探实根的分布区间, 分布区间 个较为粗糙的近似 个较为粗糙的近似
7
主要内容
本实验讨论的数值算法
对分法 不动点迭代法 不动点迭代一般形式 松弛加速迭代法 牛顿迭代法
22
非线性方程的根 非线性方程的根
fzero 的另外一种调用方式 fzero(f,[a,b])
区间内的根 的根。 求方程 f=0 在 [a,b] 区间内的根。 内可能有多个根, 方程在 [a,b] 内可能有多个根,但 fzero 只能求一个
可通过以下方式给出: 参数 f 可通过以下方式给出:
字符串: 字符串:
2
相关概念
线性方程 与 非线性方程
f ( x) = 0
如果 f(x) 是一次多项式,称上面的方程为线性方 是一次多项式,称上面的方程为线性方 否则称之为非线性方程 程;否则称之为非线性方程
本实验主要讨论非线性方程的数值求解 本实验主要讨论非线性方程的数值求解 非线性方程
3
主要内容
本实验讨论的数值算法
>> p=[2,-1,0,3]; >> x=roots(p) 若已知多项式的全部零点, 若已知多项式的全部零点,则可用 poly 函数给出该多项式 p=poly(x)
p( x ) = ( x − x1 )( x − x2 )L ( x − xn )
20
线性方程组求解
线性方程组求解 linsolve(A,b):解线性方程组 Ax = b :
适用范围
求有根区间内的 单重实根 或 奇重实根
5
对分法
内连续, 设 f(x) 在区间 [a,b] 内连续,且 f(a)f(b)<0。 对于给定的精度要求 ε ,若有 |f(z)|<ε ,则 z 就是我 们所需要的 f(x)=0 在区间 [a,b] 内的 近似根
具体步骤
(1) 令 x = (a+b)/2, 计算 f(x) (2) 若 |f(x)|< ε,则停止计算,输出近似解 x 则停止计算, (3) 若 f(a) · f(x) < 0,则令 b = x; 否则令 a = x (4) 返回第一步 中的解。( 。(fuluA.m) 例:用对分法求 x3 - 3x + 1 = 0 在 [0, 1] 中的解。( )
f ( x ) = f ( x0 ) + f '( x0 )( x − x0 ) + 2! ( x − x0 )
≈ f ( x0 ) + f '( x0 )( x − x0 ) 令: P ( x ) = 0
P( x)
( f '( x0 ) ≠ 0)
f ( x0 ) x = x0 − f '( x0 )
16
牛顿法迭代公式 牛顿法迭代公式
牛顿迭代公式
f ( x0 ) x = x0 − f '( x0 )
x k +1
f ( xk ) = xk − f '( xk )
k = 0, 1, 2, ... ...
ϕ(x) 即为牛顿法的迭代函数
牛顿法的收敛速度 牛顿法的收敛速度
f ( x) 令 ϕ ( x) = x − f '( x )
对分法 不动点迭代法 不动点迭代一般形式 松弛加速迭代法 牛顿迭代法
4
对分法
基本思想
将有根区间进行对分,判断出解在某个分段内,然后 将有根区间进行对分,判断出解在某个分段内, 再对该段对分,依次类推, 再对该段对分,依次类推,直到满足给定的精度为止
数学原理:介值定理 数学原理:
上连续, 设 f(x) 在 [a, b] 上连续,且 f(a) f(b)<0,则由介值定 理可得, 理可得,在 (a, b) 内至少存在一点 ξ 使得 f(ξ)=0 ξ
ϕ ( x*)
f ( x*) = 0
注:若得到的点列发散,则迭代法失效! 若得到的点列发散,则迭代法失效!
10
迭代法收敛性判断
如果存在 x* 的某个 邻域 Ω =(x*-δ , x* +δ ), 使 定义: 定义: 都收敛, 得对 ∀ x0 ∈ Ω 开始的迭代 xk+1 = ϕ(xk) 都收敛 附近局部收敛 局部收敛。 则称该迭代法在 x* 附近局部收敛。 , 定理 : 已知方程 x =ϕ(x),且 (1) 对 ∀ x∈[a, b],有 ϕ(x)∈[a, b]; ∈ , ∈ ; (2) 对 ∀ x∈[a, b],有|ϕ’(x)|≤q< 1; ∈ , ≤ ; 则对 ∀x0∈[a, b] ,由迭代 xk+1 = ϕ(xk) 得到的点列都 收敛, 收敛,且
q | x k − x * |≤ | x1 − x 0 | 1−q
11
k
迭代法收敛性判断
q 越小,迭代收敛越快 越小,迭代收敛越快
ϕ’(x*) 越小,迭代收敛越快 越小,迭代收敛越快
以上所给出的收敛性定理中的条件的验证都比较 困难,在实际应用中, 困难,在实际应用中,我们常用下面不严格的判别 方法: 方法:
6
对分法收敛性
收敛性分析
根据上面的算法, 根据上面的算法,我们可以得到一个每次缩小一半的 中含有方程的根。 区间序列 {[ak , bk ]} ,在 (ak , bk ) 中含有方程的根。 设方程的根为 x* ∈ (ak , bk ) ,又 xk =
1 1 1 1 | xk − x* |≤ ( bk − ak ) = ⋅ ( bk −1 − ak −1 )=L = k +1 ( b − a ) 2 2 2 2
8
不动点迭代法
基本思想 构造 f (x) = 0 的一个等价方程:x 的一个等价方程: 从某个近似根 x0 出发,计算 出发,
= ϕ ( x)
x k +1 = ϕ ( x k )
得到一个迭代序列
k = 0, 1, 2, ... ...
{ xk }k =0

f (x) = 0 f (x) 的零点
等价变换
数学实验
实验三
求代数方程的近似根(解)
1
相关文档
最新文档