Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

Bash: Pierwiastki równania kwadratowego

piątek,

Bash: Pierwiastki równania kwadratowego

Rozwiązywanie równań kwadratowych bezpośrednio w czystym bash, bez korzystania z zewnętrznych narzędzi takich jak bc, jest mocno skomplikowane, ponieważ bash nie obsługuje obliczeń zmiennoprzecinkowych ani pierwiastków kwadratowych. Można to osiągnąć z pewnymi ograniczeniami, jeśli współczynniki i rozwiązania są liczbami całkowitymi.

Dla przypomnienia:

  • równanie kwadratowe ma postać ax^2 + bx + c = 0;
  • delta = b^2 - 4ac;
  • pierwszy pierwiastek: x1 = (-b + sqrt(delta)) / (2a);
  • drugi pierwiastek: x2 = (-b - sqrt(delta)) / (2a)

gdzie

  • a, b, c są współczynnikami równania kwadratowego;
  • Delta jest wyróżnikiem, określającym naturę pierwiastków;
  • sqrt(Delta) oznacza pierwiastek kwadratowy z delty.

Oto przykładowy skrypt Bash, który oblicza pierwiastki równania kwadratowego ( ax^2 + bx + c = 0 ) dla całkowitych współczynników i całkowitych rozwiązań:

#!/bin/bash

# Wartości współczynników
a=1
b=-3
c=2

# Obliczanie delty
delta=$((b*b - 4*a*c))

# Sprawdzanie, czy delta jest większa lub równa zero
if [ "$delta" -lt 0 ]; then
    echo "Równanie nie ma rozwiązań rzeczywistych."
    exit
fi

# Obliczanie pierwiastka kwadratowego z delty
sqrt_delta=0
while [ $((sqrt_delta * sqrt_delta)) -lt "$delta" ]; do
    sqrt_delta=$((sqrt_delta + 1))
done

# Sprawdzanie, czy delta jest kwadratem liczby całkowitej
if [ $((sqrt_delta * sqrt_delta)) -ne "$delta" ]; then
    echo "Równanie nie ma rozwiązań w liczbach całkowitych."
    exit
fi

# Obliczanie pierwiastków - krok pierwszy
x1=$((-b + sqrt_delta))
x2=$((-b - sqrt_delta))

# Dzielenie przez 2a
x1=$((x1 / (2*a)))
x2=$((x2 / (2*a)))

echo "Pierwiastki równania kwadratowego to: x1 = $x1, x2 = $x2"

Ten skrypt:

  1. oblicza deltę;
  2. sprawdza, czy delta jest ujemna (brak rozwiązań rzeczywistych);
  3. oblicza pierwiastek kwadratowy z delty w sposób przybliżony (tylko dla liczb całkowitych);
  4. sprawdza, czy delta jest kwadratem liczby całkowitej (w przeciwnym razie równanie nie ma rozwiązań całkowitych);
  5. oblicza pierwiastki równania.

Pamiętaj, że ten skrypt działa tylko dla przypadków, gdzie wszystkie współczynniki są liczbami całkowitymi i gdzie rozwiązania są również liczbami całkowitymi. W przypadkach, gdy rozwiązania są liczbami zmiennoprzecinkowymi, konieczne byłoby użycie narzędzi zewnętrznych, takich jak bc.

Modyfikacja skryptu

Skrypt może być wywoływany z przekazaniem argumentów, po niewielkiej przeróbce:

# Wartości współczynników
a=$1
b=$2
c=$3

Artykuł: Konkurs z Języka Angielskiego Zawodowego

Konkurs z Języka Angielskiego Zawodowego

Artykuł: Testujemy kontroler ARGB

Testujemy kontroler ARGB

Artykuł: Olimpiada Zdrowia PCK

Olimpiada Zdrowia PCK

Artykuł: Zostań dawcą szpiku!

Zostań dawcą szpiku!

Artykuł: Przeglądarka Vivaldi

Przeglądarka Vivaldi

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły