zur Übersicht nächste Seite

quadratische Gleichungen

Die Ausführungen der vorherigen Seiten über Programmfenster werden hier weitergeführt.
Generell gilt bei den weißen Textstellen auf dieser Seite: Man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Terminals ein - dann drückt man die Eingabetaste. 
Oder man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Editors ein.  
Dann drückt man zum Abspeichern gleichzeitig Strg und O 
dann drückt man die Eingabetaste um den Dateinamen zu bestätigen 
dann drückt man zum Verlassen des Editors gleichzeitig Strg und X.


Das Lösen quadratischer Gleichungen gehört zu den Grundlagen der Mathematik. Begriffe wie pq-Formel abc-Formel Mitternachtsformel kennt wahrscheinlich jeder. Ein Beispiel


Es wird hier ein bash-script aufgeschrieben mit dem die Lösungen x solcher Gleichungen bestimmt werden.
Beim Aufrufen des scriptes öffnet sich ein yad-Fenster in das man Werte eingeben kann.

Nach dem Drücken der Berechnen-Schaltfläche erhält man die Lösungen für x

Die eingegebenen Daten können Kommazahlen oder Punktzahlen oder Multiplikationen oder Brüche sein. Sogar mathematische Terme können eingegeben werden sofern diese so geschrieben werden daß bc diese versteht. Z.B.










Das yad-Fenster enthält eine Bild-Datei die Sie auf Ihren Computer kopieren müssen. Diese Bild-Datei muß in dem selben Ordner liegen in dem auch das script abgelegt wird.

Das script wird wieder in dem Ordner ~/Bla abgelegt:
nano ~/Bla/quadratischeGLEICHUNG.sh
Eingabe in den Editor
#!/bin/bash

yB=$(yad --title="quadratische Gleichung zweiten Grades" --width=350 --on-top --columns="1" --form --image-on-top --image-path=/home/$USER/Bla/ --image=quad.png --align=center --field=" a eingegen":CE --field=" b eingegen":CE --field=" c eingegen":CE --button="Berechnen" )

if [ $? -ne 0 ]; then
exit
fi

IFS="|" read Ta Tb Tc <<< "$( echo "$yB" | sed 's/,/\./g' )"

if [[ ! "$Ta" ]]; then
zenity --info --width="280" --title="Fehler" --text "Eingabedaten für a nicht vorhanden\n\n mindestens 0 eingeben"
exit
fi

if [[ ! "$Tb" ]]; then
zenity --info --width="280" --title="Fehler" --text "Eingabedaten für b nicht vorhanden\n\n mindestens 0 eingeben"
exit
fi

if [[ ! "$Tc" ]]; then
zenity --info --width="280" --title="Fehler" --text "Eingabedaten für c nicht vorhanden\n\n mindestens 0 eingeben"
exit
fi

Qaa=$( echo "$Ta/1" | bc -l | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//' )
Qbb=$( echo "$Tb/1" | bc -l | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//' )

Qa=$( echo "($Ta)/1" | bc -l )
Qb=$( echo "($Tb)/1" | bc -l )
Qc=$( echo "($Tc)/1" | bc -l )
Qe=$( echo "(-1)*($Qc)/$Qb" | bc -l )

if [ $(echo $Qe | grep - | wc -w) -eq 0 ]; then
We=$( echo "$Qe+.000000000005" | bc -l | sed -r '/\./s/.{10}$//' | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//')
else
We=$( echo "$Qe-.000000000005" | bc -l | sed -r '/\./s/.{10}$//' | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//')
fi

if [ $Qaa = 0 ]; then
if [ $Qbb = 0 ]; then
zenity --info --width="280" --title="Fehler" --text "Eingabedaten erlauben keine x-Berechnung"
exit
else
zenity --info --width="280" --icon-name=emblem-default --title="Ergebnis" --text "Es gibt nur eine\n\n Lösung\n\n $We"
exit
fi
else
Wu=$( echo "$Qb*$Qb-4*$Qc*$Qa" | bc -l )
fi

Qf=$( echo "(-1)*($Qb)/(2*$Qa)" | bc -l )
if [ $(echo $Qf | grep - | wc -w) -eq 0 ]; then
Wf=$( echo "$Qf+.000000000005" | bc -l | sed -r '/\./s/.{10}$//' | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//')
else
Wf=$( echo "$Qf-.000000000005" | bc -l | sed -r '/\./s/.{10}$//' | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//')
fi

Wuu=$( echo "$Wu/1" | bc -l | sed -r '/\./s/.{10}$//' | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//' | sed 's/-//' )

if [ $Wuu = 0 ]; then
zenity --info --width="280" --icon-name=emblem-default --title="Ergebnis" --text "Es gibt nur eine\n\n Lösung\n\n $Wf"
exit
fi

Ws=$( echo $Wu | sed 's/-//' )

if [ $(echo $Qa | grep - | wc -w) -eq 0 ]; then
Wv=$( echo "e(l($Ws)/2)/(2*$Qa)+.000000000005" | bc -l )
else
Wv=$( echo "e(l($Ws)/2)/(2*$Qa)-.000000000005" | bc -l )
fi

if [ $(echo "$Qf + $Wv" | bc -l | grep - | wc -w) -eq 0 ]; then
Wm=$( echo "$Qf + $Wv+.00000000005" | bc -l | sed -r '/\./s/.{10}$//' | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//')
else
Wm=$( echo "$Qf + $Wv-.00000000005" | bc -l | sed -r '/\./s/.{10}$//' | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//')
fi

if [ $(echo "$Qf - ($Wv)" | bc -l | grep - | wc -w) -eq 0 ]; then
Wn=$( echo "$Qf - ($Wv)+.00000000005" | bc -l | sed -r '/\./s/.{10}$//' | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//')
else
Wn=$( echo "$Qf - ($Wv)-.00000000005" | bc -l | sed -r '/\./s/.{10}$//' | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//')
fi

Wi=$( echo $Wv | sed 's/-//' | sed -r '/\./s/.{10}$//' | sed 's/^0$/0.0/' | sed -r 's/^(-?)\./\10./' | sed -r 's/(\.?)0*$//' | sed 's/$/ i/')

if [ $(echo "$Wu" | grep - | wc -w) -eq 0 ]; then
zenity --info --width="280" --icon-name=emblem-default --title="Ergebnis" --text "Es gibt zwei\n\n reelle Lösungen \n\n $Wm \n\n $Wn"
else
zenity --info --width="280" --icon-name=emblem-default --title="Ergebnis" --text "Es gibt zwei\n\n komplexe Lösungen\n\n $Wf + $Wi \n\n $Wf - $Wi"
fi
Nun muß man das script ausführbar machen.
chmod +x ~/Bla/quadratischeGLEICHUNG.sh

 



zur Übersicht nächste Seite

Datenschutzerklärung
Impressum