Erro de arredondamento ou truncamento no Scilab
- Subject: Erro de arredondamento ou truncamento no Scilab
- From: Maurício Rapchan Andretta <rapchan@linux.ime.usp.br>
- Date: Wed, 14 Jun 2000 18:43:06 -0300
Olá pessoal,
Quem vos fala é Maurício, um dos monitores de MAC 315.
Eu estava resolvendo o exercício 1.4.2, da lista 4, utilizando o
programa 'enumeracao-explicita.sci', e percebi que o Scilab apresentava
a resposta errada para o problema.
Este problema é solúvel, e o programa dizia ser ilimitado.
O que aconteceu foi que o Scilab introduziu erros nos
cálculos (inversas, produtos de matrizes, etc.) enquanto
procurava por direções de ilimitação, ou seja, enquanto
resolvia o sistema:
[A; ones(1,n)] * h == [zeros(m,1);1], com h >= 0.
Ele encontrou uma direção próxima da verdadeira, que é
[0; 0; .5; .5; 0; 0].
Quando a direção correta fosse multiplicada pelo vetor
c = [5; -2; 1; -1; 0; 0],
deveria obter valor igual a 0 (zero), indicando que a função
objetivo não aumenta nesta direção, não caracterizando ilimitação.
Devido aos erros de cálculo, ele obtém 5.551E-17 > 0 como
resultado, acreditando então que o problema é ilimitado.
Eu avisei o Leônidas sobre o erro, e ele testou o programa na rede IME,
e o resultado obtido estava correto.
Testei novamente o mesmo programa na rede Linux, e o problema apareceu
novamente, indicando que isto é um problema com o Scilab.
Erros como este são bastante comuns quando tentamos resolver problemas
numericamente.
O programa com a matriz e os vetores que geraram este erro estão em
http://www.ime.usp.br/~leo/mac315/00/exemplos/enumeracao-explicita.sci
Vale a pena dar uma olhada.
Maurício