Cálculo de determinantes de matrizes de ordem 2 e 3
Esse script foi criado para me ajudar na escola, dar uma agilizada =D. Ainda estou aprendendo shell, portanto se quiserem modificar e se tiver algum erro podem falar.
flw
flw
Descrição
Esse script foi criado para me ajudar na escola, dar uma agilizada =D. Ainda estou aprendendo shell, portanto se quiserem modificar e se tiver algum erro podem falar.
flw
flw
Versões atualizadas deste script
#!/bin/bash #Script feito por Rodolfo Marcondes Dias #pode ser alterado ################################ clear echo "Digite a ordem de uma matriz quadrada? (2 ou 3)" ; read matriz if [ $matriz = "2" ] ; then echo 'digite os 4 elementos da matriz por linha' ; echo 'a11=' read a11 echo 'a12=' read a12 echo 'a21=' read a21 echo 'a22=' read a22 elif [ $matriz = "3" ] ; then echo 'digite os 9 elementos da matriz por linha' ; echo 'a11=' read a11 echo 'a12=' read a12 echo 'a13=' read a13 echo 'a21=' read a21 echo 'a22=' read a22 echo 'a23=' read a23 echo 'a31=' read a31 echo 'a32=' read a32 echo 'a33=' read a33 else echo 'digite 2 ou 3' fi sleep 1 echo 'Voçê deseja calcular o determinate da matriz? (s/n)' ; read resposta case $resposta in s) echo 'continuando' ; sleep 1 ;; n) echo 'saindo' ; exit ;; *) echo 'ecolha s ou n' ; exit ;; esac if [ $matriz = "3" ] ; then A=$(($a11*$a22*$a33+$a12*$a23*$a31+$a13*$a21*$a32)) B=$(($a13*$a22*$a31+$a11*$a23*$a32+$a12*$a21*$a33)) elif [ $matriz = "2" ] ; then a=$(($a11*$a22)) b=$(($a12*$a21)) fi case $matriz in 2) echo 'calculando o determinante da matriz quadrada de ordem 2...' ; sleep 1 ; echo ; echo "o determinate é: $(($a-$b))" ;; 3) echo 'calculando o determinante da matriz quadrada de ordem 3...' ; sleep 1; echo ; echo "o determinate é: $(($A-$B))" ;; esac
Como usamos as mesmas variáveis, a matemática que useis, posto aqui.
Depois de se ler os valores de a11 até a44, faça:
a=$(($a22*$a33*a44 + $a23*$a34*$a42 + $a24*$a43*$a32))
b=$(($a24*$a33*$a42 +$a23*$a32*$a44 + $a22*$a34*$a43)) ; b=$(($b*-1))
c=$(($a+$b)) ; c=$(($c*$a11))
d=$(($a21*$a33*$a44 + $a23*$a34*$a41 + $a24*$a43*$a31))
e=$(($a24*$a33*$a41 + $a23*$a31*$a44 + $a21*$a34*$a43)) ; e=$(($e*-1))
f=$(($d+$e)) ; f=$(($f*-$a12))
g=$(($a21*$a32*$a44 + $a22*$a34*$a41 + $a24*$a42*$a31))
h=$(($a24*$a32*$a41 + $a22*$a31*$a44 + $a21*$a34*$a42)) ; h=$(($h*-1))
i=$(($g+$h)) ; i=$(($i*$a13))
j=$(($a21*$a32*$a43 + $a22*$a33*$a41 + $a23*$a42*$a31))
k=$(($a23*$a32*$a41 + $a22*$a31*$a43 + $a21*$a42*$a33)) ; k=$(($k*-1))
l=$(($j+$k)) ; l=$(($l*-$a14))
r=$(($c+$f+$i+$l))
echo " Det = $r " ;;