Serwis Edukacyjny
Nauczycieli I-LO

w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek

©2026 mgr Jerzy Wałaszek

W naszym serwisie jest nowszy artykuł o obliczaniu pierwiastków funkcji: "Metody numeryczne".

Równanie liniowe z jedną niewiadomą

SPIS TREŚCI
Podrozdziały

Algorytm

Funkcja liniowa posiada następujący przepis:

\[
f(x) = ax+b
\]

Nazwa funkcji liniowej pochodzi stąd, iż jej wykres jest linią prostą.

Miejsce zerowe \(x_0\) funkcji liniowej obliczamy analitycznie:

\[
\begin{array}{l}
f(x_0) = ax_0 + b \\
f(x_0) = 0 \\
ax_0 + b = 0 \ /\ +(-b) \\
ax_0 = -b \ /\ : a \\
x_0 = -\dfrac{b}{a} \;;\; a \neq 0
\end{array}
\]

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:

\[
a=0
\]

zastosujemy test:

\[
|a| < \varepsilon
\]

gdzie \(\varepsilon\) jest wybraną dokładnością przyrównania do \(0\). Sądzę, iż \({\varepsilon = 0{,}0000000001}\) powinno być w większości typowych przypadków wystarczająco dokładne (jeśli nie, to należy je odpowiednio dostosować).


do podrozdziału  do strony 

Opis algorytmu

Specyfikacja problemu

Dane wejściowe

\(a,b\) – współczynniki; \({a,b\in\mathbb{R}}\).

Dane wyjściowe

\(x_0\) – miejsce zerowe; \({x_0\in\mathbb{R}}\)

Zmienne pomocnicze

\(\varepsilon\) – dokładność porównania z zerem; \({\varepsilon\in\mathbb{R}}\),  \({\varepsilon = 0{,}0000000001}\)

Lista kroków

K01: Czytaj \(a\) i \(b\)
K02: Jeśli \({|a| < \varepsilon}\),
to idź do kroku K06
K03: \({x_0=-\dfrac{b}{a}}\)
K04: Pisz \(x_0\)
K05: Zakończ
K06: Pisz "Brak miejsca zerowego"
K07: Zakończ

Schemat blokowy

obrazek

Wykonanie algorytmu rozpoczynamy od odczytania współczynników \(a\) i \(b\) wchodzących w skład przepisu funkcji liniowej:

\[
f(x) = ax+b
\]

Następnie sprawdzamy, czy współczynnik \(a\) jest równy (dostatecznie bliski) zeru. Jeśli nie, to wyznaczamy miejsce zerowe \(x_0\) 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.


do podrozdziału  do strony 

Programy

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
// w Tarnowie
//----------------------------

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cmath>

using namespace std;

int main()
{
  const double EPS = 0.0000000001;
  double a,b,x0;

  // 4 cyfry po przecinku
  cout << setprecision(4)
  // format stałoprzecinkowy
       << fixed;

  cout << "Miejsce zerowe f(x) = ax + b\n"
          "----------------------------\n"
          " (C)2006 mgr Jerzy Walaszek\n\n"
          "a = ";
  cin >> a;
  cout << "\nb = ";
  cin >> b;
  cout << "\nWYNIK\n\n";

  if(fabs(a) < EPS)
    cout << "Brak miejsca zerowego\n\n";
  else
  {
    x0 = - b / a;
    cout << "x0 = " << x0 << endl << endl;
  }

  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
// w Tarnowie

program mzfl1;

const
  // dokładność porównania z zerem
  EPS = 0.0000000001;

var
  a,b,x0 : double;

begin
  writeln('Miejsce zerowe f(x) = ax + b');
  writeln('----------------------------');
  writeln(' (C)2006 mgr Jerzy Walaszek');
  writeln;
  write('a = '); readln(a);
  writeln;
  write('b = '); readln(b);
  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('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
' w Tarnowie

' dokładność porównania z zerem
Const EPS As Double = 0.0000000001

Dim As double a,b,x0

Print "Miejsca zerowe f(x) = ax + b"
Print "----------------------------"
Print " (C)2006 mgr Jerzy Walaszek"
Print 
Input "a = ", a
Print 
Input "b = ", b
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 "Nacisnij klawisz Enter..."
Sleep
End
Python (dodatek)
# Program oblicza miejsce
# zerowe dla funkcji liniowej
# f(x) = ax + b
#----------------------------
# (C)2026 mgr Jerzy Wałaszek
# I Liceum Ogólnokształcące
# w Tarnowie

# dokładność porównania z zerem
eps = 0.0000000001

print("Miejsce zerowe f(x) = ax + b")
print("----------------------------")
print(" (C)2026 mgr Jerzy Wałaszek")
print()
a = float(input("a = "))
print()
b = float(input("b = "))
print()
print("WYNIK")
print()

if abs(a) < eps:
    print("Brak miejsca zerowego")
else:
    x0 = - b / a
    print("x0 = %.4f" % x0)
print()
input("Naciśnij Enter...")
Wynik:
Miejsce zerowe f(x) = ax + b
----------------------------
 (C)2026 mgr Jerzy Wałaszek

a = 12

b = -3

WYNIK

x0 = 0.2500

Naciśnij Enter...
JavaScript
<html>
  <head>
  </head>
  <body>
<div style="overflow-x: auto;"
            align="center">
  <table
  border="0"
  cellpadding="4"
  style="border-collapse:
         collapse">
    <tr>
      <td nowrap>
        <form
        name="frmbincode"
        style="text-align: center;
              background-color:
              #E7E7DA">
          <big><b>
          Miejsce zerowe
          </b></big><br>
          <br>
          f(x) = ax + b<br>
          <br>
          &nbsp;&nbsp;
          (C)2026
          mgr Jerzy Wałaszek
          I LO w Tarnowie
          &nbsp;&nbsp;
          <hr>
          Podaj wartości
          współczynników:<br>
          <br>
          a = <input
              type="text"
              name="inp_a"
              size="16"
              value="12"
              style="text-align:
              right">
          <br>
          b = <input
              type="text"
              name="inp_b"
              size="16"
              value="-3"
              style="text-align:
              right">
          <hr>
          <input
          type="button"
          value="Oblicz"
          name="B1"
          onclick="main()">
          <hr>
          <b>WYNIK:</b>
          <div id="out">.</div>
        </form>
      </td>
    </tr>
  </table>
</div>

<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
// w Tarnowie

function main()
{
  var EPS = 0.0000000001
  var a,b,x0,t

  a = parseFloat(document
      .frmbincode.inp_a.value)
  b = parseFloat(document
      .frmbincode.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>0</sub> = " + x0
    }
  }
  document.getElementById("out")
  .innerHTML = t
}

</script>
  </body>
</html>
Miejsce zerowe

f(x) = ax + b

  (C)2026 mgr Jerzy Wałaszek I LO w Tarnowie  
Podaj wartości współczynników:

a =
b =

WYNIK:
.

do podrozdziału  do strony 

Zadania

  1. Zaproponuj implementację opisanego tutaj algorytmu w formie procedury (funkcji). Zastanów się dobrze, w jaki sposób procedura ma pobierać dane oraz jak zwracać wyniki obliczeń do wywołującego ją programu.

do podrozdziału  do strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2026 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.
W soboty i niedziele reklamy są wyłączane w całym serwisie.
Informacje dodatkowe.