Curso de Matlab

Curso de Matlab

(Parte 6 de 11)

Suponha que queremos calcular a área de um trapézio, e também suponha que a variável base contenha o comprimento da base e que altura_1 e altura_2 contenham as duas alturas. A área de um trapézio pode ser calculada usando o seguinte enunciado:

area = 0.5*h*(B + b); Suponha que omitamos os parênteses:

area = 0.5*altura*B + b; Este enunciado seria executado como se fosse o enunciado a seguir:

area = (0.5*altura*B) + b;

Note que embora a resposta incorreta tenha sido calculada, não há mensagens de erro imprimidas alertando-nos quanto ao erro. Portanto, é importante estar cauteloso quando convertemos equações para comandos do MATLAB. Adicionar parênteses extras é uma maneira

Curso de MATLAB

Cap. 3 – Cálculos com Matrizes20 fácil para ter certeza que os cálculos são feitos na ordem que você quer. Se uma expressão é longa, divida-a em várias expressões. Por exemplo, considere a seguinte equação:

f =x3 - 2x2 + 6,3___

O valor de f poderia ser calculado usando os seguintes comandos, onde x é um escalar:

numerador = x^3 - 2*x^2 + x + 6.3 denominador = x^2 + 0.5005*x - 3.14 f = numerador/ denominador

É melhor usar várias equações que são mais fáceis de compreender que apenas uma, que requer maior cuidado na hora de imaginar a ordem das operações.

E x e r c í c i o s

Dê os seguintes comandos do MATLAB para calcular os seguintes valores. Suponha que as variáveis nas equações são escalares e tenham valores determinados.

Fricção =v2__
30s
v v2

2. Fator de correção em cálculo de pressão: fator = 1 + _b_ + _c_

resistência =1 _
1+ 1 + 1 _
r1 r2 r3
perda = f . p1 . v2

5. Perda de pressão de um cano de fricção d 2

Curso de MATLAB

Cap. 3 – Cálculos com Matrizes21

Limites Computacionais

Para a maioria dos computadores, a escala de valores estende-se de 10-308 a 10308, o que deve ser suficiente para acomodar grande parte dos cálculos. Contudo, é possível obter resultados que estejam fora deste alcance, como mostramos a seguir:

Suponha que executamos os seguintes comandos:

x = 2e200; y = 1e200; z = x*y;

Como o alcance é de 10-308 a 10308, então os valores de x e y estão dentre do limite estabelecido. Mas, o valor de z é 2e400, e este valor ultrapassa o alcance. Este erro é chamado overflow porque o expoente do resultado de uma operação aritmética é demasiadamente alto para ser armazenado na memória do computador. No MATLAB, o resultado de um expoente overflow é

Suponha agora que executamos os seguintes comandos:

x = 2.5e-200; y = 1e200; z = x/y;

operação aritmética ser pequeno demais para ser armazenado na memória do computadorOs

O erro de underflow é um erro similar causado pelo expoente do resultado de uma valores de x e y novamente estão dentro do alcance permitido, mas o valor de z deve ser 2.5e-400. Se o expoente é menor que o mínimo, causamos um erro de underflow. No MATLAB, o resultado de underflow é zero.

Sabemos que a divisão por zero é uma operação inválida. Se uma expressão resulta em uma divisão por zero no MATLAB, o resultado da divisão é ¥. O MATLAB imprimirá uma mensagem de aviso e logo a seguir o cálculo continua. As operações posteriores usam como ¥ resultado da divisão.

3.3Operações de Conjuntos

Uma operação de conjunto é uma operação elemento por elemento. Por exemplo, suponha que A e B sejam vetores-linha com cinco elementos. Um modo de gerar um novo vetor C com valores que sejam produtos dos valores correspondentes em A e B é o seguinte:

Curso de MATLAB

Cap. 3 – Cálculos com Matrizes22

C(1) = A(1)*B(1); C(2) = A(2)*B(2); C(3) = A(3)*B(3); C(4) = A(4)*B(4); C(5) = A(5)*B(5);

Estes comandos são essencialmente comandos escalares porque cada comando multiplica um simples valor por um outro e armazena o produto em um terceiro valor. Para indicar que executamos uma multiplicação elemento por elemento entre duas matrizes de mesma ordem, usamos um ponto antes da operação. Assim, os cinco comandos acima podem ser substituídos pelo seguinte: C = A .*B;

Se omitirmos o ponto estaremos executando uma operação matricial. Operações matriciais é o tema que será discutido no capítulo 6.

Para as operações de adição e subtração, as operações de conjunto e matriciais são idênticas, e então não precisamos distinguí-las. Contudo, as operações de conjunto para multiplicação, divisão e exponenciação são diferentes das operações matriciais para multiplicação, divisão e exponenciação e por isso devemos usar o ponto quando queremos especificar uma operação de conjunto.

Uma operação elemento por elemento, ou operações de conjuntos, aplicam-se não somente para operações entre duas matrizes de mesma ordem como também em operações entre um escalar e um não escalar. Contudo, a multiplicação de uma matriz por um escalar e a divisão esquerda de uma matriz por um escalar podem ser escritas de modo ou de outro. Assim, os dois comandos em cada grupo de comandos abaixo são equivalentes para uma matriz não escalar A.

B = 3*A; B = 3.*A;

C = A/5; C = A ./5;

As matrizes resultantes B e C terão a mesma ordem de A.

Para mostrar as operações de conjunto para vetores, considere os seguintes vetores-linha:

A = [2 5 6] B = [2 3 5]

Se calculamos o produto elemento a elemento de A e B usando o seguinte enunciado: C = A.*B

Curso de MATLAB

Cap. 3 – Cálculos com Matrizes23

Então, C conterá os seguintes valores: C = [ 4 15 30]

O MATLAB tem dois operadores de divisão – uma divisão que usa o símbolo “/”e outra que usa o símbolo “ \ ”. O comando para divisão direita:

Irá gerar um novo vetor no qual cada elemento de A é dividido pelo elemento correspondente de B. Assim, C conterá os seguintes valores:

C = [1 1.667 1.2]

O comando para divisão esquerda: C = A.\B

Irá gerar um novo vetor no qual cada elemento é o elemento correspondente de B dividido pelo elemento correspondente de A. Então, C conterá os seguintes valores: C = [1 0.6 0.833]

A exponenciação de conjunto também é uma operação elemento por elemento. Por exemplo, usamos os mesmos valores para A e B, considere os comandos:

C = A.^2; D = A.^B;

(Parte 6 de 11)

Comentários