Ecco un piccolo script (semplice) che risolve le equazioni di secondo grado complete.
L'equazione di secondo grado completa è quel tipo equazione
ax^2 + bx + c = 0
dove tutti i coifficienti (a, b e c) sono diversi da zero.
Essa viene risolta con il cosiddetto metodo del completamento del quadrato. Non mi dilungo su queste cose; anche perchè lo scopo del post non è quello di fare una lezione sulle equazioni quadratiche di II grado :D
Vi propongo tre esempi:
5 x^2 -3 x -8 = 0 (x^2 vuol dire x elevato a due)
l'equazione ammette due risultati reali distinti
4 x^2 +12 x + 9 = 0
l'equazione ammette due risultati reali coincidenti
3 x^2 +7 x + 8 = 0
l'equazione non ammette risultati reali
Lo script vi chiede tre coifficienti.
Prendendo in considerazione la prima equazione,
5 x^2 - 3 x -8 = 0
il primo coifficiente (a) è 5, il secondo coifficiente (b) è -3 il terzo coifficiente (c) è -8.
Lo script è stato realizzato con la collaborazione preziosa del caro Lightuono :)
#!/bin/bash
# equazione secondo grado complete
#author: Bit3Lux, Lightuono.
echo "dammi il primo termine noto (a)"
read a
echo "dammi il secondo termine noto (b)"
read b
echo "dammi il terzo termine noto (c)"
read c
#Calcoliamo il delta
D=$(echo "scale=2; ($b^2)-(4*$a*$c)" | bc)
if [[ $(echo "$D" | grep -o "-") == "-" ]]; then
echo "l'equazione non ammette risultati reali"
exit 1
fi
rq=$(echo "scale=2; sqrt($D)" | bc)
b=$((b*-1))
case $D in
[0-9]*)
echo "l'equazione ammette due risultati reali distinti"
x1=$(echo "scale=2; ($b+$rq)/(2*$a)" | bc)
echo "x1 = $x1"
x2=$(echo "scale=2; ($b-$rq)/(2*$a)" | bc)
echo "x2 = $x2"
;;
0)
echo "l'equazione ammette due risultati reali coincidenti"
x=$(echo "scale=2; ($b+$rq)/(2*$a)" | bc)
echo "x1=$x, x2=$x"
;;
*)
echo "l'equazione non ammette risultati reali"
;;
esac
exit 0
Create un documento di testo sulla scrivania, chiamatelo equa2.sh e incollateci il codice di cui sopra.
Poi dal terminale spostatevi sulla scrivania
$ cd Scrivania
rendete eseguibile lo script
$ chmod +x equa2.sh
Per lanciarlo
$ ./equa2.sh
Ciao :))
Lo script fu creato dalle viscere di un capitolo di matematica :)
RispondiEliminacomplicato :o
RispondiElimina@Cooksappe
RispondiEliminaMa no, è semplice! :D
Delta=0, risultati coincidenti, x1=x2
Delta>0, risultati reali distinti
Delta<0 nessun risultato reale.
Con D=$(echo "scale=2; ($b^2)-(4*$a*$c)" | bc)
Calcolo il delta.
Con if [[ $(echo "$D" | grep -o "-") == "-" ]]; then
Controllo se il Delta è negativo;
Con il Costrutto case controllo se il delta è maggiore o uguale a zero :))