牛顿迭代法解二元方程组以及误差分析 matlab实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

),....,(,.0],;,[0

),()(),()(),(0),()(),()(),(,.**,0],;,[),()()(),()()(,0),(),(),(])()[(),(),(),(),(),(])()[(),(),(2,),(])()[(21),(])()[(),(),()(2

)(''))((')()(:

11001n 1n 110101010100000000000000000000000000200000000000

00

000y x y x g f g f fg g f y y g f g f g f fg x x g g f f y x g y y y x g x x y x g y x f y y y x f x x y x f y x y x y x g f g f fg g f y y g f g f g f fg x x g f g f fg g f y y g f g f g f fg x x g g f f y x g y x g y y y x g x x y x f y x f y y y x f x x y x g y x f y x g y y y x x x y x g y x g y x f y x g y x f y y y x x x y x f y x f y x y x f y y y x x x y x f y y y x x x y x f y x f x x f x x x f x f x f x y y x x

x n n x y y x y y y x y x n n y n n n x n n n n n y n n n x n n n n n x y y x x

x x y y x y y x y y x x x x y y x y y y x y x y x y x y y x x y y x x y x y y x x ),由此可得到迭代序列(,则其解可记为:

的行列式不为若系数矩阵:

附近的线性化方程组为在一元方程牛顿迭代法,类似

,的新近似值于是就得到了根,则可得解:

的行列式不为若系数矩阵),(),(

),(),(

则两式构成方程组:

令可得:

构成二元方程组,同样与若另有一方程:

阶小项,得到线性方程忽略在方程根附近取值时,当二元函数的展开为:

开类似一元函数的泰勒展⎪⎪⎩

⎪⎪⎨⎧-+-+=-+-+=⎪⎩⎪⎨⎧=-+-+=-+-+⎪⎪⎩

⎪⎪⎨⎧-+-+=-+-+=⇒⎪⎪⎩⎪⎪⎨⎧-+-=--+-=-⎪⎩⎪⎨⎧-=-+--=-+-==∂∂-+∂∂-+=∂∂-+∂∂-+=∂∂-+∂∂-+∂∂-+∂∂-+=-+

-+=++========η

ξξ

举例,给定方程组为:

4)exp(),(1

)4arctan(),(222331-+=--+=--y x y x g y x y x f

先用matlab 自带函数solve 解此方程组,确定牛顿迭代时的初值范围,得到根为:

⎨⎧==8493476.0848937.108y x 作图验证:

此组值确为方程的根。

通过观察我们可以发现y 的取值必须大于0。这在程序中必须说明,如果迭代过程中y 小于0,则此迭代法发散。

误差分析:因为范数等价的原因,我们选择2范数。将两次相邻迭代差差范数的比值,即相对误的与,2x x n n 1+n x 的2范数作为误差,存储与一个向量或矩阵中,并作出曲线图,观察迭代过程中误差的变化情况。

如选初值为(12,0.3),得到误差图形为:

选初值为(12,1.2),误差图为:

我们可以发现误差在前3-5次迭代的时候迅速下降,但是中间会有上升的过程,直至最后误差达到我们设定的误差值。由此猜想迭代过程可能漏掉了一些根,利用作图,得到曲线如下:

可以发现还有两组根,用牛顿迭代法只能得到一组值,可能是因为所给方程比较特殊,它的定义域中x,y 均不能为0,导致函数不连续。 另外,也可能因为函数不连续,导致初值只能在根的附件变化时才能得到收敛的结果。

因此我们不妨将初值选的稍微小一些,如:[1,2],得到根为

⎨⎧==2.7637 y 0.8925x 选初值为[-1,4],得到根为

⎨⎧==3.4880y -0.8757x 综上所述,此方程组有三组根,不同的初值,会得到不同的解的情况,也会有不同的误差情况。初值选得越接近真值,误差变化程度越小,迭代次数也越少。

程序在另三个附件中。

同理,对于n 元函数方程组,我们有:

.n .)('.

)],...,(),...,,...,,([)(.

n 1n )(')(.,...,,0],...,;......;,...,,[),...,,()(...)()(....

....),...,,()(...)()()()

()(1)()(2)(11)()()1()()()()1(21112111)

1(1012200201n 0202)1(2101)1(1

002011102102)1(21101)1(1有限时的解编程,依然可以得到类似二元方程组,那么利用牛顿迭代法,为系数矩阵是一行向量为值迭代得到的各自变量的次

是第的值,次迭代得到的各自变量是第牛顿迭代序列依二元方程组,可得到的值。

同样可解出,

的行列式不为若系数矩阵,以此类推。

知数第一次迭代后的值的初始值,第一个未

分别表示第一个未知数,求导,

个方程对第二个未知数表示,第式中,如)()()()()()()()()()()()()(matlab X F x x fn x x x f X F X X X F X F X X x x x f f f f f x x x n f x x x f f x x f x x f x x x x x f f x x f x x f x x n n n n n n n n n n n n n n n n nxn nx xn x x nx n nxn n n nx nx n xn n n x x +-=⎪⎪⎩⎪⎪⎨⎧-=-++-+--=-++-+-++

相关文档
最新文档