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()