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

合集下载

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

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

主要内容
本实验讨论的数值算法
对分法 不动点迭代法
不动ห้องสมุดไป่ตู้迭代一般形式 松弛加速迭代法
牛顿迭代法
8
不动点迭代法
基本思想 构造 f (x) = 0 的一个等价方程:x 从某个近似根 x0 出发,计算
( x)
xk 1 ( xk )
得到一个迭代序列
k = 0, 1, 2, ... ...
11
k
迭代法收敛性判断
q 越小,迭代收敛越快
’(x*) 越小,迭代收敛越快
以上所给出的收敛性定理中的条件的验证都比较 困难,在实际应用中,我们常用下面不严格的判别 方法:
当有根区间 [a, b] 较小,且对某一 x0[a, b] ,
|’(x0)| 明显小于 1 时,则我们就认为迭代收敛 例:用不动点迭代法求 x3 - 3x + 1 = 0 在 [0, 1] 中的解。
例:用对分法求 x3 - 3x + 1 = 0 在 [0, 1] 中的解。(fuluA.m)
6
对分法收敛性
收敛性分析
根据上面的算法,我们可以得到一个每次缩小一半的 区间序列 {[ak , bk ]} ,在 (ak , bk ) 中含有方程的根。 设方程的根为 x* (ak , bk ) ,又 xk
基本思想
将有根区间进行对分,判断出解在某个分段内,然后 再对该段对分,依次类推,直到满足给定的精度为止
数学原理:介值定理
设 f(x) 在 [a, b] 上连续,且 f(a) f(b)<0,则由介值定 理可得,在 (a, b) 内至少存在一点 使得 f()=0
适用范围
求有根区间内的 单重实根 或 奇重实根

第三章方程近似解法

第三章方程近似解法

(1) 画图法
y y1 x
0
2 3
y gx
x
(1) 画图法
对于某些看不清根的函数,可以扩大一下曲线
y y=kf(x) y=f(x)
0
x
记笔记
(2) 搜索法 (2) 逐步搜索法
对于给定的f (x),设有根区间为[A,B],从x0=A 出发,以步长h=(B-A)/n(n是正整数),在[A,B]内取 定节点:xi=x0+ih (i=0,1,2,…,n),从左至右检查f (xi)的符号,如发现xi与端点x0的函数值异号,则得到 一个缩小的有根子区间[xi-1,xi]。
所求的根 。
每次二分后,取有根区间
ak ,bk
Hale Waihona Puke 的中点xk1 2
(ak
bk )
作为根的近似值,得到一个近似根的序列
x0 , x1 , x2 , , xk , 该序列以根x*为极限 只要二分足够多次(即k足够大),便有 x* xk
这里ε为给定精度,由于 x* ak ,bk ,则
x* xk
由高等数学知识知, 设f (x)为区间[a,b]上的单 值连续, 如果f (a)·f (b)<0 , 则[a,b]中至少有一个 实根。如果f (x)在[a,b]上还是单调地递增或递减, 则仅有一个实根。
y
y=f(x)
a
x b
由此可大体确定根所在子区间,方法有: (1) 画图法 (2) 逐步搜索法
方程f(x)=0的m重根。当m=1时称x*为单根。若f(x)
存在m阶导数,则是方程f(x)的m重根(m>1) 当且仅当
f (x* ) f (x* ) f (m1) (x* ) 0, f (m) (x* ) 0

求方程近似根的方法

求方程近似根的方法

函数方程的近似根一.实验课题用二分法和牛顿迭代法(包括弦截法)编程求方程sinx-x*x/2=0的实根,要求误差不超过0。

0001。

输出迭代次数,初始值和根的近似值。

二.解决方法(a).二分法求方程的根,首先应该知道根的大概位置或大致范围,就是要确定一个区间(a,b),使f(x)=0在这个区间内只有一个根,区间(a,b)称为有根区间。

有根区间(a,b)内的任何一个值都可以作为方程根的初始近似值。

确定有根区间的方法,主要根据连续函数的一个性质:设f(x)在[a,b]上连续,f(a)*f(b)<0,则方程杂(a,b)内至少有一个根。

用二分法求实根x的思路,就是反复将含有x的区间一分为二,通过判断函数杂各个小区间端点处的符号,逐步对折缩小有根区间,直到区间缩小到容许误差范围之内,然后取最终小区间的中点作为实根x的近似值。

(b).牛顿法牛顿法是求解方程的一种重要的迭代法,其实质是将原方程线性化后获得一个迭代函数的方法。

记[a,b]为方程f(x)=0的根的存在区间,取区间[a,b]内的一点,对f(x)用微分中值定理,近似的有f(x)=f(x(0))+f’(x(0))*(x-x(0))令f(x(0)+f’(x(0))*(x-x(0))=0,显然这是一个线性方程。

解此方程,并设f’(x)不等于零,得到f(x)=0的近似根x(0)-f(x(0))/f’(x(0))记为x(1),即x(1)为方程的一个近似根x(1)=x(0)-f(x(0))/f’(x(0))为改善根近似程度,反复实施这一过程,得到牛顿迭代公式x(k+1)=x(k)-f(x(k))/f’(x(k))这相当于选择迭代函数F(x)=x-f(x)/f’(x)为避免复杂函数计算导f’(x)的困难,常用差分形式f(x(k))-f(x(k-1))/(x(k)-x(k-1)) 代替导数f’(x(k)),这样迭代公式的形式成为x(k+1)=x(k)-(x(k)-x(k-1))*f(x(k))/(f(x(k))-f(x(k-1))) 三.编程a)画图程序plot(x,zeros(size(x)))>> hold off>> grid>> x=0:0.001:2;>> plot(x,fun1(x),'r')>> hold on>> plot(x,zeros(size(x)))>> hold off>> gridfunction y1=fun1(x)y1=sin(x)-x.^2.*0.5;b)二分法程序function c=dicho(a,b)n=50;detra=0.0001;k=0;c=(a+b)*0.5;while abs(a-b)>detraif fun1(c)==0,break,endif fun1(a)*fun1(c)<0,b=c;else a=c;endk=k+1;if k>n,k,error('fail')else c=(a+b)*0.5;endend['Iterative time =',int2str(k)]c)牛顿法程序function [y,k]=newton(x0,n)y(1)=x0;detra=0.0001;k=1;t=x0-(sin(x0)-x0.^2*0.5)/(cos(x0)-x0);while abs(t-x0)>detrax0=t;k=k+1;y(k)=t;t=x0-(sin(x0)-x0.^2./2)./(cos(x0)-x0);if (k-1)>n error('n is full'), endendk=k-1;四.结果与结论1.二分法程序>> c=dicho(1,2)ans =Iterative time =14c =1.40442.牛顿法程序>> [y,k]=newton(1,50)y =1.0000 1.7428 1.4641 1.4070 1.4044k =4由此可见二分法案求根比较慢,牛顿法较快。

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

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

实验三 求代数方程的近似根(解)一、问题背景和实验目的求代数方程0)(=x f 的根是最常见的数学问题之一(这里称为代数方程,主要是想和后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当)(x f 是一次多项式时,称0)(=x f 为线性方程,否则称之为非线性方程.当0)(=x f 是非线性方程时,由于)(x f 的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间],[b a ,或给出某根的近似值0x .在实际问题抽象出的数学模型中,0x 可以根据物理背景确定;也可根据)(x f y =的草图等方法确定,还可用对分法、迭代法以及牛顿切线法大致确定根的分布情况.通过本实验希望你能: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)]):求解多项式11 n n n c x c x c ++++ 的所有根.例如:求解:32672270x x x ---=. p = [1 -6 -72 -27]; r = roots(p) r =12.1229 -5.7345 -0.38844.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=3.14167.subs(f, 'x ', a):将 a 的值赋给符号表达式 f 中的 x ,并计算出值. 例如:subs('x^2 ', 'x ', 2) ans = 4三、 实验内容首先,我们介绍几种与求根有关的方法:1.对分法对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根.设)(x f 在],[b a 上连续,0)()(<⋅b f a f ,即 ()0f a >,()0f b <或()0f a <,()0f b >.则根据连续函数的介值定理,在),(b a 内至少存在一点 ξ,使()0f ξ=.下面的方法可以求出该根:(1) 令02a bx +=,计算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 =;1112a b x +=. ……,有k a 、k b 以及相应的2k kk a b x +=. (3) 若()k f x ε≤ (ε为预先给定的精度要求),退出计算,输出结果2k kk a b x +=; 反之,返回(1),重复(1),(2),(3).以上方法可得到每次缩小一半的区间序列{[,]}k k a b ,在(,)k k a b 中含有方程的根.当区间长k k b a -很小时,取其中点2k kk a b x +=为根的近似值,显然有 1111111()()()2222k k k k k k x b a b a b a ξ--+-≤-=⨯⨯-==-以上公式可用于估计对分次数k .分析以上过程不难知道,对分法的收敛速度与公比为12的等比级数相同.由于1021024=,可知大约对分10次,近似根的精度可提高三位小数.对分法的收敛速度较慢,它常用来试探实根的分布区间,或求根的近似值.2. 迭代法1) 迭代法的基本思想:由方程()0f x =构造一个等价方程()x x φ=从某个近似根0x 出发,令1()k k x x φ+=, ,2,1,0=k可得序列{}k x ,这种方法称为迭代法.若 {}k x 收敛,即*lim k k x x →∞=,只要()x φ连续,有1lim lim ()(lim )k k k k k k x x x φφ+→∞→∞→∞==即可知,{}k x 的极限*x 是()x x φ=的根,也就是()0f x =的根.当然,若k x 发散,迭代法就失败.以下给出迭代过程1()k k x x φ+=收敛的一些判别方法:定义:如果根*x 的某个邻域*x x δ-≤中,使对任意的0x ,迭代过程1()k k x x φ+=, ,2,1,0=k 收敛,则称迭代过程在*x 附近局部收敛.定理1: 设**()x x φ=,在*x 的某个邻域Ω内'()x φ连续,并且'()1x q φ≤<,x ∈Ω,则对任何0x ∈Ω,由迭代1()k k x x φ+=决定的序列{}k x 收敛于*x . 定理2:条件同定理 1,则*101kk q x x x x q-≤--**()x x φ=*111k k k x x x x q+-≤-- 定理3:已知方程()x x φ=,且(1) 对任意的[,]x a b ∈,有()[,]x a b φ∈.(2) 对任意的[,]x a b ∈,有'()1x q φ≤<,则对任意的0[,]x a b ∈,迭代1()k k x x φ+=生成的序列{}k x 收敛于()x x φ=的根*x ,且*101kk q x x x x q-≤-- .以上给出的收敛定理中的条件要严格验证都较困难,实用时常用以下不严格的标准:当根区间[,]a b 较小,且对某一0[,]x a b ∈,()'x φ明显小于1时,则迭代收敛 (参见附录3).2) 迭代法的加速:a) 松弛法:若()x φ与k x 同是*x 的近似值,则1(1)()k k k k k x x x ωωφ+=-+是两个近似值的加权平均,其中k ω称为权重,现通过确定k ω看能否得到加速.迭代方程是:()x x ψ←其中()(1)()x x x ψωωφ=-+,令'()1'()0x x ψωωφ=-+=,试确定ω:当'()1x φ≠时,有11'()x ωφ=-,即当11'()k k x ωφ=-,'()11'()k k k x x φωφ--=-时,可望获得较好的加速效果,于是有松弛法:1(1)()k k k k k x x x ωωφ+=-+,11'()k k x ωφ=-松弛法的加速效果是明显的 (见附录4),甚至不收敛的迭代函数经加速后也能获得收敛.b) Altken 方法:松弛法要先计算'()k x φ,在使用中有时不方便,为此发展出以下的 Altken 公式:**()x x φ=,*x 是它的根,0x 是其近似根. 设10()x x φ=,21()x x φ=,因为****222121[][()()]()()x x x x x x x x 'x x φφφξ=+-=+-=+-, 用差商10211010()()x x x x x x x x φφ--=--近似代替()'φξ,有**212110()x x x x x x x x -≈+-- , 解出*x ,得2*212210()2x x x x x x x -≈--+ 由此得出公式(1)()k k x x φ= ; (2)(1)()k k x x φ=;(2)(1)2(2)1(2)(1)()2k k k kk k kx x x xx x x +-==-+, ,2,1,0=k 这就是Altken 公式,它的加速效果也是十分明显的,它同样可使不收敛的迭代格式获得收敛(见附录5).3. 牛顿(Newton)法(牛顿切线法) 1) 牛顿法的基本思想:()0f x =是非线性方程,一般较难解决,多采用线性化方法.20000''()()()'()()()2!f f x f x f x x x x x ξ=+-+- 记:000()()'()()P x f x f x x x =+-()P x 是一次多项式,用()0P x =作为()0f x =的近似方程.000()()'()()0P x f x f x x x =+-=的解为000()'()f x x x f x =-0('()0)f x ≠ 记为1x ,一般地,记1()'()k k k k f x x x f x +=-,2,1,0=k 即为牛顿法公式.2) 牛顿法的收敛速度:对牛顿法,迭代形式为:()()()f x x x x f'x φ=-= 222[()]()()()()()1[()][()]f'x f x f''x f x f''x 'x f'x f'x φ-=-=注意分子上的*()0f x =,所以当*()0f'x ≠时,*()0x φ=,牛顿法至少是二阶收敛的,而在重根附近,牛顿法是线性收敛的.牛顿法的缺点是:(1)对重根收敛很慢;(2)对初值0x 要求较严,要求0x 相当接近真值*x .因此,常用其他方法确定初值0x ,再用牛顿法提高精度.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', 0.5) (5) fzero('x^3-3*x+1', 1.4)(6) linsolve([1, 2, 3; 4, 5, 6; 7, 8, 0], [1, 2, 3]')体会一下,(2) (5) 用了上述 1 3 中的哪一种方法?以下是本实验中的几个具体的实验,详细的程序清单参见附录.具体实验1:对分法先作图观察方程:3310x x -+=的实根的分布区间,再利用对分法在这些区间上分别求出根的近似值.输入以下命令,可得()f x 的图象: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具体实验2:普通迭代法采用迭代过程:1()k k x x φ+=求方程3310x x -+=在 0.5 附近的根,精确到第 4 位小数.构造等价方程:313x x +=用迭代公式: 3113k k x x ++=, ,2,1,0=k用 Matlab 编写的程序参见附录2. 请利用上述程序填写下表:分析:将附录2第4行中的0.5x =分别改为2x =-以及 1.4x =,问运行的结果是什么?你能分析得到其中的原因吗?看看下面的“具体实验3”是想向你表达一个什么意思.用 Matlab 编写的程序参见附录3. 具体实验3:收敛/发散判断设方程3310x x -+=的三个根近似地取10.347x =,2 1.53x =和3 1.88x =-, 这些近似值可以用上面的对分法求得.迭代形式一:3113k k x x ++=21()'x x φ=11()0.120'x φ= 收敛 (很可能收敛,下同)12() 2.3141'x φ=> 不收敛 (很可能不收敛,下同) 13() 3.5341'x φ=> 不收敛迭代形式二:1213k kx x +=-2222()(3)x'x x φ=- 21()0.084'x φ= 收敛 22()7.044'x φ= 不收敛 23()13.167'x φ= 不收敛迭代形式三:131(31)k k x x +=-233()(31)'x x φ-=-31()8.410'x φ= 不收敛32()0.426'x φ= 收敛 33()0.283'x φ= 收敛具体实验4:迭代法的加速1——松弛迭代法31()3x x φ+=,2()'x x φ=,211k kx ω=-迭代公式为311(1)3k k k k k x x x ωω++=-+程序参见附录4.具体实验5:迭代法的加速2——Altken 迭代法迭代公式为:313)1(+=k kx x ,313)1()2(+=k k x xkk k k k kk x x x x x xx +---=+)1()2(2)1()2()2(12)(, ,2,1,0=k 程序参见附录5.具体实验6:牛顿法用牛顿法计算方程3310x x -+=在-2到2之间的三个根. 提示:3()31f x x x =-+,2'()33f x x =-迭代公式:32123133k k k kk x x x x x +-+=-- 程序参见附录6 (牛顿法程序).具体实验7:其他方法求下列代数方程(组)的解: (1)510x x -+=命令:solve('x^5-x+1=0')(2)2230431x y x y +=⎧⎨+=⎩命令:[x, y]=solve('2*x+3*y=0', '4*x^2+3*y=1')(3) 求线性方程组b x m =⋅的解,已知1234523456345674567856780m ⎛⎫ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪⎝⎭,12345b ⎛⎫⎪⎪ ⎪= ⎪⎪⎪⎝⎭命令: for i=1:5 for j=1:5m(i, j)=i+j-1; endendm(5, 5)=0; b=[1:5]'linsolve(m, b)思考:若 2100000012100000012100000012100000012100000012100000012100000012m ⎛⎫ ⎪ ⎪ ⎪ ⎪⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭,或m 是类似的但阶数更大的稀疏方阵,则m 应如何得到?四、自己动手1.对分法可以用来求偶重根附近的近似解吗? 为什么? 2.对照具体实验2、4、5,你可以得出什么结论? 3.选择适当的迭代过程,分别使用:(1)普通迭代法;(2)与之相应的松弛迭代法和 Altken 迭代法.求解方程0133=+-x x 在 1.4 附近的根,精确到4位小数,请注意迭代次数的变化.4.分别用对分法、普通迭代法、松弛迭代法、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<0 b=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)])71。

代数方程的近似解法

代数方程的近似解法

代数方程的近似解法在数学的广袤领域中,代数方程的求解是一个重要且基础的问题。

许多实际问题,从物理学中的运动规律到工程学中的设计优化,都可以归结为代数方程的求解。

然而,并非所有的代数方程都能通过简单的公式或方法精确求解,这时候近似解法就显得至关重要。

首先,我们来理解一下什么是代数方程。

代数方程是指由未知数和数字通过加、减、乘、除、乘方等运算以及等号连接而成的式子。

例如,形如$ax^2 + bx + c = 0$ 的一元二次方程就是我们常见的代数方程之一。

对于一元二次方程,我们有求根公式可以精确地求解,但对于更复杂的方程,如五次及以上的高次方程,一般就没有通用的求根公式了。

当面对无法精确求解的代数方程时,近似解法为我们提供了获取方程解的近似值的途径。

其中一种常见的方法是二分法。

二分法的基本思想非常直观:假设我们要求解方程$f(x) = 0$,首先找到两个点$a$ 和$b$,使得$f(a)$和$f(b)$的符号不同,这意味着在区间$(a,b)$内必然存在一个根。

然后取区间的中点$c =(a + b) /2$,计算$f(c)$的值。

如果$f(c) = 0$,那么$c$ 就是方程的根;如果$f(c)$与$f(a)$的符号相同,那么根就在区间$(c,b)$内,反之则在区间$(a,c)$内。

通过不断重复这个过程,将包含根的区间不断缩小,从而逐渐逼近根的准确值。

例如,考虑方程$f(x) = x^3 5x + 1 = 0$。

我们可以先尝试$x = 0$,$f(0) = 1$;再尝试$x = 2$,$f(2) =-1$。

因为$f(0)$和$f(2)$的符号不同,所以根在区间$(0,2)$内。

取中点$x = 1$,计算得$f(1) =-3$,所以根在区间$(1,2)$内。

再取中点$x = 15$,依次类推,不断缩小根所在的区间。

除了二分法,牛顿法也是一种广泛应用的近似解法。

牛顿法的基本思路是利用函数的切线来逐步逼近方程的根。

(整理)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种方法,求方程的正的近似根,.(建议取.时间许可的话,可进一步考虑的情况.)上一页回目录下一页。

用数学实验探究方程的近似解例析

用数学实验探究方程的近似解例析

用数学实验探究方程的近似解例析(秦皇岛市第一中学河北秦皇岛066000)史洪杰李会娥摘要用数学实验的方法在计算机上利用数学软件的交互功能,现场演示数据与图像之间的关系,把不常见的、难以理解的内容变为直观的、浅显的动态感性材料,使学生既可以看到图形产生的过程,又有了一种真实的感受,享受数学美的过程,让学生轻松、快乐地学习数学,掌握数学知识。

关键词数学实验GeoGebra方程的近似值一、问题的提出信息技术与数学课堂整合,使用信息技术改进数学教学已经引起广泛的重视。

一些过去只能通过思维、表象和想像领会的数学内容,可以直观的表示和处理。

一些与数据处理有关的繁难计算,都能通过计算机进行。

现代信息技术强大的认知工具作用,无疑将极大地影响数学课程的发展。

我们的数学课程,应该提供给学生越来越充分的自主探索、合作交流、积极思考和实践操作的机会。

现实的、有趣的和探索性的数学学习活动将成为数学课程内容的有机组成部分。

本文试就教师如何利用计算机数学软件GeoGebra为学生创设实验情境,提高学生思维能力进行探讨。

GeoGebra是整合几何、代数、微积分及统计的动态数学软件,它是由美国佛罗里达州亚特兰大学的数学教授MarkussHo-henwarters所设计的。

一方面,GeoGebras为一套动态的几何系统,可用点、向量、线段、直线、圆锥曲线来作图,并随后动态修改。

另一方面,可在命令框中直接输入代数表达式,输入完成后回车,所输入的代数表达式即可在代数区中显示,同时相应的几何图形也会在绘图区出现。

在展示函数图象上比几何画板具有强大的优势。

问题1:用二分法求方程lnxx+2xs-s6s=s0的近似解(精确到0.1)用二分法求方程的近似解是求方程近似解的常用方法,学生已经学习了函数,理解函数零点和方程根的关系,初步掌握了函数与方程的转化思想。

但是对于求函数零点所在区间,只是比较熟悉求二次函数的零点,对于高次方程和超越方程对应函数零点的寻求会有困难。

08 第八节 方程的近似解

08 第八节 方程的近似解

第八节方程的近似解高次代数方程或其余范例的方程求准确根普通比拟艰苦盼望追求方程近似根的无效盘算办法.散布图示★咨询题的提出★二分法★切线法★例1★例2★内容小结★习题3-8★前往内容要点一、求近似实根的步调:〔1〕断定根的年夜抵范畴 根的断绝〔2〕以根的断绝区间的端点作为根的初始近似值,逐渐改良根的近似值的准确度,直至求得满意准确度请求的近似实根.二、二分法跟切线法(牛顿法).例题选讲例1用二分法求方程的实根的近似值,使偏差不超越解令显然在内延续.故在内枯燥添加,至少有一个实根.在内有独一的实根.取等于一个断绝区间.故故故故故故故假设0.670作为根的缺乏近似值,0.671作为根的多余近似值,那么其偏差都小于例2用切线法求方程的实根的近似值,使偏差不超越解令因故是一个断绝区间.在上,与同号,令用切线法盘算得:盘算停顿.所得根的近似值为0.671,其偏差都小于牛顿(Newton,lsaac,1643~1727)天然跟天然法则暗藏在黑夜里,天主说“落生牛顿〞.因而天下就充溢黑暗.Newtan墓志铭数学跟迷信中的宏年夜停顿,简直老是树破在作出一点一点滴奉献的很多人的任务之上.需求一团体来走那最高跟最初的一步,那团体要可以灵敏地从缭乱的猜想跟阐明中清算出后人的有代价的办法,有充足的设想利巴这些碎片从新构造起来,同时充足勇敢地制订一个雄伟的方案.在微积分中,那团体确实是牛顿.牛顿(1642-1727)生于英格兰乌尔斯托帕的一个小村落里,父亲是在他诞生前两个月逝世的,母亲治理着夫君留下的农庄,母亲再醮后,是由外祖母把他抚育年夜.并供他上学.他从小在低规范的地点黉舍承受教导,除对机器计划有兴味外,是个不什么特别的青年人,1661年他进入剑桥年夜学的三一学院进修,年夜学时代除了巴罗(Barrow)外,他从他的教师那儿只失掉了非常少的一点鼓励,他本人做试验同时研讨事先一些数学家的著述,如Descartes的《多少何》,Galileo,Kepler等的著述。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
f ''( x0 ) f ( x ) = f ( x0 ) + f '( x0 )( x − x0 ) + ( x − x0 ) 2 2! ≈ f ( x0 ) + f '( x0 )( x − x0 ) P( x)
令: P ( x ) = 0
f ( x0 ) x = x0 − f '( x0 )
( f '( x0 ) ≠ 0)
7. 求方程根 解)的其它方法 求方程根(解 的其它方法
(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', 0.5) (5) fzero('x^3-3*x+1', 1.4) (6) linsolve([1, 2, 3; 4, 5, 6; 7, 8, 0], [1, 2, 3]')
k = 0, 1, 2, ... ...
Altken 法同样具有较好的加速效果
牛顿迭代法
基本思想: 基本思想:
用线性方程来近似非线性方程,即采用线性化方法 用线性方程来近似非线性方程,即采用线性化方法 近似非线性方程 线性化 设非线性方程 f (x)=0 , f (x) 在 x0 处的 Taylor 展开为
(1) 令 x0 = ( a + b) / 2,计算 f ( x0 ); ( 2) 若 | f ( x0 ) |< ε,则 x0 就是我们所要 的近似根,
停止计算, 输出结果 x = x0; (3) 若 f ( a ) ⋅ f ( x0 ) < 0,令 a1 = a, b1 = x0 ; 否则令 a1 = x0 , b1 = b; ( 4) 令 x1 = ( a1 + b1 ) / 2, 若 | f ( x1 ) |< ε,则停止计算, 输出结果 x = x1; 若 f ( a1 ) ⋅ f ( x1 ) < 0,令 a2 = a1 , b2 = x1; 否则令 a2 = x1 , b2 = b1;
定理 2:如果定理 1 的条件成立,则有 如下估计
1 qk | x k +1 − x k | | x k − x * |≤ | x1 − x 0 | | x k − x * |≤ 1−q 1−q
迭代法收敛性判断
已知方程 x =ϕ(x),且 , 定理 3: (1) 对 ∀ x∈[a, b],有 ϕ(x)∈[a, b]; ∈ , ∈ ; (1) 对 ∀ x∈[a, b],有|ϕ’(x)|≤q< 1; ∈ , ≤ ; (2) 则对 ∀x0∈[a, b] ,由迭代 xk+1 = ϕ(xk) 得到 的点列都收敛, 的点列都收敛,且
q | x k − x * |≤ | x1 − x 0 | 1−q
q 越小,迭代收敛越快 越小,迭代收敛越快
ϕ’(x*) 越小,迭代收敛越快 越小,迭代收敛越快
k
迭代法收敛性判断
以上所给出的收敛性定理中的条件的 验证都比较困难,在实际应用中,我们 常用下面不严格的判别方法:
较小, 当有根区间 [a, b] 较小,且对某一 x0∈[a, b] ,
0(k
∞)
对分法总是收敛的
但对分法的收敛速度较慢 但对分法的收敛速度较慢 通常用来试探实根的分布区间, 通常用来试探实根的分布区间, 分布区间 或给出根的一个较为粗糙的近似 粗糙的近似。 或给出根的一个较为粗糙的近似。
迭代法
基本思想
构造 f (x) = 0 的一个等价方程:x 的一个等价方程: 从某个近似根 x0 出发,计算 出发,
相关概念
线性方程 与 非线性方程
f ( x) = 0
如果 f(x) 是一次多项式,称上面的方程为线性方 是一次多项式,称上面的方程为线性方 否则称之为非线性方程 非线性方程。 程;否则称之为非线性方程。
对分法
基本思想
将有根区间进行对分,判断出解在某个分段内,然后 将有根区间进行对分,判断出解在某个分段内, 再对该段对分,依次类推,直到满足给定的精度为止。 再对该段对分,依次类推,直到满足给定的精度为止。
x * − x2 = ϕ ( x*) − ϕ ( x1 ) = ϕ '(ξ )( x * − x1 )
ϕ '(ξ ) ≈ ϕ ( x1 ) − ϕ ( x0 )
x1 − x0 x2 − x1 = x1 − x0
x2 − x1 x* ≈ x2 + ( x * − x1 ) x1 − x0
( x2 − x1 ) 2 x* ≈ x 2 − x2 − 2 x1 + x0
Altken 迭代法
Altken迭代公式
xk
(1)
( x2 − x1 ) 2 x* ≈ x 2 − x2 − 2 x1 + x0
= ϕ ( xk ), xk
( 2)
= ϕ ( xk )
(1)
x k +1
( xk ( 2) − xk (1) ) 2 = xk ( 2) − ( 2) (1) x k − 2 xk + xk
ψ ( x ) = (1 − w ) x + wϕ ( x )
的确定: 加权系数 wk 的确定:令 ψ’(x)=0 得
w= 1 1 − ϕ '( x )
wk =
1 1 − ϕ '( xk )
松弛迭代法
松弛法迭代公式:
xk +1 = (1 − wk ) ⋅ xk + wk ⋅ ϕ ( xk )
1 wk = , 1 − ϕ '( xk )
(ϕ '( xk ) ≠ 1)
松弛法具有较好的加速效果,甚至有些不收敛的迭 松弛法具有较好的加速效果,甚至有些不收敛的迭 加速后也能收敛。 代,加速后也能收敛。
缺点:每次迭代需计算导 数
Altken 迭代法
Altken迭代法
用 差商 近似 微商 是方程的根, 设 x* 是方程的根,则由中值定理可得
具体实验1:对分法 先作图观察方程:x 3 − 3 x + 1 = 0
y
O
x*
x1
x0
x
牛顿法迭代公式
牛顿迭代公式
x k +1 f ( xk ) = xk − f '( xk )
f ( x0 ) x = x0 − f '( x0 )
k = 0, 1, 2, ... ...
ϕ(x) 即为牛顿
法的迭代函数
f ( x ) f ''( x ) ϕ '( x ) = [ f '( x )]2
数学实验
实验三
求代数方程的近似根 (解)
实验三、 实验三、近似求解代数方程 问题背景和实验目的
解方程(代数方程) 解方程(代数方程)是最常见的数学问题之 一,也是众多应用领域中不可避免的问题之 目前还没有一般的解析方法来求解非线性方程,但如 一。
果在任意给定的精度下,能够解出方程的近似解,则可 以认为求解问题已基本解决,至少可以满足实际需要。 本实验主要介绍一些有效的求解方程的数值方法:对 分法,迭代法 和 牛顿法。同时要求大家学会如何利用 Matlab 来求方程的近似解。
lim xk +1 = lim ϕ ( xk ) = ϕ lim xk
k →∞ k →∞ k →∞
(
)
x*
即 x* = ϕ ( x*)
ϕ ( x*)
f ( x*) = 0
注:若得到的点列发散,则迭代法失效! 若得到的点列发散,则迭代法失效!
迭代法收敛性判断
如果存在 x* 的某个 邻域 Ω =(x*-δ , x* +δ ), 使 定义: 都收敛, 得对 ∀ x0 ∈ Ω 开始的迭代 xk+1 = ϕ(xk) 都收敛 附近局部收敛 局部收敛。 则称该迭代法在 x* 附近局部收敛。 内连续, 设 x* , 定理 1: =ϕ(x*),的某个 邻域 Ω 内连续,且对 ∀x∈Ω 都有 |ϕ’(x)|≤q< 1, 则对 ∀x0∈ Ω,由迭 ∈ ≤ 得到的点列都收敛。 代 xk+1 = ϕ(xk) 得到的点列都收敛。
>> syms x >> f=sin(x)+3*x^2; >> g=diff(f,x) >> g=diff('sin(x)+3*x^2','x')
1.例 syms x t diff(sin(x^2)*t^6, 't', 6) ans= 720*sin(x^2) 2.roots([c(1), c(2), …, c(n+1)])求解:求解多项式
= ϕ ( x)
x k +1 = ϕ ( x k )
得到一个迭代序列
k = 0, 1, 2, ... ...
{ xk }k =0

f (x) = 0 f (x) 的零点
等价变换
x = ϕ (性
收敛性分析
若 收敛, 连续, { xk } 收敛,即 lim xk = x *,假设 ϕ(x) 连续,则 k →∞
牛顿法的收敛速
f ( x) 度 ϕ ( x ) = x − f '( x ) 令
当 f (x*) ≠ 0 时 ϕ’(x*)=0 牛顿法至少二阶局部收敛
牛顿法迭代公式
牛顿的优点
至少二阶局部收敛,收敛速度较快, 至少二阶局部收敛,收敛速度较快,特别是当迭 代点充分靠近精确解时。 代点充分靠近精确解时。
其他 Matlab 相关函数
diff g=diff(f,v):求符号表达式 f 关于 v 的导数 : g=diff(f):求符号表达式 f 关于默认变量的导数 关于默认变量 默认变量的导数 : g=diff(f,v,n):求 f 关于 v 的 n 阶导数 :
相关文档
最新文档