Miejsca zerowe funkcji
Na lekcji zapoznasz się ze sposobami przybliżonego wyznaczania miejsc zerowych funkcji.
Uwaga: Program wyznacza miejsca zerowe funkcji tylko dla takiego fragmentu funkcji, który jest widoczny na ekranie. Końce przedziału można zmieniać, wpisując odpowiednie wartości do okienek oznaczonych symbolem: " < x < ".
Wpisz do okienka oznaczonego symbolem "y=" wzór x^2-x-2 i naciśnij "Czyść" oraz "Zera".
Otrzymałeś wykres funkcji kwadratowej z zaznaczonymi na osi Ox miejscami zerowymi oraz wartości liczbowe tych miejsc zerowych: x1 = -1, x2 = 2.
W jaki sposób można wyznaczyć miejsca zerowe?
Jednym ze sposobów jest metoda stycznych. W tej metodzie należy najpierw ustalić dokładność, z jaką chcemy wyznaczyć miejsce zerowe, np. 0,0001, oraz wybrać punkt startowy, od którego rozpoczniemy obliczenia, np. x0 = -3. Kolejne kroki tej metody są następujące:
1. Wyznaczamy równanie stycznej do funkcji w punkcie x0.
2. Obliczamy punkt x1 przecięcia tej stycznej z osią Ox.
3. Obliczamy wartość y1 funkcji w punkcie x1.
4. Jeżeli wartość bezwzględna y1 jest mniejsza od przyjętej dokładności, to punkt x1 uznajemy za miejsce zerowe, w przeciwnym przypadku podstawiamy za x0 wartość x1 i przechodzimy do punktu 1.Poniższy rysunek przedstawia graficzną ilustrację tej metody:
Startując z punktu x0, prowadząc styczne, dochodzimy do miejsca zerowego.A oto ciąg obliczeń, jakie wykonuje program dla funkcji y = x^2-x-2 i punktu startowego x0 = -3:
krok 1: x0 krok 2: styczna krok 3: x0 krok 4: y1 -3 y = -7x - 11 -1,571429 2,040816 -1,571429 y = -4,142857x - 4,469388 -1,078818 0,242665 -1,078818 y = -3,157635x - 3,163848 -1,001967 0,005906 -1,001967 y = -3,003935x - 3,003939 -1,000001 0,000004 Wartość y1 w ostatnim wierszu jest mniejsza od przyjętej dokładności 0,0001, zatem miejscem zerowym jest x1 = -1,00001
-1.
Drugie miejsce zerowe można wyznaczyć analogicznie, startując z innego punktu osi Ox. Oto ciąg obliczeń dla punktu startowego x0 = 1:
krok 1: x0 krok 2: styczna krok 3: x1 krok 4: y1 1 y = x - 3 3 4 3 y = 5x - 11 2,2 0,64 2.2 y = 3,4x - 6,84 2,011765 0,035433 2.011765 y = 3,023529x - 6,047197 2,000046 0,000137 2.000046 y = 3,000092x - 6,000183 2 0 Wartość y1 w ostatnim wierszu jest równa 0, więc x1 = 2 jest miejscem zerowym.
Uwaga: Metoda stycznych nie jest uniwersalną
metodą wyznaczania miejsc zerowych funkcji. Istnieją funkcje,
dla których kolejne punkty przecięcia stycznych z osią Ox
oddalają się do nieskończoności lub oscylują pomiędzy
kilkoma punktami i nie zbliżają się do miejsca zerowego.
W podręczniku Matematyka przyjemna i
pożyteczna możesz przeczytać o innej metodzie
przybliżonego rozwiązywania równań, zwanej metodą podziału
lub metodą bisekcji.
Stosując metody przybliżonego wyznaczania miejsc
zerowych, należy zachować szczególną ostrożność przy
końcowym ustalaniu wartości tych miejsc. Metody te wyszukują
miejsca zerowe z zadaną dokładnością i może się zdarzyć,
że podane zostanie miejsce zerowe, które mieści się w
przedziale dokładności, np. (-0.0001, 0.0001), ale faktycznie
wartość funkcji w tym miejscu nie jest równa zero.
Może też zajść sytuacja odwrotna, kiedy
program nie znajdzie miejsca zerowego, które istnieje.
Spowodowane to jest tym, że program nie może obliczyć
wartości we wszystkich punktach (jest ich nieskończenie wiele)
i w czasie przeszukiwania może niektóre miejsca zerowe
opuścić.
Programowanie miejsc zerowych w języku Pascal
Metodę stycznych, opisaną powyżej, można zrealizować w komputerze, pisząc odpowiedni program w języku Pascal.
program Miejsca_zerowe_Metoda_stycznych;
uses crt;
var x0,x1,d,a,b,f1:real;
function f(x:real):real;
begin
f:=x*x-x-2;
end;
begin
clrScr;
x0:= 1; d:=0.0001;
repeat
f1:=(f(x0+0.000001)-f(x0))/0.000001;
a:=f1; b:=-f1*x0+f(x0); x1:=-b/a;
write('x0=',x0:1:6,', y=',a:1:6,'x+',b:1:6);
WriteLn(', x1=',x1:1:6,', y1=',f(x1):1:6);
x0:=x1;
until abs(f(x1))<d;
readLn;
end.
Po uruchomieniu tego programu dla funkcji f = x*x - x - 2, punktu startowego x0 = 1 i dokładności 0.0001, otrzymujemy następujące wyniki:
x0=1.000000, y=1.000002x+-3.000002, x1=2.999996, y1=3.999978
x0=2.999996, y=4.999987x+-10.999961, x1=2.199998, y1=0.639993
x0=2.199998, y=3.399997x+-6.839993, x1=2.011765, y1=0.035432
x0=2.011765, y=3.023531x+-6.047201, x1=2.000046, y1=0.000137
x0=2.000046, y=3.000096x+-6.000191, x1=2.000000, y1=0.000000
Ponieważ wartość y1 w ostatnim wierszu jest równa 0, więc miejscem zerowym jest x1 = 2.
Metodę bisekcji, polegającą na kolejnych podziałach odcinka na dwie sekcje, można zaprogramować w sposób następujący:
program Miejsca_zerowe_Metoda_bisekcji;
uses crt;
var x0,x1,x2,d,a,b,f1:real;
function f(x:real):real;
begin
f:=exp(x*ln(2))+x*x*x/32-6;
end;
begin
clrScr;
x1:=2; x2:=3; d:=0.01;
repeat
x0:=(x1+x2)/2;
write('f(',x1:1:6,')=',f(x1):1:6,', f(',x2:1:6,')=',f(x2):1:6);
writeLn(', f(',x0:1:6,')=',f(x0):1:6);
if f(x1)*f(x0)<0 then x2:=x0 else x1:=x0;
until abs(f(x0))<d;
readLn;
end.
Po uruchomieniu tego programu dla funkcji f =
(w języku
Pascal funkcję tę wpisuje się w postaci:
exp(x*ln(2))+x*x*x/32-6) i początkowego przedziału [2,
3] oraz dla dokładności 0.01, otrzymujemy następujące wyniki:

Ponieważ ostatnia wartość 0.005838 jest mniejsza niż ustalona dokładność 0.01, więc miejscem zerowym jest 2.468750. Aby uzyskać lepszą dokładność, należy zmniejszyć wartość zmiennej d. Sprawdź, jakie miejsce zerowe tej funkcji wyznacza nasz program "Miejsca zerowe".
Zadania
Wykorzystując program "Miejsca zerowe" rozwiąż następujące zadania:
Zadanie 1
Wyznacz miejsca zerowe funkcji y = 2x3 - 9x2 + 5x + 7 {2*x^3-9*x^2+5*x+7}.
Zadanie 2
Wyznacz punkt przecięcia wykresów funkcji: y = x2 {x^2} i y = 2x {2^x}.
Zadanie 3
Dla jakiej wartości parametru a miejscami zerowymi
funkcji y = sin(ax) {sin(a*x)} są liczby
całkowite: 0,
1,
2,
3,
4, itd.?
Zadanie 4
Rozwiąż nierówność: log 0,5 x < 0,5 x {log(x)/log(0.5)-0.5^x}.
Zadanie 5
Rysunek przedstawia wykresy funkcji f(x) = 2x - 1 {2^x-1} i g(x) = ctg(x+1)+1,5 {ctg(x+1)+1.5} w przedziale [-5, 5].

Odczytaj z wykresu, z dokładnością do 0,1, przybliżone
rozwiązania poniższych równań w przedziale (-5, 5) i sprawdź
odpowiedzi za pomocą programu "Miejsca zerowe".
a) f(x) – g(x)
= 0; b)* f(x) + g(x)
= 0; c) f(x) . g(x)
= 0; d)*
= 0.
Odpowiedzi
1. x1 = -0,6183, x2 = 1,6181, x3 =3,5002.
2. (-0,7667, 0,5877), (2, 4), (4, 16).
3.
a =
.
4. x > 0,6414.
5.
a) x1 = -4.5, x2
= -1.4, x3 = 1, x4 =
2.5
b)* x1 = -1.9, x2
= 1.9
c) x1 = -4.7, x2
= -1.6, x3 = 0, x4 =
1.6, x5 = 4.7
d)* x1 = 0. Uwaga: Program podaje również inne
rozwiązania, ponieważ dla nich wartości funkcji są bliskie
zera i program uznał je za miejsca zerowe. Z analizy funkcji
wynika jednak, że funkcja ma wartość dokładnie równą zero
tylko dla x = 0.