Cálculo de determinantes de matrizes de ordem 2 e 3

Publicado por Rodolfo Marcondes Dias (última atualização em 15/07/2011)

[ Hits: 11.564 ]

Homepage: www.vivaolinux.com.br

Download matriz

Download det2.sh (versão 2)




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

  



Versões atualizadas deste script

Versão 2 - Enviado por Adriel Macedo em 12/05/2011

Changelog: Calcula o Determinante de matrizes de ordem 2,3 e 4.

Download det2.sh


Esconder código-fonte

#!/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











Scripts recomendados

Seletor de wallpaper para fluxbox modo grafico

script limpeza de sistemas linux

Remover arquivos com mais de "N" dias da Lixeira do Samba

Multiconversor (Octal para binário, decimal para hexadecimal, etc)

Inserir tags ID3 em mp3


  

Comentários
[1] Comentário enviado por Macedo2 em 12/05/2011 - 00:27h

Eu havia feito um programa semelhante a esse, mas, precisei ir um pouco mais longe (até ordem 4)
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 " ;;

[2] Comentário enviado por Macedo2 em 12/05/2011 - 00:28h

#!/bin/bash

clear
echo "Programa para o cálculo de Determinantes"
echo " Qual a ordem da matriz?"
echo
echo "Para ordem 2 digite 2"
echo "Para ordem 3 digite 3"
echo "Para ordem 4 digite 4"
read o

case $o in

2)
clear
echo
echo "Programa para o cálculo de determinantes en Matrizes 2x2"
echo "A matriz deve estar nesse formato:"
echo
echo " ||a11 a12||"
echo " ||a21 a22||"
echo
echo "Insira agora os valores de:"
echo "a11" ; read a11
echo "a12" ; read a12
echo "a21" ; read a21
echo "a22" ; read a22
x=$(($a12*$a21*-1))
y=$(($a11*$a22))
r=$(($x+$y))
echo
echo " Det = $r " ;;

3)
clear
echo
echo "Programa para o cálculo de determinantes em Matrizes 3x3 "
echo "A matriz deve estar nesse formato:"
echo
echo " ||a11 a12 a13|| "
echo " ||a21 a22 a23|| "
echo " ||a31 a32 a33|| "
echo
echo "Insira agora os valores de:"
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
echo
x=$(($a13*$a22*$a31 + $a11*$a23*$a32 + $a12*$a21*$a33)) ; x=$(($x*-1))
y=$(($a11*$a22*$a33 + $a12*$a23*$a31 + $a13*$a21*$a32)) ; r=$(($x+$y))
echo " Det = $r " ;;

4)
clear
echo
echo "Programa para o cálculo de determinantes em Matrizes 4x4"
echo "A matriz deve estar nesse formato:"
echo
echo " ||a11 a12 a13 a14||"
echo " ||a21 a22 a23 a24||"
echo " ||a31 a32 a33 a34||"
echo " ||a41 a42 a43 a44||"
echo
echo "Insira agora os valores de:"
echo "a11" ; read a11
echo "a12" ; read a12
echo "a13" ; read a13
echo "a14" ; read a14
echo "a21" ; read a21
echo "a22" ; read a22
echo "a23" ; read a23
echo "a24" ; read a24
echo "a31" ; read a31
echo "a32" ; read a32
echo "a33" ; read a33
echo "a34" ; read a34
echo "a41" ; read a41
echo "a42" ; read a42
echo "a43" ; read a43
echo "a44" ; read a44
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 " ;;

*)
echo "O número digitado é inválido" ;;
esac


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts