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:

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

Miejsce zerowe x0 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ć).


do podrozdziału  do strony 

Opis algorytmu

Specyfikacja problemu

Dane wejściowe

a,b – współczynniki, a,b ∈ R

Dane wyjściowe

x0 – miejsce zerowe, x0R

Zmienne pomocnicze

ε – dokładność porównania z zerem, ε ∈ R,  ε = 0.0000000001

Lista kroków

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

Schemat blokowy

obrazek

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 x0 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.

Informacje dodatkowe.