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 |
Równanie kwadratowe (ang. square equation) posiada następującą postać:
gdzie x to poszukiwana niewiadoma, a a, b, c to współczynniki równania. Pierwiastkiem równania jest taka wartość niewiadomej x, która podstawiona w jej miejsce do równania spełnia je. Zwykle równanie kwadratowe posiada dwa pierwiastki rzeczywiste (lub zespolone - nie będziemy się nimi zajmować). Jeśli istnieje tylko jedna taka liczba, to mówimy, iż jest ona pierwiastkiem podwójnym.
Przykład:
Pierwiastkami równania kwadratowego
Na przestrzeni wieków rozwoju matematyki matematycy opracowali wiele metod rozwiązywania równań kwadratowych. My wykorzystamy metodę "szkolną", którą powinien doskonale znać uczeń liceum.
Obliczamy wyróżnik równania kwadratowego Δ:
W zależności od wartości wyróżnika Δ mamy trzy możliwe przypadki:
Δ > 0, istnieją dwa pierwiastki rzeczywiste:
Δ = 0, istnieje jeden pierwiastek podwójny:
Δ
< 0, nie istnieją pierwiastki rzeczywiste (równanie
posiada jedynie pierwiastki zespolone, które są liczbami sprzężonymi -
liczbami zespolonymi nie zajmujemy się w liceum).
Przykład:
Rozwiążmy podaną metodą równanie z poprzedniego przykładu:
Obliczamy wyróżnik Δ:
Wyróżnik Δ jest większy od 0, zatem równanie posiada dwa pierwiastki rzeczywiste:
a, b, c | – | współczynniki równania kwadratowego. a,b,c ∈ R |
x1, x2 | – | pierwiastki równania kwadratowego lub informacja, iż równanie nie posiada pierwiastków rzeczywistych. x1, x2 ∈ R |
Δ | – wyróżnik równania kwadratowego. Δ ∈ R |
ε | – określa dokładność porównania z zerem. ε = 0.0000000001 |
K01: | Czytaj a, b, c |
K02: | Jeśli
| a
| < ε, pisz "To nie jest równanie kwadratowe" i zakończ |
K03: | Δ ← b2 - 4ac |
K04: | Jeśli
| Δ
| < ε, to Δ ← 0 |
K05: | Jeśli Δ <
0, to pisz "Brak pierwiastków rzeczywistych" i zakończ |
K06: | ![]() |
K07: | ![]() |
K08: | Pisz x1, x2 |
K09: | Zakończ |
Algorytm obliczania pierwiastków równania kwadratowego rozpoczynamy od wczytania wartości współczynników a, b oraz c.
Jeśli współczynnik a przy x2 wynosi 0 (wpada w otoczenie 0 o promieniu ε) to nie mamy do czynienia z równaniem kwadratowym. Wypisujemy odpowiedni komunikat i kończymy algorytm.
Obliczamy wyróżnik Δ. Następnie sprawdzamy, czy Δ jest w otoczeniu ε zera. Jeśli tak, to zerujemy go - w ten sposób uprościmy znacznie algorytm.
Kolejny test sprawdza, czy wyróżnik Δ jest mniejszy od zera (kolejność testów jest tutaj bardzo ważna). Jeśli tak, to równanie nie posiada pierwiastków rzeczywistych. Wypisujemy odpowiedni komunikat i kończymy algorytm.
Pozostał przypadek, gdy wyróżnik Δ jest albo równy, albo większy od 0. W obu przypadkach obliczamy dwa pierwiastki x1 i x2. Wypisujemy je i kończymy algorytm.
Programy wczytują wartości współczynników a, b i c, a następnie wyznaczają, o ile jest to możliwe, pierwiastki równania kwadratowego o wprowadzonych współczynnikach.
C++// Program rozwiązuje równanie kwadratowe //--------------------------------------- // (C)2006 mgr J.Wałaszek I LO w Tarnowie #include <iostream> #include <iomanip> #include <cmath> #include <cstdlib> using namespace std; int main() { const double EPS = 0.0000000001; // dokładność porównania z zerem double a,b,c,delta,x1,x2; cout << setprecision(5) // 5 cyfr po przecinku << fixed; // format stałoprzecinkowy cout << "Demonstracja rozwiazywania rownania kwadratowego:\n" "ax^2 + bx + c = 0\n" "-------------------------------------------------\n" "(C)2006 mgr Jerzy Walaszek I LO w Tarnowie\n\n" "Podaj kolejno wspolczynniki a, b i c:\n\n"; cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c; cout << "\n-------------------------------------------------\n\n" "WYNIKI:\n\n"; if(fabs(a) < EPS) cout << "To nie jest rownanie kwadratowe\n"; else { delta = b * b - 4 * a * c; if(fabs(delta) < EPS) delta = 0; if(delta < 0) cout << "Brak pierwiastkow rzeczywistych\n"; else { x1 = (-b - sqrt(delta)) / 2 / a; x2 = (-b + sqrt(delta)) / 2 / a; cout << "x1 = " << setw(12) << x1 << endl << "x2 = " << setw(12) << x2 << endl; } } cout << "\n------------------------------------------------\n\n"; system("pause"); return 0; } |
Pascal// Program rozwiązuje równanie kwadratowe //--------------------------------------- // (C)2006 mgr J.Wałaszek I LO w Tarnowie program mzfk1; const EPS = 0.0000000001; // dokładność porównania z zerem var a,b,c,delta,x1,x2 : double; begin writeln('Demonstracja rozwiazywania rownania kwadratowego:'); writeln('ax^2 + bx + c = 0'); writeln('-------------------------------------------------'); writeln('(C)2006 mgr Jerzy Walaszek I LO w Tarnowie'); writeln; writeln('Podaj kolejno wspolczynniki a, b i c:'); writeln; write('a = '); readln(a); write('b = '); readln(b); write('c = '); readln(c); writeln; writeln('-------------------------------------------------'); writeln; writeln('WYNIKI:'); writeln; if abs(a) < EPS then writeln('To nie jest rownanie kwadratowe') else begin delta := b * b - 4 * a * c; if abs(delta) < EPS then delta := 0; if delta < 0 then writeln('Brak pierwiastkow rzeczywistych') else begin x1 := (-b - sqrt(delta)) / 2 / a; x2 := (-b + sqrt(delta)) / 2 / a; writeln('x1 = ',x1:12:5); writeln('x2 = ',x2:12:5); end; end; writeln; writeln('-------------------------------------------------'); writeln('Koniec. Nacisnij klawisz Enter...'); readln; end. |
Basic' Program rozwiązuje równanie kwadratowe '--------------------------------------- ' (C)2006 mgr J.Wałaszek I LO w Tarnowie Const EPS As Double = 0.0000000001 ' dokładność porównania z zerem Dim As Double a, b, c, delta, x1, x2 Print "Demonstracja rozwiazywania rownania kwadratowego:" Print "ax^2 + bx + c = 0" Print "-------------------------------------------------" Print "(C)2006 mgr Jerzy Walaszek I LO w Tarnowie" Print Print "Podaj kolejno wspolczynniki a, b i c:" Print Input "a = ", a Input "b = ", b Input "c = ", c Print Print "-------------------------------------------------" Print Print "WYNIKI:" Print If Abs(a) < EPS Then Print "To nie jest rownanie kwadratowe" Else delta = b * b - 4 * a * c If Abs(delta) < EPS Then delta = 0 If delta < 0 Then Print "Brak pierwiastkow rzeczywistych" Else x1 = (-b - Sqr(delta)) / 2 / a x2 = (-b + Sqr(delta)) / 2 / a Print Using "x1 = ######.#####"; x1 Print Using "x2 = ######.#####"; x2 End If End If Print 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="frmbincode"> <h3 style="TEXT-ALIGN: center"> Demonstracja rozwiązywania równania kwadratowego </h3> <p style="TEXT-ALIGN: center"> <i>ax<sup>2</sup> + bx + c = 0</i> </p> <p style="TEXT-ALIGN: center"> (C)2006 mgr Jerzy Wałaszek I LO w Tarnowie </p> <hr> <p style="text-align: center"> Wpisz do pól edycyjnych kolejne współczynniki równania </p> <div align="center"> <table border="0" id="table146" cellpadding="8" style="border-collapse: collapse"> <tr> <td> a = <input type="text" name="wsp_a" size="15" value="1" style="text-align: right"> </td> <td> b = <input type="text" name="wsp_b" size="15" value="-1" style="text-align: right"> </td> <td> c = <input type="text" name="wsp_c" size="15" value="-6" style="text-align: right"> </td> <td> <input type="button" value="Rozwiąż równanie" name="B1" onclick="main()"> </td> </tr> </table> </div> <div id="out" align="center">...</div> </form> <script language=javascript> // Program rozwiązuje równanie kwadratowe //--------------------------------------- // (C)2006 mgr J.Wałaszek I LO w Tarnowie function main() { var EPS = 0.0000000001; // dokładność porównania z zerem var a,b,c,delta,x1,x2,t; a = parseFloat(document.frmbincode.wsp_a.value); b = parseFloat(document.frmbincode.wsp_b.value); c = parseFloat(document.frmbincode.wsp_c.value); if(isNaN(a) || isNaN(b) || isNaN(c)) t = "<font color=red><b>Nieprawidłowe współczynniki!</b></font>"; else if(Math.abs(a) < EPS) t = "<font color=red><b>To nie jest rownanie kwadratowe</b></font>"; else { delta = b * b - 4 * a * c; if(Math.abs(delta) < EPS) delta = 0; if(delta < 0) t = "<font color=red><b>Brak pierwiastkow rzeczywistych</b></font>"; else { x1 = (-b - Math.sqrt(delta)) / 2 / a; x2 = (-b + Math.sqrt(delta)) / 2 / a; t = "x<sub>1</sub> = " + x1 + "<BR>x<sub>2</sub> = " + x2; } } document.getElementById("out").innerHTML = t; } </script> </div> </body> </html> |
Wynik: |
Demonstracja rozwiązywania
równania kwadratowego: ax^2 + bx + c = 0 ------------------------------------------------- (C)2006 mgr Jerzy Wałaszek I LO w Tarnowie Podaj kolejno współczynniki a, b i c: a = 1 b = -1 c = -6 ------------------------------------------------- WYNIKI: x1 = -2,00000 x2 = 3,00000 ------------------------------------------------- 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.