Numeerinen analyysi, Jacobi iteraatio

A=

8 4 2
2 -10 5
4 3 12

b=(12 14 5) ja x0=(1,1,1)T

Etsitään Ax=b Jacobin iteraation avulla, python to the rescue, tarvitsee lisäksi sympy paketin.

Jacobin iteraatio, tarvitsee R ja D matriisit, R+D=A, ja D on sellainen että siinä on pelkästään An diagonaali alkiot, Rssa on kaikki muut alkiot (A paitsi diagonaali, diagonaali on siis nolla)

Ratkaiun xlle Jacobin metoodilla voi hakea xp+1=D-1*(b-R*xp)

ja meidän x0 on (1,1,1)

Iterointi on tylsä, niin tein apuvälinen pythonissa, imuroitava tästä. (jacobi.py)

100 iteratioita tuo sellaisen tuloksen:

[45502190750010748866637926376802839418771962084160239627428562128377528359876996907851888466360640494549/22751095375005374433318963188356415812317881508141465600000000000000000000000000000000000000000000000000]
[-45502190750010748866637926378812248273558641148971856115109777886682903550671173438644987770499052541357/45502190750010748866637926376712831624635763016282931200000000000000000000000000000000000000000000000000]
[567001098305681616424350246226450891771393003884075553961543062096420994771/30334793833340499244425284251141887749757175344188620800000000000000000000000000000000000000000000000000]

Tai liukuluvuilla: 2,-1,0

Update: evalf() funktio antaa liukuluvun. work=work.evalf()

seidel jacobi