POSZUKIWANIE ZER FUNKCJI F(x). Metoda punktu stałego Jeżeli
Transkrypt
POSZUKIWANIE ZER FUNKCJI F(x). Metoda punktu stałego Jeżeli
POSZUKIWANIE ZER FUNKCJI F(x). Metoda punktu stałego Jeżeli szukane jest miejsce zerowe funkcji f (x) to konstruujemy funkcję g(x) taką, że f (x) = x − g(x) = 0 i szukamy punktu stałego wyrażenia x = g(x). Algorytm metody: x0 = . . . for k = 1, 2, . . . xk = g(xk−1 ) if (znaleziono zero funkcji), stop end Zad. 1. Korzystając z metody punktu stałego znaleźć miejsce zerowe funkcji f (x) = x − e−x . Jako punkt startowy przyjąć p0 = 0.5. Obliczyć trzy pierwsze przybliżenia p1 , p2 , p3 . Porównać je z wartością dokładną P = 0.5271. Zad. 2. Korzystając z metody punktu stałego znaleźć miejsce zerowe funkcji f (x) = −4 + 3x − 0.5x2 . Pokazać, że punkty P = 2, P = 4 są punktami stałymi funkcji g(x). A) Obliczyć trzy pierwsze przybliżenia p1 , p2 , p3 dla punktu startowego p0 = 1.9 i przedziału [1,3]; B) obliczyć trzy pierwsze przybliżenia p1 , p2 , p3 dla punktu startowego p0 = 3.8 i przedziału [3,5]. 1 6 + 2x 3 1 3 Zad. 3. Pokazać, że funkcje g1 (x) = x 3 + 2, g2 (x) = (x − 2) , g3 (x) = są − 32 3 − x 1 funkcjami iteracyjnymi w metodzie punktu stałego funkcji f (x) = x − x 3 − 2. Obliczyć trzy pierwsze przybliżenia p1 , p2 , p3 startując z punktu p0 = 3.0. Obliczyć wartości bezwzględne funkcji g10 , g20 , g30 na przedziale [3,4]. Obliczyć błąd względny kolejnych iteracji pk − pk−1 E(pk ) = | |. pk function [k,p,err,P] = fixpt(g,p0,tol,max1) % INPUT % g - iterowana funkcja (podana w oddzielnym m-file’u) % p0 - startowy punkt iteracji % tol - dokladnosc iteracji % max1 - maksymalna liczba iteracji % % OUTPUT % k - numer iteracji przy ktorym osiagnieto zakladana dokladnosc % p - obliczony punkt staly (miejsce zerowe) % err - osiagniety blad bezwzgledny % P - wektor kolejnych wartosci punktow \{pk\} P(1)=p0; for k:=2:max1 P(k)=feval(g,P(k-1)); err=abs(P(k)-P(k-1)); Metody numeryczne lista nr 4 1 relerr=err/(abs(P(k))+eps); p=P(k); if (err<tol) | (relerr<tol),break, end end if k==max1 disp(’przekroczono maksymalna liczbe iteracji’) end P=P’; Metoda bisekcji Zad. 4. Funkcja f (x) = x sin(x) jest określona na przedziale [0,2]. Korzystając z metody bisekcji wyznaczyć a ∈ [0, 2] takie, że f (a) = 1. Zad. 5. Dla podanej funkcji f (x) wyznacz początkowy przedział wartość [a, b] tak, aby f (a) · f (b) < 0: A) f (x) = ex − 2 − x, B) f (x) = cos(x) + 1 − x. Zad. 6. Dla funkcji danych f(x) wyznacz cztery pierwsze wartości punktów środkowych c0 , c 1 , c 2 , c 3 : A) ln(x) − 5 + x = 0, [a0 , b0 ] = [3.2, 4.0], B) x2 − 10x + 23 = 0, [a0 , b0 ] = [6.0, 7.0]. b0 − a 0 Korzystając ze wzoru dokładność wyznaczonego miejsca zerowego E = wyznacz 2n ilość potrzebnych iteracji N , aby znaleźć w obu przypadkach miejsce zerowe z dokładnością E = 10−4 . function [c,err,yc] = bisect(f,a,b,delta) % INPUT % f - iterowana funkcja (podana w oddzielnym m-file’u) % a - poczatek przedzialu % b - koniec przedzialu % delta - dokladnosc iteracji % % OUTPUT % c - miejsce zerowe funkcji f(x) % err - osiagniety blad bezwzgledny % yc - wartosc funkcji w punkcie c ya=feval(f,a); yb=feval(f,b); if ya*yb>0, break, end max1=1+round((log(b-a)-log(delta))/log(2)); for k:=1:max1 c=(a+b)/2; yc=feval(f,c); Metody numeryczne lista nr 4 2 if yc==0 a=c; b=c; elseif yb*yc>0 b=c; yb=yc; else a=c; ya=yc; end if (b-a)<delta, break, end end c=(a+b)/2; err=abs(b-a); yc=feval(f,c); Metoda Newtona Jeżeli szukane jest miejsce zerowe funkcji f (x) to konstruujemy funkcję g(x) taką, że f (x) = x − g(x) = 0 i rozwiązujemy problem x = g(x). Funkcja g(x) = x − f (x)/f 0 (x). Zad. 7. Korzystając z metody Newtona znajdź formułę na miejsce zerowe funkcji f (x) = x2 − A, gdzie A > 0 i p0 > 0. Startując z p0 = 2 oblicz wartości czterech kolejnych przybliżeń p1 , p2 , p3 , p4 dla A = 5. Zad. 8. Dla funkcji f (x) = −x2 − x + 2: A) wyznacz postać wzoru Newtona pk = g(pk−1 ); B) startując z punktu p0 = −1.5 znajdź kolejne przybliżenia p1 , p2 , p3 ; C) oblicz wartości g 0 (pk ) w punktach p1 , p2 , p3 ; D) wyznacz wartości różnic kolejnych przybliżeń E(pk ) = |pk − pk−1 |. Zad. 9. Dla funkcji f (x) = (x − 2)2 : A) wyznacz postać wzoru Newtona pk = g(pk−1 ); B) startując z punktu p0 = 2.2 znajdź kolejne przybliżenia p1 , p2 , p3 ; C) oblicz wartości g 0 (pk ) w punktach p1 , p2 , p3 ; D) wyznacz wartości różnic kolejnych przybliżeń E(pk ) = |pk − pk−1 |. Zad. 10. Dla funkcji f (x) = x e−x : A) wyznacz postać wzoru Newtona pk = g(pk−1 ); B) startując z punktu p0 = 0.2 znajdź kolejne przybliżenia p1 , p2 , p3 ; do jakiej wartości zbiega szereg {pk }? C) startując z punktu p0 = 2.0 znajdź kolejne przybliżenia p1 , p2 , p3 ; do jakiej wartości zbiega szereg {pk }? Metody numeryczne lista nr 4 3 function [p0,err,k,y]=newton(f,df,p0,delta,epsilon,max1) % INPUT % f - iterowana funkcja (podana w oddzielnym m-file’u) % df - pochodna iterowanej funkcji % p0 - startowy punkt iteracji % delta - dokladnosc iteracji punktu p0 % epsilon - dokladnosc iteracji wartosci funkcji f(x) % max1 - maksymalna liczba iteracji % % OUTPUT % p0 - miejsce zerowe funkcji f(x) % err - osiagniety blad bezwzgledny % k - numer iteracji przy ktorym osiagnieto zakladana dokladnosc % y - wartosc funkcji w punkcie p0 for k:=1:max1 p1=p0-feval(f,p0)/feval(df,p0); err=abs(p1-p0); relerr=2*err/(abs(p1)+delta); p0=p1; y=feval(f,p0); if (err<delta) | (relerr<delta) | (abs(y)<epsilon), break, end end Metoda siecznych Jeżeli szukane jest miejsce zerowe funkcji f (x) to konstruujemy funkcję g(x) taką, że f (x) = x − g(x) = 0 i rozwiązujemy problem x = g(x). Funkcja g(pk , pk−1 ) = pk − f (pk ) · (pk − pk−1 )/(f (pk ) − f (pk−1 )). Zad. 11. Startując z punktów p0 = −2.6 i p1 = −2.4 i stosując metodę siecznych wyznacz kolejne wartości punktów p2 , p3 , p4 dla funkcji f (x) = x3 − 3x + 2. Zad. 12. Zastosować metodę siecznych do zad. 1 i zad. 2 przyjmując jako punkty początkowe metody wartości p0 i p1 . Porównać otrzymane przybliżenia miejsc zerowych obiema metodami. Metody numeryczne lista nr 4 4 function [p1,err,k,y]=sieczne(f,p0,p1,delta,epsilon,max1) % INPUT % f - iterowana funkcja (podana w oddzielnym m-file’u) % p0 - pierwszy startowy punkt iteracji % p1 - drugi startowy punkt iteracji % delta - dokladnosc iteracji punktu p0 % epsilon - dokladnosc iteracji wartosci funkcji f(x) % max1 - maksymalna liczba iteracji % % OUTPUT % p1 - miejsce zerowe funkcji f(x) % err - osiagniety blad bezwzgledny % k - numer iteracji przy ktorym osiagnieto zakladana dokladnosc % y - wartosc funkcji w punkcie p1 for k:=1:max1 p2=p1-feval(f,p1)*(p1-p0)/(feval(f,p1)-feval(f,p0)); err=abs(p2-p1); relerr=2*err/(abs(p2)+delta); p0=p1; p1=p2; y=feval(f,p1); if (err<delta) | (relerr<delta) | (abs(y)<epsilon), break, end end Metody numeryczne lista nr 4 5