Razmotrit ćemo nekoliko iterativnih postupaka za rješavanje jednadžbe
Metoda polovljenja se sastoji u tome da se segment
na kojem je
ispunjen uvjet
raspolovi, tj. nađe polovište
Ako
je
onda je
U protivnom se ponovi operacija na onom od
segmenata
ili
na kojem je ispunjen uvjet
(3.2), itd. Tako imamo sljedeći algoritam.
Ovaj algoritam omogućava sljedeći program u programskom paketu 'Mathematica'.
f[t_]=; (* funkcija *) a=; b=; (* pocetni interval *) x=(a+b)/2.; n=0; Print[{n,a,x,b}]; While[ N[f[x]]!=0., Print[" ",N[f[a]]," ",N[f[x]]," ",N[f[b]]]; If[ f[b]f[x]<0, a=x;x=(x+b)/2, b=x;x=(a+x)/2 ]; n=n+1; If[n>100,Break[] (* prekid petlje nakon 100 koraka *) ]; Print[{n,a,x,b}]]
Metoda uvijek konvergira, ali vrlo sporo. Očito je
Rješenje. Računanjem vrijednosti polinoma
na skupu
cijelih brojeva, dobivamo da je
a
Tako na
segmentu
postoji bar jedno rješenje. Ako na ovaj problem
primijenimo gornji program, dobivamo sljedeću tablicu.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Zadatak iz primjera 3.1 se može doduše egzaktno riješiti pomoću Cardanovih formula. Ipak te formule nisu tako jednostavne kao formula za rješenje kvadratne jednadžbe, pa se algebarske jednadžbe trećeg stupnja često rješavaju približnim metodama. U sljedećem primjeru se rješava jednadžba koju ne možemo egzaktno riješiti.
Rješenje. Iz slike 2.7 se vidi da se traženo rješenje nalazi
u intervalu
Neka je
Izračunajmo sada koju aproksimaciju treba izračunati da bi se
dobila točnost na četiri decimale. Iz formule (3.3)
slijedi da treba naći
tako da bude
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Napišimo jednadžbu (3.1) u obliku
Imamo sljedeći algoritam
Ovaj algoritam dobro opisuje sljedeća slika.
Imamo sljedeći program za metodu iteracije
varphi[t_]=; (* funkcija *) x=; (* pocetna aproksimacija *) n=0; While[ N[f[x]]!=x, x=varphi[x]; n=n+1; If[n>100,Break[]]; (* prekid procesa nakon 100 iteracija *) Print[N[x]] ]
Može se dogoditi da ne postoji rješenje,
Da bi ova metoda funkcionirala, moraju brojevi
biti u
za bilo koju početnu
aproksimaciju. To će svakako biti ispunjeno, ako je
A kako je funkcija
još i neprekidna, onda postoji bar jedna točka presjeka.
Tada za proizvoljan
niz
definiran algoritmom (3.5) konvergira k jedinstvenom
rješenju jednadžbe
Dokaz. Dokažimo najprije da postoji
barem jedno rješenje. Stavimo
Prema uvjetima
teorema,
i
Budući da je
neprekidna funkcija na segmentu
slijedi da postoji
bar jedan
takav da je
tj.
dakle
je rješenje.
Dokažimo sada
da ne postoji više od jednog rješenja. Pretpostavimo da su
i
dva međusobno različita rješenja. Tada, prema
Lagrangeovom teoremu srednje vrijednosti,
Apriornu ocjenu greške dobivamo na sljedeći način. Iz
Aposteriorna ocjena greške je ocjena koja se računa pomoću dobivenih aproksimacija. U ovom slučaju ona je
Rješenje. Iz
Imamo na pr.
Rješenje. Jednadžbu treba napisati u obliku
Neka je
klase
na
Želimo riješiti
jednadžbu
Newtonova metoda, koja se često zove
Newton-Raphsonova metoda ili metoda
tangente, sastoji se u tome da se -va
aproksimacija
odredi kao sjecište tangente na graf funkcije
u
točki s apscisom
s osi
Jednadžba tangente na graf funkcije
u točki
je
Time smo dobili sljedeći algoritam.
f[t_]=; (* funkcija *) x=; (* pocetna aproksimacija *) n=0; While[ N[f[x]]!=0., x=x-f[x]/f'[x]; n=n+1; If[n>100,Break[]]; (* prekid nakon 100 iteracija *) Print[N[x]] ]
Rješenje. Pomoću programa 3 s početnom aproksimacijom
dobivamo
Rješenje. Pomoću programa 3 s početnom aproksimacijom
dobivamo
S druge strane ako s istim programom (Newtonovom metodom) pokušamo riješiti jednadžbu
Tada Newtonova metoda konvergira k jedinstvenom rješenju jednadžbe
za
bilo koju početnu aproksimaciju
Dokaz. Kombinirajući uvjete iz
teorema, mogli bismo promatrati razne slučajeve, no može se
pokazati da se svaki od njih, uzimajući
umjesto
i/ili
umjesto
može svesti na slučaj
Rješenje. Izračunati -ti
korijen iz broja
znači riješiti po
jednadžbu
Što se tiče izbora početne aproksimacije
i konvergencije,
primijetimo sljedeće. Za
imamo
Zatim, zbog
za svaki
je
i
Na kraju, iz pozitivnosti
funkcije
slijedi rast funkcije
pa je
onaj rub segmenta
u kojem
ima manju vrijednost. Da bi vrijedilo
Specijalno kad je
imamo formulu za približno računanje drugog
korijena
U programskom paketu Mathematica se ovaj postupak programira vrlo jednostavno
Map[Nest[((k-1) # + c/#^(k-1))/k&,x0,#1]&,Range[p]]//N
p
broj aproksimacija koje želimo, a broj x0
je početna
aproksimacija. Naravno k
je broj korijena koji se vadi.
Uvjerite se na primjerima kako je formula za računanje drugog korijena efikasna.
Rješenje. To je isto kao približno riješiti jednadžbu
Ako želimo ocijeniti grešku, primijetimo da je Newtonova metoda zapravo metoda iteracije, ako stavimo
Neka je
Rješenje. Treba naći približnu vrijednost od
Neka je
Jedan od problema u Newtonovoj metodi je potreba računanja derivacije
u svakom koraku. Najjednostavniji način da se to izbjegne je da se
umjesto derivacije
u formulu algoritma uvrsti konstanta
Ideja metode je da se -va aproksimacija odredi kao sjecište osi
i sekante kroz točke na grafu funkcije
čije apscise su
prethodne aproksimacije takve, da su vrijednosti funkcije u njima
različitog znaka. Dakle, možemo koristiti Newtonovu metodu u kojoj
zamjenimo s koeficijentom sekante
Tako imamo sljedeći algoritam.
f[t_]=; (* funkcija *) a=; b=; (* pocetni interval (zadati kao realne brojeve) *) If[f[a]f[b]<=0, x=(a f[b]-b f[a])/(f[b]-f[a]); n=0; Print[{" ",n,N[a],N[x],N[b]}]; While[ N[f[x]]!=0., Print[N[f[a]]," ",N[f[x]]," ",N[f[b]]]; If[ f[b]f[x]<0, a=x;x=N[(x f[b]-b f[x])/(f[b]-f[x])], b=x;x=N[(a f[x]-x f[a])/(f[x]-f[a])] ]; n=n+1; If[n>100,Break[] ]; Print[{" ",n,N[a],N[x],N[b]}] ],"Na odabranom segmentu nije ispunjen nuzan uvjet postojanja rjesenja "]
Metoda uvijek konvergira. Konvergencija je brža nego kod metode polovljenja, ali sporija nego kod Newtonove metode.