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

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

[ Hits: 12.088 ]

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

Alguns riffs do Rock tocados com o comando beep

Instalação de servidor Squid rápido e fácil

Make ISO OpenBSD

Script para ripar faixas de CDs e codificar para .ogg

Controle de usuários - Samba


  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts