Analiza numeryczna (M) - Lista 4.

Zadanie 1.

Metoda iteracyjna: x_{k+1}= F ( x_k )

Jest zbieżna do pierwiastka \alpha w równaniu f(x) = 0

F(\alpha)=\alpha oraz 0 = F'(\alpha)=…=F^{(p-1)}(\alpha) \not = F^{(p)}(\alpha)

niech: e_{n+1} = x_{n+1} - \alpha = F ( x_n ) - \alpha

zapisując funkcję F wzorem Taylora (Reszta w postaci Lagrange'a):

F(x) =\displaystyle F(\alpha) + \left( \sum _ {k=1} ^{p-1} \frac {(x - \alpha)^k}{k!}F^{(k)}(\alpha) \right) + \frac {(x - \alpha ) ^ p}{p!} F^{(p)}( \xi ) = \frac {(x - \alpha ) ^ p}{p!} F^{(p)}( \xi ) + \alpha

Więc:

e_{n+1} = \frac {(x_n - \alpha ) ^ p}{p!} F^{(p)}( \xi )

e_{n+1} = \displaystyle \frac {e_n^ p}{p!} F^{(p)}( \xi )

a stąd już widzimy, że:

\displaystyle\frac{e_{n+1}}{e_n^p} = \frac{1}{p!}F^{(p)}( \xi )

Czyli owa metoda iteracyjna ma rząd = p. :3

Zadanie 2.

W uproszczonej metodzie Newtona definiujemy: x_{n+1} = x_n - \frac{f(x_n)}{f'(x_0)} , e_n = x_n - \alpha stąd:

e_{n+1} = e_{n} - \frac{f(x_n)}{f'(x_0))} = e_{n} - \frac{f(e_n + \alpha)}{f'(x_0)}

Ponieważ \alpha jest pojedynczym zerem, to f(\alpha) = 0 oraz f'(\alpha) \not = 0

Rozwijamy licznik i mianownik we wzoru taylora: e_{n+1} = e_{n} - \frac{f(\alpha) + f'(\alpha +\theta e_n)e_n }{f'(x_0)} = e_{n} - \frac{f'(\alpha +\theta e_n)e_n }{f'(x_0)}

więc….

\frac{e_{n+1}}{e_n} = 1 - \frac{f'(\alpha +\theta e_n)}{f'(x_0)} \rightarrow 1 - \frac{f'(\alpha)}{f'(x_0)} Stąd widzimy, że wersja uproszczona metody newtona dla zera pojedynczego jest zbieżna liniowo :3

Zadanie 3.

W metodzie Newtona definiujemy: x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} , e_n = x_n - \alpha stąd:

e_{n+1} = e_{n} - \frac{f(x_n)}{f'(x_n)} = e_{n} - \frac{f(e_n + \alpha)}{f'(e_n + \alpha)}

Ponieważ \alpha jest podwójnym zerem, to f(\alpha) = f'(\alpha) = 0 oraz f”(\alpha) \not = 0

Rozwijamy licznik i mianownik we wzór taylora: e_{n+1} = e_{n} - \frac{f(\alpha) + f'(\alpha)e_n + f(\alpha + \theta e_n)e_n^2 }{f'(\alpha) + f(\alpha + \theta e_n)e_n }

więc…. \frac{e_{n+1}}{e_n} = 1 - \frac{\frac{1}{2}f(\alpha + \theta e_n)e_n}{f(\alpha + \theta e_n)e_n} = 1 - \frac{\frac{1}{2}f(\alpha + \theta e_n)}{f(\alpha + \theta e_n)}

A to przy n \to \infty , e_n \to 0 daje:

\frac{e_{n+1}}{e_n} \rightarrow 1 - \frac{1}{2} = \frac{1}{2}

Czyli metoda Newtona dla zera podwójnego jest zbieżna liniowo :3

Zadanie 4.

4.) Jedynym miejscem zerowym funkcji \frac{1}{x} - R = 0 jest x = \frac{1}{R} czyli nasza szukana odwrotność. Więc:

\displaystyle h_n = \frac{\frac{1}{x} - R}{(\frac{1}{x} - R)'} = \frac{\frac{1}{x} - R}{\frac{1}{-x^2}} = Rx^2 - x

Metoda Newtona definiuje wzór rekurencyjny:

\displaystyle x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} = x_n - h_n

czyli:

\displaystyle x_{n+1} = x_n - (Rx_n^2 - x_n) = x_n(2 - Rx_n)

[b]b) zbieżność[/b], styczna do wykresu w punkcie będzie miała wzór:

wzór ogólny: y-y_0 = f'(x_0)(x-x_0) , mega wzór:

\displaystyle y - f(x_0) = \frac{1}{-x_0^2}(x-x_0)

\displaystyle y = \frac{x}{-x_0^2} + \frac{1}{x_0} + \frac{1}{x_0} - R

\displaystyle y = \frac{x}{-x_0^2} + \frac{2}{x_0} - R

Rozpatrzmy R > 0, pierwiastek \alpha jest wtedy po prawej stronie osi Y. Obserwując jak zachowują się styczne do wykresu w pobliżu \alpha dochodzimy do wniosku, że x_0 > 0, oraz styczna w punkcie x_0 nie może przeciąć ujemnej części osi X.

Zatem: x_0 \in (0,\beta) ,

gdzie \beta = \max (p_1,p_2)

\displaystyle 0 = \frac{x}{-x_0^2} + \frac{2}{x_0} - R

\displaystyle Rx_0^2 = 2x_0-x

\displaystyle x = 2x_0 -Rx_0^2

\displaystyle 0 = -Rx_0^2 + 2x_0

rozwiązujemy równanie kwadratowe:

\sqrt{\Delta} = 2

\displaystyle p_1 = \frac{-2 +2}{-2R}=0 oraz \displaystyle p_2 = \frac{-2-2}{-2R} = \frac{2}{R}

Zatem \displaystyle x_0 \in (0,\frac{2}{R}) dla R>0 oraz

\displaystyle x_0 \in (-\frac{2}{R},0) dla R<0 gdyz przypadki są symetryczne…

Zadanie 5.

5.) Chcemy efektywnie odnajdywać wartość \sqrt{a} .

\displaystyle \sqrt{a} = x

\displaystyle a = x^2

\displaystyle x^2 - a = 0

Niech f(x)=x^2-a .

Wykorzystamy metode Newtona do odnalezienia miejsca zerowego tej funkcji. \displaystyle f'(x) = (x^2 - a)' = 2\cdot x

\displaystyle x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} = x_n - \frac{x_n^2 - a}{2\cdot x_n} = \frac{2\cdot x_n^2 - x_n^2 + a}{2\cdot x_n} =\frac{x_n^2 + a}{2\cdot x_n} = \frac{1}{2}\cdot (x_n + \frac{a}{x_n})

[b]b) zbieżność:[/b] Jeśli naszkicujemy wykres funkcji f(x)=x^2-a widzimy, że jest wykresem paraboli przesuniętej w górę/dół o a, a pierwiastkiem który nas interesuje jest ten po prawej.. :p zatem żeby metoda newtona nie zeszła nam na zły pierwiastek, spełnione musi być: x_0 > 0. Bo: w punkcie x_0=0 styczna jest równoległa do osi współrzędnych więc jest oj źle, a ponieważ funkcja jest wklęsła to styczne będą „na zewnątrz” więc nie przetną „złej połówki” paraboli…

Pomijając ścianę tekstu, funkcja jest zbieżna dla wszystkich x_0 takich, że x_0>0.

Zadanie 6.

6.) r-krotne zero \alpha funkcji f(x) jest pojedynczym zerem funkcji g(x)=\sqrt[r]{f(x)} zatem \displaystyle f(x) = (\alpha - x)^r R \displaystyle g(x) = \sqrt[r]{(\alpha - x)^r R} = (\alpha - x)\sqrt[r]{R}

\alpha jest pojedynczym zerem funkcji g(x), zatem g(\alpha)=0 oraz g'(\alpha) \not = 0 ..

wiemy, że: \displaystyle g'(x) = (\sqrt[r]{f(x)})' = \frac{1}{r} \cdot (f(x))^{\frac{1}{r}-1} \cdot f'(x) = \frac{1}{r} \cdot (f(x))^{\frac{1-r}{r}} \cdot f'(x)

\displaystyle x_{n+1} = x_n - \frac{\sqrt[r]{f(x)}}{(\sqrt[r]{f(x)})'} = x_n - \frac{\sqrt[r]{f(x)}}{\frac{1}{r} \cdot (f(x))^{\frac{1-r}{r}} \cdot f'(x) } = x_n - \frac{r \cdot (f(x))^{\frac{1}{r}} \cdot (f(x))^{\frac{r-1}{r}} }{f'(x)} = x_n - r\cdot \frac{f(x)}{f'(x)}

ponad to: \displaystyle f'(x) = R (\alpha-x)^r \left(\frac{-r}{\alpha-x} \right) + (\alpha -x)^ r R'(x) więc: \displaystyle x_{n+1} = x_n - r\cdot \frac{R(\alpha-x_n)^r}{R (\alpha-x)^r \left(\frac{-r}{\alpha-x} \right) + (\alpha -x)^ r R'(x)} = x_n - r\cdot \frac{R}{R\left(\frac{-r}{\alpha-x} \right) + R'(x)}

Zadanie 7.

7.) Mamy jakąs funkcje f o której wiemy że: f'(x)>0

f' '(x)>0

f( a ) = 0 dla x \in R

Mamy wykazać że a to jedyny pierwiastek:

Mamy wykazać że metoda Newtona daje ciąg do niego zbieżny: [i][rozwiązanie zaczerpnięte z Kincaid'a tw3.2.3 strona pdf 95][/i]

Z Analizy Matematycznej wiemy że skoro f''(x)>0 to f jest wypukła (???) . Ponieważ f'(x) > 0 to f jest rosnąca. Z wzoru na e_{n+1}

e_{n+1}=\frac{1}{2} \cdot e_n^2 \cdot \frac{f' '(i)}{f'(x_n)}

wnioskujemy że e_{n+1} > 0, a wzwiazku z tym ponieważ e_n = x_n - a to x_n > a dla n \ge 1

Z powyższego wniosku i z tego że f jest rosnąca wynika że f(x_n) > f(a) = 0

Wiemy że e_{n+1}=x_{n+1}-a = x_n - a - \frac{f(x_n)}{f'(x_n)} = e_n - \frac{f(x_n)}{f'(x_n)} więc e_{n+1} < e_n

Tak więc ciągi e_n i x_n są malejące i ograniczone z dołu więc metoda Newtona jest zbieżna.

Zadanie 8.

f(x) = cos^22x - x^2

f'(x) = 2cos(2x) \cdot (cos(2x))' - 2x = 2cos(2x) \cdot (-sin(2x)\cdot2) - 2x = -4cos(2x)sin(2x) -2x

Wygenerowane porównanie tych metod które ja znam (wykresy niech ktoś kto umie gnuplota używać dorobi):

Metoda Newtona (stycznych), x0 = 0.75

n x_n |x_n-a|
1 0.437193507464 0.077739757236
2 0.514702467893 0.000230796807
3 0.514933247961 0.000000016739

Metoda siecznych, x0 = 0.75 x1 = 0.00

n x_n |x_n-a|
1 0.481542090916 0.033391173784
2 0.531590029425 0.016656764725
3 0.515091416040 0.000158151340
4 0.514932357449 0.000000907251
5 0.514933264706 0.000000000006

Metoda regula falsi, a = 0.00 b = 0.75

n x_n |x_n-a|
1 0.520328114213 0.005394849513
2 0.512610677322 0.002322587378
3 0.515345545463 0.000412280763
4 0.514752347689 0.000180917011
5 0.514965582436 0.000032317736
6 0.514919062353 0.000014202347
7 0.514935802909 0.000002538209
8 0.514932149080 0.000001115620
9 0.514933464046 0.000000199346
10 0.514933177029 0.000000087671

Metoda bisekcji, a = 0.00 b = 0.75

n x_n |x_n-a|
1 0.375000000000 0.139933264700
2 0.562500000000 0.047566735300
3 0.468750000000 0.046183264700
4 0.515625000000 0.000691735300
5 0.492187500000 0.022745764700
6 0.503906250000 0.011027014700
7 0.509765625000 0.005167639700
8 0.512695312500 0.002237952200
9 0.514160156250 0.000773108450
10 0.514892578125 0.000040686575
11 0.515258789063 0.000325524362
12 0.515075683594 0.000142418894
13 0.514984130859 0.000050866159
14 0.514938354492 0.000005089792
15 0.514915466309 0.000017798391
16 0.514926910400 0.000006354300
17 0.514932632446 0.000000632254
18 0.514935493469 0.000002228769
19 0.514934062958 0.000000798258
20 0.514933347702 0.000000083002
21 0.514932990074 0.000000274626
22 0.514933168888 0.000000095812

zależność cyfr znaczących poprawnych od liczby iteracji

gnuplot to dzieło szatana

# -*- coding: utf-8 -*- #
""" @copyright: 2009 by Piotr Rzepecki <me@vanzi.info>
	@license: GNU GPL, see COPYING for details.
"""
from math import *
 
eps = pow(10,-7)
alfa = 0.5149332647
 
def f(x):
	return pow(cos(2*x),2) - pow(x,2)
def f1(x):
	return -4*sin(2*x)*cos(2*x) - 2*x
 
def metoda_newtona(x0):
	n = 0
	xn = x0
	print ("Metoda Newtona (stycznych), x0 = %.2f\nn\tx_n\t\t|x_n-a|" % x0)
	while (abs(xn - alfa) >= eps):
		xn = xn - (f(xn))/(f1(xn))
		n += 1
		print ("%d\t%.12f\t%.12f" % (n,xn,abs(xn-alfa)))
	return xn
 
def metoda_siecznych(x0,x1):
	print ("Metoda siecznych, x0 = %.2f x1 = %.2f\nn\tx_n\t\t|x_n-a|" % (x0,x1))
	xn = x0
	xn1 = x1
	n = 0
	while (abs(xn1-alfa) >= eps):
		t = xn1
		xn1 = xn1 - f(xn1)*(xn1-xn)/(f(xn1) - f(xn))
		xn = t
		n += 1
		print ("%d\t%.12f\t%.12f" % (n,xn1,abs(xn1-alfa)))
	return xn1
 
def metoda_regula_falsi(a,b):
	print ("Metoda regula falsi, a = %.2f b = %.2f\nn\tx_n\t\t|x_n-a|" % (a,b))
	xn = (a*f(b) - b*f(a))/(f(b) - f(a))
	n = 0
	while (abs(xn-alfa) >= eps):
		if f(a)*f(xn) <= 0:
			xn = (xn*f(a) - a*f(xn))/(f(a) - f(xn))
		else:
			xn = (xn*f(b) - b*f(xn))/(f(b) - f(xn))
		n += 1
		print ("%d\t%.12f\t%.12f" % (n,xn,abs(xn-alfa)))
	return xn
 
def metoda_bisekcji(a,b):
	print ("Metoda bisekcji, a = %.2f b = %.2f\nn\tm_n\t\t|m_n-a|" % (a,b))
	n = 0
	while (abs((a-b)/2) >= eps):
		mn = (a+b)/2
		if f(a)*f(mn) < 0:
			b = mn
		else:
			a = mn
		n+=1
		print ("%d\t%.12f\t%.12f" % (n,mn,abs(mn-alfa)))
	return (a+b)/2
metoda_newtona(0.75)
metoda_siecznych(0.75,0.)
metoda_regula_falsi(0.,0.75)
metoda_bisekcji(0.,0.75)

Dyskusja

Michał Krasowski, 2009/10/28 10:42

Ad3. Skąd (w linijce zaczynającej się słowem „Więc…”) pojawiła się nagle 1/2 oraz dlaczego jest to f(costam) zamiast f”(costam)?

 
analiza_numeryczna/lista4m.txt · ostatnio zmienione: 2009/10/28 03:01 przez drx
 
Wszystkie treści w tym wiki, którym nie przyporządkowano licencji, podlegają licencji:MIT License
Recent changes RSS feed