8. Yhtälöiden ratkaisuja Newtonilla, animaatioita Käsitellään puhtaana Maple-työnä ja myös Maple-Matlab-yhteistyönä. restart with plots : N d /evalf K f D f Nsymb d / K f D f lprint Nsymb +(*cos()-sin()-1)/(*sin()) # Tätä käytetään Maple-työssä N := /evalf K f D f # Tämä tarvitaan Maple-Matlab-yhteiskäyttöön. Nsymb := / K f D f f d /$cos K sin K 1; f := / cos K sin K 1 Nsymb C cos K sin K 1 sin (1.1) (1.) (1.3) (1.4) 1) Maple-Matlab: Siirretään tämä kaava Matlab-ikkunaan (copy/paste) Puhdas Matlab-työ vaatisi derivoimista ja N-kaavan sieventämistä ja kirjoittamista Matlabille. Sen kaiken hoitaa meille Maple. Tehdään tässä Matlab-iterointi mahdollisimman yksinkertaisesti toistamalla komentoikkunassa nuoliylös-näppäimellä =N()-riviä (tai editorissa CTR-ENTER). Toki voitaisiin hoitaa forsilmukalla tai vielä paremmin while-rakenteella. Newtonin menetelmä suppenee yleensä hyvin nopeasti tai sitten hajaantuu, joten iterointiaskeleita ei yleensä tarvita monta. syms vectorize(+(*cos()-sin()-1)/(*sin())) % vectorize tekee pisteet. +(cos().*-sin()-1)./sin()./ N=@() +(cos().*-sin()-1)./sin()./ =6; format long =N() = 11.994664434743 =N() = 10.9901103161904
=N() % Toista n-nappaimella. =.99346358708939 =N() % Tämä ampuu kauas. Vaihdetaan alkupistettä. =6.5 = 6.500000000000000 =N() = 10.17073934666555 =N() = 10.9955757003300 =N() = 11.994664434743 =N() = 10.9901103161904 =N() =N() ) Jatketaan nyt puhtaalla Maple-linjalla: fkuva d plot f, = 0..3$Pi, color = black ; fkuva := PLOT... N ; C cos K 1. sin K 1. sin 0 d PiC.3; # Otetaan toinen alkupiste kuin edellä. 0 := p C 0.3 (1.5) (1.6) (1.7) for k from 1 to 5 do k d N k K 1 end do 1 := 7.366983641 := 7.607183306 3 := 7.59100585 4 := 7.5905618 5 := 7.5905618 (1.8) Tehtävässä ei pyydetty, mutta tehdään graafinen havainnollistus piirtämällä tangentteja sivuamispisteestä -akselin leikkauspisteeseen. Tässä on riemastuttavan kätevä mahdollisuus määritellä grafiikkaarvoinen funktio:
tangkuva d 0/plot 0, 0, 0, f 0, N 0, 0 tangkuva := 0/plot 0, 0, 0, f 0, N 0, 0 (1.9) #tangd f, 0, /f 0 C D f 0 $ K 0 display-komennolle annetaan jono näitä kuvia, kunkin kuvan "kantapiste" on ao. iteraatiojonon piste. display fkuva, seq tangkuva k K 1, k = 1..4 5 0 p p 3 p p 5 p 3 p K5 K10 Selvemmin prosessi näkyy animaationa, se saadaan lisäämällä edelliseen valitsin insequence=true Koska haluamme kuvaajan näkyvän jokaisessa animaatiokehyksessä, jouduimme lisäämään display(fkuva,...) muuten fkuva pyyhkiytyisi seuraavassa kehyksessä pois. display seq display fkuva, tangkuva k K 1, k = 1..9, insequence = true
5 0 p p 3 p p 5 p 3 p K5 K10 Klikkaamalla kuvaa, saat animaatiovalikon. Newton suppenee näillä arvoilla turhan nopeasti. Voi kokeilla muita lähtöarvoja. Tässä on joka tapauksessa hyvin kätevä yleinen tekniikka, jolla erilaisia iteraatioita on tavattoman helppo graafisesti havainnollistaa. 0 d 6.5 # Otetaan sama alkup. kuin Matlab;ssa 0 := 6.5 (1.10) for k from 1 to 6 do k d N k K 1 end do 1 := 10.1707393 := 11.9946645 3 := 10.9901103 4 := 10.99557570 5 := 10.9955749 6 := 10.9955749 (1.11)
fkuva d plot f, = 0..1, color = black ; fkuva := PLOT... display seq display fkuva, tangkuva k K 1, k = 1..5, insequence = true (1.1) 8 6 4 0 K 4 6 8 10 1 K4 K6 K8 K10 display seq display fkuva, tangkuva k K 1, k = 1..5, insequence = false
8 6 4 0 K 4 6 8 10 1 K4 K6 K8 K10 b) f d / C sin K8 plot f, =K4.. 4 f := / C sin K 8 (1.13)
8 6 4 K4 K3 K K1 0 1 3 4 K K4 K6 K8 0 dk1 0 := K1 (1.14) for k from 1 to 7 do k d N k K 1 end do 1 := K6.37198855 := K3.60438447 3 := K.933318548 4 := K.87534609 5 := K.87467551 6 := K.874675468 7 := K.874675468 (1.15) fkuva d plot f, =K7..4, color = black ; fkuva := PLOT... (1.16)
display seq display fkuva, tangkuva k K 1, k = 1..6, insequence = true 40 30 0 10 K6 K4 K 0 4