|
|
Conteúdo
1 Cálculos Científicos
2 Variáveis e Expressões Simbólicas
3 Instalando o pacote gaal
4 Matrizes
O MATLAB é um software destinado a fazer cálculos com
matrizes (MATLAB = MATrix LABoratory). Os comandos do MATLAB
são muito próximos da forma como escrevemos expressões
algébricas, tornando mais simples o seu uso. Podem ser
incorporados às rotinas pré-definidas, pacotes para cálculos
específicos.
Escrevemos
um pacote chamado
gaal com funções que são direcionadas para este curso.
O MATLAB pode ser adquirido em uma boa livraria a um preço bastente razoável. Por exemplo, a versão estudante pode ser adquirida através da internet, na livraria Blackwell's ( http://bookshop.blackwell.co.uk) na Inglaterra por US$ 68,00 incluindo a despesa com o transporte.
Uma vez inicializado o MATLAB, aparecerá na janela de comandos um prompt >> ou EDU>>. O prompt significa que o MATLAB está esperando um comando. Todo comando deve ser finalizado teclando-se Enter.

|
|
No MATLAB, pode-se obter ajuda sobre qualquer comando ou
função. O comando
>> help
mostra uma listagem
de todos os pacotes disponíveis. Ajuda sobre um pacote
específico ou sobre um comando ou função específica é obtida
com o comando
>> help nome,
(sem a vírgula!)
onde
nome pode ser o nome de um pacote ou o nome de um
comando ou função.
No MATLAB você pode resolver este problema de pelo menos duas maneiras. A mais simples é
EDU>> 3*25 + 5*12 ans = 135Observe que no MATLAB a multiplicação tem precedência sobre a adição. Note também que ele chamou o resultado de ans.
Alternativamente, você pode usar variáveis para armazenar informação.
EDU>> q1=3, p1=25, q2=5, p2=12
q1 =
3
p1 =
25
q2 =
5
p2 =
12
EDU>> total=q1*p1+q2*p2
total =
135
Primeiro, criamos quatro variáveis, q1, p1, q2 e p2, atribuindo a elas os seus valores respectivos. Observe que no MATLAB o sinal de igual tem um sentido diferente daquele da Matemática. Aqui, igual significa atribuição. O que estiver à direita do sinal de igual é ``colocado'' na variável que estiver à esquerda. Finalmente, criamos uma variável chamada total que recebeu o total da compra. Usamos a vírgula para separar os comandos que são dados em uma mesma linha. Esta separação poderia ser feita com ponto e vírgula. Mas, neste caso o MATLAB não mostra os resultados dos comandos. No exemplo anterior teríamos
EDU>> q1=3; p1=25; q2=5; p2=12; EDU>> total=q1*p1+q2*p2;
Em qualquer momento, podemos ver o valor que está contido em uma variável, simplesmente digitando no prompt o seu nome.
EDU>> total total = 135
O MATLAB oferece as seguintes operações aritméticas:
>> a+b soma a e b. Por exemplo,
5+6.
>> a-b subtrai a de
b. Por exemplo, 15-12.
>> a*b
multiplica a por b. Por exemplo,
3.14*0.15.
>> a^b calcula a
elevado a b. Por exemplo,
5^(1/2).
A ordem com que são avaliadas as expressões é dada pela seguinte regra: expressões são avaliadas da esquerda para a direita, com a potência tendo a mais alta precedência, seguida pela multiplicação e divisão que têm igual precedência, seguidas pela adição e subtração que têm igual precedência. Parêntesis podem ser usados para alterar esta ordem. Sendo que neste caso, os parêntesis mais internos são avaliados antes dos mais externos.
Comandos que foram dados anteriormente podem ser obtidos novamente usando as teclas e ¯. Por exemplo, pressionando a tecla uma vez você obtem o último comando digitado no prompt. Pressionando repetidamente a tecla se obtem os comandos digitados anteriormente, um de cada vez na direção para trás. Analogamente, pressionando-se a tecla ¯, mas na direção para frente. Mais ainda, digitando no prompt os primeiros caracteres de um comando dado anteriormente e então pressionando-se a tecla , obtem-se o comando mais recente tendo aqueles caracteres iniciais. Em qualquer momento, as teclas ¬, ® podem ser usadas para se mover o cursor dentro de um comando, no prompt. Desta forma um comando pode ser corrigido, além das teclas Delete e Backspace.
O MATLAB tem certas regras para nomear as variáveis. Os
nomes de variáveis devem ser nomes iniciados por letras não
podem conter espaços nem carcteres de pontuação. O MATLAB
faz diferença entre letras maiúsculas e minúsculas. Alguns
nomes são usados para variáveis predefinidas. Estas
são:
ans - variável usada para os resultados.
pi - número p.
eps - menor número tal que, quando adicionado a
1, cria um número maior que 1 no computador.
flops - armazena o número de operações em ponto
flutuante realizadas.
inf - significa infinito.
NaN ou nan - significa não é um número,
por exemplo, 0/0.
i e j - unidade imaginária [Ö(-1)].
nargin - número de argumentos de entrada de uma função.
nargout - número de argumentos de saída de uma função.
realmin - menor número que o computador pode armazenar.
realmax - maior número que o computador pode armazenar.
As variáveis podem ser redefinidas a qualquer momento, bastando para isso atribuí-las um novo valor.
O MATLAB tem uma série de funções científicas pré-definidas. A maioria pode ser usada da mesma forma que seria escrita matematicamente. Por exemplo:
EDU>> x=sqrt(2)/2
x =
0.7071
EDU>> y=acos(x)
y =
0.7854
EDU>> y_graus=y*180/pi
y_graus =
45.0000
Estes comandos calculam o arco cujo cosseno é Ö2/2,
inicialmente em radianos, depois em graus. Abaixo segue uma
lista de funções científicas disponíveis:
abs(x) - valor absoluto de x.
acos(x) - arco cujo cosseno é x.
asin(x) - arco cujo seno é x.
atan(x) - arco cuja tangente é x.
cos(x) - cosseno de x.
exp(x) - exponencial ex.
gcd(x,y) - máximo divisor comum de x e y.
lcm(x,y) - mínimo múltiplo comum de x e y.
log(x) - logaritmo de x na base e.
log10(x) - logaritmo de x na base 10.
rem(x,y) - resto da divisão de x por y.
sin(x) - seno de x.
sqrt(x) - raiz quadrada de x.
tan(x) - tangente de x.
É importante salientar que o MATLAB não muda a sua forma de representar os números internamente, quando formatos diferentes de exibição de números são escolhidos.
EDU>> syms x EDU>> simplify((sin(x))^2+(cos(x))^2) ans = 1
Estes comandos mandam o MATLAB simplificar a expressão sen2x+cos2x. Primeiro precisamos dizer ao MATLAB que x é uma variável simbólica, depois pedimos para simplificar a expressão que envolve x. Neste caso usamos uma função chamda simplify. A palavra função no MATLAB tem um significado diferente daquele que tem na Matemática. Aqui função é um comando, que pode ter alguns argumentos de entrada e alguns de saída. Neste caso, a função simplify tem como argumento de entrada uma expressão simbólica e de saída também.
Uma vez definido que a variável x é uma variável simbólica, podemos definir expressões que envolvem esta variável. Por exemplo, dadas duas funções
|
EDU>> f=2*x^2+3*x-5; g=x^2-x+7;
EDU>> f+g
ans =
3*x^2+2*x+2
EDU>> f-g
ans =
x^2+4*x-12
EDU>> f*g
ans =
(2*x^2+3*x-5)*(x^2-x+7)
EDU>> expand(ans)
ans =
2*x^4+x^3+6*x^2+26*x-35
EDU>> f/g
ans =
(2*x^2+3*x-5)/(x^2-x+7)
EDU>> expand(ans)
ans =
2/(x^2-x+7)*x^2+3/(x^2-x+7)*x-5/(x^2-x+7)
EDU>> pretty(ans)
2
x x 5
2 ---------- + 3 ---------- - ----------
2 2 2
x - x + 7 x - x + 7 x - x + 7
EDU>> f^3
ans =
(2*x^2+3*x-5)^3
EDU>> expand(ans)
ans =
8*x^6+36*x^5-6*x^4-153*x^3+15*x^2+225*x-125
Observe que o MATLAB não faz as simplificações ou expansões
automaticamente. Para isso, usamos os comandos
simplify que simplifica e expand que faz a
expansão. Além destes, usamos acima também o comando
pretty, que mostra a expressão de uma forma mais
fácil de enxergar. Além destes, que já vimos, existe o comando
simple, que tenta encontrar a forma mais simples de
escrever uma expressão.
O MATLAB pode realizar operações mais avançadas sobre expressões simbólicas. A função compose calcula a composição das funções f(x) e g(x) em f(g(x)), a função finverse encontra a inversa funcional de uma expressão e a função subs substitui uma variável por um número (ou por outra variável) em uma expressão. Por exemplo:
EDU>> f=1/(1-x^2); g=sin(x); EDU>> compose(f,g) ans = 1/(1-sin(x)^2) EDU>> compose(g,f) ans = sin(1/(1-x^2)) EDU>> finverse(g) ans = asin(x) EDU>> subs(f,x,2) ans = -1/3O MATLAB pode resolver equações. Por exemplo, para resolver a equação
|
EDU>> syms a b c x EDU>> solve(a*x^2+b*x+c) ans = [1/2/a*(-b+(b^2-4*a*c)^(1/2))] [1/2/a*(-b-(b^2-4*a*c)^(1/2))]
O MATLAB pode exibir este resultado de uma forma mais fácil de enxergar usando a função pretty.
EDU>> pretty(ans)
[ 2 1/2]
[ -b + (b - 4 a c) ]
[1/2 --------------------]
[ a ]
[ ]
[ 2 1/2]
[ -b - (b - 4 a c) ]
[1/2 --------------------]
[ a ]
Abaixo segue um resumo das funções para manipulação de
expressões algébricas:
diff(f) - calcula a derivada de f.
compose(f,g) - determina a composta f(g(x)).
expand(expr) - expande uma expressão expr.
finverse(expr) - determina a inversa funcional da
expressão expr.
pretty(expr) - exibe a expressão expr numa
forma mais bonita.
simple - procura encontrar uma forma mais simples de
escrever uma expressão expr.
simplify(expr) - simplifica a expressão
expr.
solve(expr) - acha a(s)
solução(es) da equação expr = 0.
subs(expr,x,a) - substitui na expressão
expr a variável x por a.
syms x y z a b - define as variáveis simbólicas
x, y, z, a e b.
Existem várias outras funções para manipulação de expressões algébricas. Você pode obter informações sobre elas digitando help symbolic. Uma função interessante que mostra as capacidades do MATLAB em tratar com funções matemáticas é funtool que é uma calculadora para funções.
Salve na pasta recém-criada gaal.

|
|


|
|

|
|
Clique em OK. Depois, em Save Settings e por último em Close
EDU>> plotf1(f,[-10,10],200)

|
|
EDU>> eixos

|
|
EDU>> axis([-5,5,-5,5])
|
EDU>> clf EDU>> plotf1(f,[-10,10]) EDU>> axis([-5,5,-5,5]) EDU>> eixos

|
|
| ||||||||||||||||||
>> A=[1,2,3;4,5,6]
Podemos acessar os elementos de uma matriz usando os comandos
EDU>> A(2,3)
ans =
6
EDU>> A(2,:)
ans =
4 5 6
EDU>> A(:,1)
ans =
1
4
EDU>> A(:,1:2)
ans =
1 2
4 5
O primeiro comando foi para mostrar o elemento (1,2) da matriz A. O segundo, é para exibir a 2a. linha e o terceiro, é para exibir a 1a. coluna. Finalmente, o quarto comando é para exibir a submatriz formada pela 1a. e 2a. colunas da matriz A.
As matrizes podem ser concatenadas
EDU>> B=[A,[7;8]]
B =
1 2 3 7
4 5 6 8
EDU>> [A;[7,8,9]]
ans =
1 2 3
4 5 6
7 8 9
As operações matriciais são executadas de forma semelhante a que são executadas operações escalares
EDU>> A=[1,2;3,4]; B=[-3;1]; C=[3,5;-5,2];
EDU>> A+C
ans =
4 7
-2 6
EDU>> 3*A
ans =
3 6
9 12
EDU>> C*A
ans =
18 26
1 -2
EDU>> B*A
??? Error using ==> *
Inner matrix dimensions must agree.
EDU>> A^2
ans =
7 10
15 22
EDU>> (A*C)^2
ans =
-50 144
-176 430
O MATLAB tem funções que geram matrizes especiais
EDU>> I=eye(3)
I =
1 0 0
0 1 0
0 0 1
EDU>> O=zeros(3,1)
O =
0
0
0
Além destas, o pacote gaal oferece as funções
randi para gerar uma matriz com elementos
inteiros aleatórios e matvand que cria a matriz de
Vandermonde.
EDU>> A=randi(3)
A =
0 3 2
2 1 0
-2 -1 -1
EDU>> B=randi(3,1)
B =
4
2
-3
EDU>> C=matvand(B,2)
C =
16 4 1
4 2 1
9 -3 1
Abaixo um resumo das operações matriciais
>> A=[a11,a12,...,a1n;a21,a22,...; ...,amn] cria uma matriz, m por n, usando os elementos a11, a12, ..., amn e a armazena numa variável de nome A.
>> A+B é a soma de A e B,
>> A*B é o produto de A por B,
>> A.' é a transposta de A,
>> A-B é a diferença A menos B,
>> num*A é o produto do escalar num
por A,
>> A^ k é a potência A elevado a k.
>> Aj=A(:,j) é a coluna j da matriz A, >> Ai=A(i,:) é a linha i da matriz A.
| |||||||||||||||||||||||
Ak = A, onde
| ||||||||||||||||||||||||||||||||||||
Ak = O, onde
| ||||||||||||||||||||||||||||||||||||
| ||||||||||||||
| ||||||||||||||