Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek
|
W naszym serwisie jest nowszy artykuł o obliczaniu pierwiastków funkcji: "Metody numeryczne".
SPIS TREŚCI |
Podrozdziały |
Funkcja liniowa posiada następujący przepis:
|
Nazwa funkcji liniowej pochodzi stąd, iż jej wykres jest linią prostą.
Miejsce zerowe xo funkcji liniowej obliczamy analitycznie:
Jeśli współczynnik a jest równy 0, to na wartość funkcji nie mają wpływu jej argumenty - mówimy wtedy, iż jest to funkcja stała. Jej wykresem będzie linia prosta równoległa do osi OX. Odległość tej prostej od osi OX jest równa współczynnikowi b. Jeśli współczynnik b jest również równy 0, to funkcja przyjmuje wartość 0 dla wszystkich swoich argumentów - rozwiązaniem jest cały zbiór liczb rzeczywistych, czyli brak jednoznacznego rozwiązania. Jeśli b jest różne od 0, to funkcja nie posiada miejsca zerowego. gdyż dla żadnego swojego argumentu nie przyjmuje wartości 0.
Jeśli współczynnik a jest różny od 0, miejsce zerowe wyznaczamy zgodnie z wyprowadzonym wzorem.
Ponieważ współczynnik a mógł być uzyskany na drodze wcześniejszych obliczeń numerycznych i może zawierać błędy zaokrągleń, to przy porównaniu z zerem musimy zastosować podane we wstępie zasady. Otóż zamiast zwykłego sprawdzania, czy:
zastosujemy test:
gdzie ε jest wybraną dokładnością przyrównania do 0. Sądzę, iż ε = 0.0000000001 powinno być w większości typowych przypadków wystarczająco dokładne (jeśli nie, to należy je odpowiednio dostosować).
a,b | – współczynniki, a,b ∈ R |
x0 | – miejsce zerowe, x0 ∈ R |
ε | – dokładność porównania z zerem, ε ∈ R, ε = 0.0000000001 |
K01: | Czytaj a i b |
K02: | Jeśli
|
a | < ε
, to idź do kroku K06 |
K03: |
![]() |
K04: | Pisz x0 |
K05: | Zakończ |
K06: | Pisz "Brak miejsca zerowego" |
K07: | Zakończ |
Wykonanie algorytmu
rozpoczynamy od odczytania współczynników
a i b wchodzących w skład
przepisu funkcji liniowej:
Następnie sprawdzamy, czy współczynnik a jest równy (dostatecznie bliski) zeru.
Jeśli nie, to wyznaczamy miejsce zerowe xo i wypisujemy je kończąc algorytm.
Jeśli tak, to funkcja f(x) nie posiada jednoznacznego miejsca zerowego (dla b różnego od 0 miejsce takie nie istnieje). Wypisujemy odpowiedni tekst i kończymy algorytm.
W celu uruchomienia przykładów zastosuj projekt aplikacji konsoli (ang. Console Application).
C++// Program oblicza miejsce zerowe dla funkcji liniowej // f(x) = ax + b //---------------------------------------------------- // (C)2006 mgr Jerzy Wałaszek // I Liceum Ogólnokształcące // im. Kazimierza Brodzińskiego // w Tarnowie //---------------------------------------------------- #include <iostream> #include <iomanip> #include <cstdlib> #include <cmath> using namespace std; int main() { const double EPS = 0.0000000001; double a,b,x0; cout << setprecision(4) // 4 cyfry po przecinku << fixed; // format stałoprzecinkowy cout << "Znajdowanie miejsca zerowego dla f(x) = ax + b\n" "----------------------------------------------\n" "(C)2006 mgr Jerzy Walaszek I LO w Tarnowie\n\n" "Podaj wspolczynniki a i b\n\n" "a = "; cin >> a; cout << "\n\nb = "; cin >> b; cout << "\n\n----------------------------------------------\n" "WYNIK\n\n"; if(fabs(a) < EPS) cout << "Brak miejsca zerowego\n"; else { x0 = - b / a; cout << "x0 = " << setw(10) << x0 << endl; } cout << "\n----------------------------------------------\n\n"; system("pause"); return 0; } |
Pascal// Program oblicza miejsce zerowe dla funkcji liniowej // f(x) = ax + b //---------------------------------------------------- // (C)2006 mgr Jerzy Wałaszek // I Liceum Ogólnokształcące // im. Kazimierza Brodzińskiego // w Tarnowie //---------------------------------------------------- program mzfl1; const EPS = 0.0000000001; // dokładność porównania z zerem var a,b,x0 : double; begin writeln('Znajdowanie miejsca zerowego dla f(x) = ax + b'); writeln('----------------------------------------------'); writeln('(C)2006 mgr Jerzy Walaszek I LO w Tarnowie'); writeln; writeln('Podaj wspolczynniki a i b'); writeln; write('a = '); readln(a); writeln; write('b = '); readln(b); writeln; writeln('----------------------------------------------'); writeln('WYNIK'); writeln; if abs(a) < EPS then writeln('Brak miejsca zerowego') else begin x0 := - b / a; writeln('x0 = ',x0:10:4); end; writeln; writeln('----------------------------------------------'); writeln('Koniec. Nacisnij klawisz Enter...'); readln; end. |
Basic' Program oblicza miejsce zerowe dla funkcji liniowej ' f(x) = ax + b '---------------------------------------------------- ' (C)2006 mgr Jerzy Wałaszek ' I Liceum Ogólnokształcące ' im. Kazimierza Brodzińskiego ' w Tarnowie '---------------------------------------------------- const EPS As Double = 0.0000000001 ' dokładność porównania z zerem Dim As double a,b,x0 print "Znajdowanie miejsca zerowego dla f(x) = ax + b" print "----------------------------------------------" Print "(C)2006 mgr Jerzy Walaszek I LO w Tarnowie" Print print "Podaj wspolczynniki a i b" Print Input "a = ", a Print Input "b = ", b Print print "----------------------------------------------" print "WYNIK" Print if abs(a) < EPS then Print "Brak miejsca zerowego" Else x0 = - b / a print Using "x0 = #####.####";x0 End If Print print "----------------------------------------------" print "Koniec. Nacisnij klawisz Enter..." Sleep End |
JavaScript<html> <head> </head> <body> <div align="center"> <form style="BORDER-RIGHT: #ff9933 1px outset; PADDING-RIGHT: 4px; BORDER-TOP: #ff9933 1px outset; PADDING-LEFT: 4px; PADDING-BOTTOM: 1px; BORDER-LEFT: #ff9933 1px outset; PADDING-TOP: 1px; BORDER-BOTTOM: #ff9933 1px outset; BACKGROUND-COLOR: #ffcc66" name="frmprg"> <h3 id="out_t" style="TEXT-ALIGN: center"> Znajdowanie miejsca zerowego dla <i>f(x) = ax + b</i> </h3> <p style="TEXT-ALIGN: center"> (C)2006 mgr Jerzy Wałaszek I LO w Tarnowie </p> <hr> <p style="TEXT-ALIGN: center"> Podaj wartości współczynników <i>a</i> i <i>b</i>: </p> <p style="TEXT-ALIGN: center"> <i>a</i> = <input type="text" name="inp_a" size="20" value="25" style="text-align: right"> <i>b</i> = <input type="text" name="inp_b" size="20" value="-5" style="text-align: right"> </p> <p style="TEXT-ALIGN: center"> <input type="button" value="Oblicz miejsce zerowe" name="B1" onclick="main()"> </p> <hr> <p style="TEXT-ALIGN: center"> <b>WYNIK:</b> </p> <p style="TEXT-ALIGN: center" id="t_out">.</p> </form> <script language=javascript> // Program oblicza miejsce zerowe dla funkcji liniowej // f(x) = ax + b //---------------------------------------------------- // (C)2006 mgr Jerzy Wałaszek // I Liceum Ogólnokształcące // im. Kazimierza Brodzińskiego // w Tarnowie //---------------------------------------------------- function main() { var EPS = 0.0000000001; var a,b,x0,t; a = parseFloat(document.frmprg.inp_a.value); b = parseFloat(document.frmprg.inp_b.value); if(isNaN(a) || isNaN(b)) t = "<b><font color=red>Złe współczynniki</font></b>"; else { if(Math.abs(a) < EPS) t = "<b><font color=red>Brak miejsca zerowego</font></b>"; else { x0 = - b / a; t = "x<sub>o</sub> = " + x0; } } document.getElementById("t_out").innerHTML = t; } </script> </div> </body> </html> |
Wynik: |
Znajdowanie miejsca zerowego
dla f(x) = ax + b ---------------------------------------------- (C)2006 mgr Jerzy Wałaszek I LO w Tarnowie Podaj współczynniki a i b a = 12 b = -3 ---------------------------------------------- WYNIK x0 = 0,2500 ---------------------------------------------- Koniec. Naciśnij klawisz Enter... |
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.