UMA INTRODUÇÃO À MODELAGEM MATEMÁTICA NO ENSINO MÉDIO Aula 3 Capı́tulo 1 Uso de novas tecnologias na resolução de sistemas lineares Como já foi comentado anteriormente, devido ao tipo de processamento(ponto flutuantetruncamento e/ou arredondamento), o uso de calculadoras e mesmo do computador para resolver sistemas pode ter resultados ”desastrosos”. Entretanto, existem softwares cientı́ficos que, por trabalharem com programação orientada o objetos, permitem evitar armadilhas. Mas sempre sob supervisão cuidadosa... Alguns softwares desde tipo são: MAPLE, MATLAB, Mathematica, MuPAD (antes gratuito, agora incluı́do no ScientificWorkPlace) e Fermat. A seguir serão apresentados e comentados alguns comandos essenciais do MAPLE, para resolver Sistemas Lineares. Em seguida, serão apresentados alguns exemplos de sistemas lineares como aplicação. 1.1 Pacote e comandos importantes Supondo o software MAPLE já devidamente instalado no computador, deve ser escolhido o modo ”worksheet”(folha de trabalho), utilizado quando se deseja fazer programação, e não o modo ”document”(documento), que oculta os comandos necessários para a realização de cálculos. Para isto, verifique, a partir da barra de ferramentas, escolhendo ”opção”, depois ”input display”se está marcada a opção ”maple notation”. Para resolver sistemas lineares e outros problemas de Álgebra Linear, o MAPLE conta com um pacote de comandos chamado linalg que deve ser carregado antes de qualquer 2 coisa, exceto do comando de limpeza da memória restart. É importante lembrar que, apos cada comando tem que ser digitado ; e deve ser clicada a tecla enter do computador, para que este comando seja implementado. Se o único interesse for obter rapidamente a solução de um sistema (supondo que exista tal solução), são poucos os comandos necessários: comandos para entrada dos dados do sistema, isto é, da matriz dos coeficientes e do vetor contendo os termos independentes. Com mais um comando, o próprio MAPLE, a partir destes dados, armazena a matriz ampliada. Finalmente, um comando único resolve o sistema. Exemplo 1 restart; with(linalg): A:=matrix(m,n,[a11,...a1n,a21,...,a2n,...,am1,...,amn]); B:=matrix(m,1,[b1,...,bm]); (ou B:=vector([b1,...,bm]); ou B:=[b1,...,bm]; ) AB:=concat(A,B); (ou AB:=augment(A,B); ) linsolve(A,B); X0:=linsolve(A,B); evalm(A & * X0); Estes dois últimos são para verificar que, substituindo X0 no sistema, ou seja multiplicando a matriz A por X0 , encontra-se B. Entretanto, como queremos ter um controle rigoroso da obtenção da solução via método de escalonamento de Gauss, serão necessários mais comandos: são primeiro os comandos que vão controlar as operações elementares com as linhas da matriz aumentada do sistema (matriz AB do exemplo 1). Estes comandos são: • swaprow(A,Li ,Lj ); para trocar a linha Li com a linha Lj • mulrow(A,Li ,k); para multiplicar a linha Li por k • addrow(A,Li ,Lj ,k); para substituir a linha Lj por k Li + Lj 3 A cada vez que efetuamos uma destas operações a matriz é modificada, logo cada nova matriz tem que ser identificada, então os comandos acima têm que ser combinados com a designação das novas matrizes que vão surgindo. Exemplo 2 AB1=:swaprow(A,1,2); AB2=:mulrow(AB1,1,1/2); Finalmente, após um certo número de operações, é obtida uma matriz escalonadatriangular ABi, equivalente a AB. Sendo assim, está autorizado o comando backsub(ABi); que encontrará a solução obtendo as incógnitas das equações do sistema equivalente ao inicial, associado a ABi, atuando de baixo para cima, em relação às linhas da matriz. No caso em que existe uma infinidade de soluções, ou seja, o sistema tem grau de liberdade (n − p), onde n é o número de incógnitas e p é o posto da matriz aumentada escalonada, igual ao posto da matriz dos coeficientes escalonada, haverá n − p variáveis arbitrárias e as outras p incógnitas serão obtidas em função dessas. Supondo que se deseja que as variáveis arbitrárias sejam designadas pelos sı́mbolos x1 , ... xn−p , ao invés do comando anterior deve ser usado uma variante backsub(ABi,false,x); Quando o sistema não tem solução, aparece uma mensagem de erro, depois deste comando. Nos exemplos ainda aparece o comando evalm(xxx); que é utilizado para cálculos com matrizes, por exemplo evalm(A & * B); significa o produto das matrizes A e B. Na barra de ferramentas do MAPLE, escolhendo ”Help”, pode-se ter acesso a muito mais informações e também exemplos de aplicação dos comandos e outros pacotes. 4 Serão apresentados agora alguns exemplos de uso do MAPLE para resoluçào de sistemas lineares (Exemplos 1 a 5). 5