Você está na página 1de 49

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

o Freemat: Uma introduc a


Ulysses Sodr e Andrielber da Silva Oliveira Talita Paiva Corr ea Leandro Meneses da Costa
Londrina-PR, 20 de Maio de 2009

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

CONTEUDO

Conte udo

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

1 Abertura do Freemat 2 Iniciando o Freemat 3 C alculos B asicos 4 Trabalhando com constantes e com vari aveis 5 Func oes pr e-denidas no Freemat es 6 Denindo func o 7 Dois pontos, Somas, Regras Trapezoidal e de Simpson 8 Inserindo Matrizes es com Matrizes e Arranjos 9 Operac o es 10 Construindo gr acos de func o 11 Estat stica com o Freemat es l 12 Usando condic o ogicas es, Express 13 Declarac o oes e Vari aveis 14 Salvando uma sess ao es para construir Matrizes 15 Func o es relacionais 16 Lac os For, while, if e Operac o es escalares, vetoriais e matriciais 17 Func o 18 Editando e Rechamando uma linha de comando

4 4 5 7 8 10 13 16 19 22 22 25 25 26 26 28 32 33

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

CONTEUDO

o dois pontos 19 Submatrizes e a notac a

33 35 38 38 39 40 40 40 44 44 47 47

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

20 Arquivos no Freemat 21 Strings de texto, Mensagens de erro, Entrada 22 Gerenciando arquivos .m 23 Formato de sa da 24 C opia f sica 25 Gr acos 25.1 Gr acos de curvas no plano . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2 Gr acos de curvas no espac o . . . . . . . . . . . . . . . . . . . . . . . . .

25.3 Gr acos de superf cies e de grade . . . . . . . . . . . . . . . . . . . . . . . 25.4 Manipulando Gr acos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 C alculos com Matrizes Esparsas

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 1 Abertura do Freemat Sec a

Abertura do Freemat

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat e um programa de c alculo num erico para Matem atica e ci encias ans, que funo gr ciona interativamente, baseado em matrizes, permitindo a visualizac a aca de v arios dos seus objetos. O Freemat e r apido e simples, resolvendo problemas num ericos em o como C ou Fortran. tempo menor que o exigido em uma linguagem de programac a

Iniciando o Freemat

a. Em muitos sistemas como Linux e Windows, podemos iniciar o programa Freemat, cone relacionado ao Freemat. digitando freemat na linha de comando ou acionando o Para encerrar o Freemat, basta digitar na linha de comando a palavra quit ou exit . o b. O Freemat possui um editor interno de texto, que pode ser acionado pela digitac a da palavra editor na linha de comando ou pelo pressionar das teclas Ctrl+E . Tal editor serve para editar arquivos .m que s ao muito usados no Freemat. es matem c. O Freemat cont em um notebook onde realizamos operac o aticas. A todo momento podemos escrever, apagar, editar qualquer parte e depois salvar o arquivo como um documento de texto. d. Ao abrir o Freemat, aparece uma tela semelhante a:

es e usar tudo isto e. No Freemat, o usu ario pode denir novas vari aveis, scripts e func o de modo natural.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 3 C Sec a alculos B asicos

Freemat: Uma introdu c~ ao - XXV Semana da Matem atica - 2009 - UEL

es, vari f. O Freemat mant em uma lista vis vel (` a esquerda na tela) onde as func o aveis e estruturas cam armazenadas junto com os seus valores. Pode-se plotar gr acos, analisar e salvar os mesmos. g. O Freemat e leve e n ao exige muito da sua m aquina, funcionando em quase todos os sistemas computacionais. o ao Freemat, que possui muitas outras qualidades e h. Este tutorial e uma introduc a feitos que n ao apresentamos. Voc e deve digitar o c odigo sugerido neste material para obter os resultados indicados. i. Usando help assunto na linha de comando do Freemat, obtemos uma ajuda on-line o. Digitando na linha de comando help eig obtemos informac es com muita informac a o o eig. O pr sobre a func a oprio comando help mostra uma lista de t opicos dispon veis.

C alculos B asicos

es nas formas usuais, a. Para realizar c alculos b asicos no Freemat, basta inserir as operac o es realizando primeiro lembrando que par enteses alteram a preced encia nas operac o es envolvidas por eles. as operac o b. Para ganhar espac o no tutorial, optamos por indicar v arias linhas de comando com as suas respectivas respostas, sem colocar os espac os que o Freemat mostra na tela. c. Alguns c alculos com n umeros reais.
Freemat: Linhas de comando

2 * 3 + 4 / 4 - 3 ^ 2 ans = -2 2*(3+4) ans = 14 (2+3)*4 ans = 20 2.1+3.99+1.25 ans = 7.3400 1.5 * 2^2 ans = 6 (1.5 * 2)^2 ans = 9 5*(2+3)+2^(2+2) ans = 41 (5+2/3)^2 / (1+(4/2+1)) ans = 8.0278 - 3^2 + (-3)^2 ans = 0 d. Alguns c alculos com n umeros complexos, usando a unidade imagin aria i:

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 3 C Sec a alculos B asicos

Freemat: Uma introdu c~ ao - XXV Semana da Matem atica - 2009 - UEL

Freemat: Linhas de comando

i^2 ans = -1.0000 + sqrt(-1) ans = sqrt(-25) + 3.5 ans = 3.5000 + 5.0000i 0.0000 + 1.0000i 0.0000i

e. Nota: Quando n ao est a indicada a vari avel, o Freemat armazena cada resposta nova na vari avel ans (answer). es complexas com elas. f. Algumas vari aveis e operac o
Freemat: Linhas de comando

z1 = 2+6i z1 = z2 = 4+3i z2 = z1 + z2 ans = z1 / (z2-3) ans = 3 * z1 ans = z1^2 ans =-32.0000 + 24.0000i sqrt(z1) ans = z1^3 ans = -2.0800e+002 -1.4400e+002i z1^(1/3) ans = 1.6913 + real(z1) ans = 2 imag(z1) ans = 6 real(5.5) ans = 5.5000 imag(5.5) ans = 0 abs(z1) ans = 6.3246 conj(z1) ans = 2.0000 angle(z1) ans = 1.2490 g. Inserimos coment arios no Freemat, com o caracter % (porcentagem) antes do texto. 6.0000i 0.7479i 2.0402 + 1.4705i 6.0000 + 18.0000i 2.0000 + 0.0000i 6.0000 + 9.0000i 4.0000 + 3.0000i 2.0000 + 6.0000i

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 4 Trabalhando com constantes e com vari Sec a aveis

Freemat: Linhas de comando

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

% Este e um coment ario: Soma de 4 com 2: 4+2 ans = 6 h. Para limpar a tela do ambiente de trabalho, digite
Freemat: Linhas de comando

clc

Trabalhando com constantes e com vari aveis

a. O Freemat possui algumas constantes embutidas, como por exemplo: inf innito, nan (Not-a-Number), i ou j raiz quadrada de -1, pi = 3, 1416, e = 2, 7183 constante de Euler (base do logaritmo natural), eps constante da m aquina de dupla precis ao em ponto utuante, true valor l ogico verdadeiro, false valor l ogico falso.
Freemat: Linhas de comando

pi ans = 3.1416 e ans = 2.7183 eps ans = 2.2204e-016 ` m b. A constante eps (epsilon) indica a aquina uma unidade de arredondamento da or til em operac es de processos de converg dem de 10^(-16), que eu o encia iterativa. c. Vamos fazer alguns c alculos com tais constantes:
Freemat: Linhas de comando

% Coment ario: Area do circulo de raio 3.5 pi*3.5^2 ans = 38.484510006 d. Al em das constantes usuais, podemos denir novas constantes ou vari aveis. es com elas. Observe como a e. Vamos denir algumas vari aveis e realizar operac o vari avel deve ser denida:
Freemat: Linhas de comando

Base = 4.5; Altura = 10; Base * Altura ans = 45 (Base * Altura)/2 ans = 22.5 f. Nota: O sinal de ; (ponto e v rgula) no nal da express ao, faz com que o Freemat n ao mostre a resposta do c alculo.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 5 Func Sec a oes pr e-denidas no Freemat

Freemat: Uma introdu c~ ao - XXV Semana da Matem atica - 2009 - UEL

g. Podemos eliminar (=deletar=limpar) a vari avel Base criada por n os, com:
Freemat: Linhas de comando

clear Base h. O comando clear sozinho elimina todas as vari aveis que n ao s ao permanentes. i. O Freemat n ao informa que a vari avel Base foi eliminada da mem oria do computao com a vari dor, mas executando uma operac a avel Base , como:
Freemat: Linhas de comando

Base * 2 Error: unable to resolve Base to a function call o Freemat informa que a vari avel Base n ao mais est a denida. j. Dica: Para criar uma nova constante, basta denir a mesma como uma vari avel coo com ela. mum e tomar o cuidado de n ao redenir a mesma durante uma operac a
Freemat: Linhas de comando

A = 3.5; B2 = 2.25; B3 = 2; A*(B2+B3) ans = 14.8750

Func oes pr e-denidas no Freemat

es pr a. O Freemat possui muitas func o e-denidas embutidas. Podemos acessar uma lista destas func oes usando:
Freemat: Linhas de comando

=[Tecla TAB] es trigonom b. Tr es func o etricas (vari avel em radianos): sin(), cos(), tan(), etc.
Freemat: Linhas de comando

[ sin(pi), sin(pi/2), sin(pi/3), sin(pi/4) ] ans = 0.0000 1.0000 0.8660 [ cos(pi), cos(pi/2), cos(pi/3), cos(pi/4) ] ans = -1.0000 0.0000 0.5000 [ tan(pi), tan(pi/2), tan(pi/3), tan(pi/4) ] ans = 1.0e+016 * -0.0000 1.6332 0.0000

0.7071 0.7071

0.0000

o 1.0e+016 * na linha anterior indica que todas as respostas devem c. Nota: A notac a ser multiplicadas por 1.0e+016, isto e, 1 seguido de 16 zeros. es trigonom d. Tr es func o etricas (vari aveis em graus): sind(), cosd(), tand(), etc.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 5 Func Sec a oes pr e-denidas no Freemat

Freemat: Uma introdu c~ ao - XXV Semana da Matem atica - 2009 - UEL

Freemat: Linhas de comando

[ sind(180), sind(90), sind(60), sind(45) ] ans = 0.0000 1.0000 0.8660 0.7071 [ cosd(180), cosd(90), cosd(60), cosd(45) ] ans = 1.0000 0.0000 0.5000 0.7071 [ tand(180), tand(90), tand(60), tand(45) ] ans = 1.0e+016 * -0.0000 1.6332 0.0000

0.0000

es usadas para converter radianos em graus e graus em radianos. e. Func o


Freemat: Linhas de comando

[ deg2rad(30), deg2rad(60), deg2rad(90), deg2rad(180) ] ans = 0.5236 1.0472 1.5708 3.1416 [ rad2deg(1), rad2deg(pi/2), rad2deg(pi), rad2deg(2*pi) ] ans = 1.0e+002 * 0.5730 0.9000 1.8000 3.6000 es nos c f. Podemos misturar todas estas func o alculos;
Freemat: Linhas de comando

atand(sqrt(3)) ans = sin(rad2deg(pi/2)) ans = sin(deg2rad(30)) ans = sin(deg2rad(45)) ans = cos(deg2rad(90)) ans =

60.0000 1 0.50000 0.707106781 0

ngulo de 30 graus com o ch ngulo g. Exemplo: Algo e lanc ado formando um a ao. Se o a e mantido xo em toda a trajet oria, qual e a dist ancia percorrida pelo objeto quando a sua altura atinge 3km? Como seno(x) = CO/Hip, ou seja, sen(30) = 3000/x, assim o valor de x e obtido por uma regra de tr es simples e realizando uma divis ao.
Freemat: Linhas de comando

sind(30) ans = 0.5 x = 3000 / 0.5 ans = 6000 ngulo agudo tal que sin(x)=1/3, usamos a inversa da func o h. Exemplo: Se x e um a a seno para calcular x e depois obter cos(x) e tan(x).

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 6 Denindo func es Sec a o

10

Freemat: Linhas de comando

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

a = asin(1/3) a = 0.3398 cos(a) ans = 0.9428 tan(a) ans = 0.3536 es como: logaritmo, exponencial e raiz quadrada. i. Est ao dispon veis outras func o j. Podemos alterar o n umero de d gitos ap os a v rgula, com os comandos format long ou format short. Por exemplo:
Freemat: Linhas de comando

format short [ pi, 3/4 ] ans = 3.1416 format long [ pi, 3/4 ] ans = 3.14159265358979 0.75000000000000 0.7500

k. Para que o Freemat volte a operar com o formato padr ao, digite:
Freemat: Linhas de comando

format short o cient l. O Freemat tamb em pode utilizar a notac a ca.


Freemat: Linhas de comando

format short e [ 2000 + 300, 3/1000 ] ans = 2.3000e+003 3.0000e-003 format long e [ 2000 + 300, 3/1000 ] ans = 2.30000000000000e+003 3.00000000000000e-003 m. Para que o Fremat volte a operar com o formato padr ao, digite:
Freemat: Linhas de comando

format short o, voc o n. Caso n ao obtenha ajuda para alguma func a e pode denir a sua pr opria func a inserindo coment arios nas linhas iniciais do arquivo para obter ajuda on-line desta o no Freemat. nova func a

es Denindo func o

es no Freemat, sendo os mais comuns: inline e a. Existem v arias modos de denir func o anonymous.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 6 Denindo func es Sec a o

11

o f 1(x) = 2x2 3x + 7: b. Agora usamos o formato inline para denir a func a

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

f1 = inline(2.*x.^2-3.*x+7,x) f1 = inline function object f(x) = 2.*x.^2-3.*x+7 o f1 est c. O Freemat informa que a func a a denida na mem oria do computador, indicando este fato na janela history (da sess ao), junto com as vari aveis. es com esta func o: d. Agora, podemos realizar algumas operac o a
Freemat: Linhas de comando

f1(3) ans = 16 f1(2/5) ans = 0.32 0.5 .* f1(3+4) ans = 49 o f1 da mem o clear. e. Podemos eliminar a func a oria do computador com a func a
Freemat: Linhas de comando

clear f1 o f1 foi eliminada da mem f. O Freemat n ao informa que a func a oria do computador, o f1 em um valor, obtemos a seguinte resposta: mas ao testar a func a
Freemat: Linhas de comando

f1(5) Error: Undefined function or variable f1 o com o nome f2 para g. Agora usamos a forma anonymous para denir a mesma func a trabalharmos com vari aveis reais x:
Freemat: Linhas de comando

f2 = @(x) 2*x^2-3*x+7 f2 = @(x) 2*x^2-3*x+7 o aceite uma matriz como argumento, devemos tomar mais cuidado h. Para que esta func a o, inserindo alguns pontos em duas operac es excepcionais: na denic a o
Freemat: Linhas de comando

f2 = @(x) 2.*x.^2-3.*x+7 f2 = @(x) 2.*x.^2-3.*x+7

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 6 Denindo func es Sec a o

12

Freemat: Uma introdu c~ ao - XXV Semana da Matem atica - 2009 - UEL

o, como por exemplo: i. Agora podemos operar com esta func a


Freemat: Linhas de comando

f2(3) ans = 16 f2(2/5) ans = 6.12 0.5 .* f2(3+4) ans = 42 x=[1,2;3,4]; f2(x) 6 9 16 27 es inline com duas vari j. O Freemat tamb em suporta func o aveis, como:
Freemat: Linhas de comando

Area = inline(b.*h, b, h) f(b,h) = b.*h [ Area(5, 3), Area(5, 3+2) ] ans = 15 25 es an k. Func o onimas com duas vari aveis possuem a forma mais simples:
Freemat: Linhas de comando

Area = @(b,h) b*h @(b,h) b*h [ Area(5, 3), Area(5, 3+2) ] ans = 15 25 es an l. Func o onimas com tr es vari aveis possuem a forma:
Freemat: Linhas de comando

% Norma de um vetor 3D indicada por N3(a,b,c) N3 = @(a,b,c) sqrt(a^2 + b^2 + c^2) @(a,b,c) sqrt(a^2 + b^2 + c^2) [ N3(3,4,12), N3(5,7,24) ] ans = 13.0000 25.4951 o an m. Forma geral de func a onima: func = @(v,a,r,i,e) express~ ao da fun c~ ao . n. Pesquise no help do Freemat sobre a palavra hilb, digitando na linha de comando:
Freemat: Linhas de comando

help hilb Provavelmente voc e obter a a resposta


Freemat: Linhas de comando

Error: no help available on hilb nenhuma ajuda dispon vel sobre hilb

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 7 Dois pontos, Somas, Regras Trapezoidal e de Simpson Sec a

13

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

o hilb que gera uma matriz de o. Como n ao encontrei ajuda no Freemat sobre a func a Hilbert de ordem mxn, eu editei e salvei o arquivo hilb.m com o seguinte conte udo:
Fun c~ ao: hilb.m

% % % % % % % %

HILB Matriz de Hilbert de ordem mxn Retorna uma matriz de Hilbert. A sintaxe e: y = hilb(m,n) onde m e n s~ ao inteiros positivos. Fun c~ ao constru da por Ulysses Sodr e.

function z = hilb(m,n) for i = 1:m for j = 1:n z(i,j) = 1/(i+j-1); end end p. Agora, pesquise de novo no help do Freemat para ver se encontra algo sobre a palavra hilb, com a mesma linha de comando usada antes:
Freemat: Linhas de comando

help hilb `s palavras que estavam comentadas, de forma Voc e dever a ver algo semelhante a o criada no arquivo hilb.m. cont gua, no in cio da func a
Fun c~ ao: hilb.m

HILB Matriz de Hilbert de ordem mxn Retorna uma matriz de Hilbert. A sintaxe e: y = hilb(m,n) onde m e n s~ ao inteiros positivos. Fun c~ ao constru da por Ulysses Sodr e.

Dois pontos, Somas, Regras Trapezoidal e de Simpson

o com dois pontos para gerar um vetor com algum formato. a. Usamos a notac a b. Um vetor com elementos de 1 at e 10 com passo 1:
Freemat: Linhas de comando

x = [1 : 10]; ans = 1 2

9 10

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 7 Dois pontos, Somas, Regras Trapezoidal e de Simpson Sec a

14

c. Um vetor com elementos de 1 at e 10 com passo 1:

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

x = [1 : 1 : 10] ans = 1 2 3

9 10

d. Um vetor com elementos de 1 at e 10 com passo 2:


Freemat: Linhas de comando

x = [1 : 2 : 10] ans = 1 3 5 7 9 e. Um vetor com elementos de 1 at e 8 com passo 0.5:


Freemat: Linhas de comando

x = [1 : 0.5 : 8] x = Columns 1 to 5 1.0000 1.5000 Columns 6 to 10 3.5000 4.0000 Columns 11 to 15 6.0000 6.5000

2.0000 4.5000 7.0000

2.5000 5.0000 7.5000

3.0000 5.5000 8.0000

f. Para n ao mostrar todos estes valores na tela, acrescente um ponto e v rgula no nal da linha de comando:
Freemat: Linhas de comando

x = [1 : 0.5 : 10]; g. Um vetor com os quadrados dos elementos de 10 at e 1 com passo -1:
Freemat: Linhas de comando

x = [10 : -1 : 1]; y = x.^2 ans = 100 81

64

49

36

25

16

h. Um vetor com os senos dos elementos de 0 at e pi com passo pi/4:


Freemat: Linhas de comando

x = [0 : pi/4 : pi]; y = sin(x) y = 0 0.7071 1.0000

0.7071

0.0000

i. Obtemos a soma dos 100 primeiros n umeros naturais com o c odigo:


Freemat: Linhas de comando

x = 1:100; Soma = sum(x) ans = 5050

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 7 Dois pontos, Somas, Regras Trapezoidal e de Simpson Sec a

15

j. Obtemos a soma dos 100 primeiros n umeros mpares positivos com o c odigo:

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

N = 100; x = 1:2:2*N-1; Simp = sum(x) ans = 10000 k. Obtemos a soma dos 100 primeiros n umeros pares positivos com o c odigo:
Freemat: Linhas de comando

N = 100; x = 2:2:2*N; Spar = sum(x) ans = 10100 l. Obtemos a soma dos quadrados dos 100 primeiros n umeros naturais com:
Freemat: Linhas de comando

x = 1:100; Squad = sum(x.^2) ans = 338350 m. Obtemos a soma dos cubos dos 100 primeiros n umeros naturais com:
Freemat: Linhas de comando

x = 1:100; Scub = sum(x.^3) ans = 25502500 n. Obtemos a soma das ra zes c ubicas dos 100 primeiros n umeros naturais com:
Freemat: Linhas de comando

x = 1:100; Scub = sum(x.^(1/3)) ans = 3.5016e+002 o f(x)=x^2 no intervalo [0,1] o. Sabe-se que a integral denida da func a e igual a 1/3. p. Constru mos a Regra de Trapezoidal para calcular um valor aproximado da integral o f(x)=x^2 no intervalo [0,1] usando 41 subintervalos. da func a
Freemat: Linhas de comando

a = 0; b = 1; N = 41; % N pode ser um n umero natural PAR ou IMPAR h = (b-a)/N; y = inline(x.^2); x = a:h:b; f = y(x); Si = sum(f(2:N)); Soma = (h/2)*(y(a) + 2*Si + y(b)) Soma = 0.3334

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 8 Inserindo Matrizes Sec a

16

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

q. Constru mos a Regra de Simpson para calcular um valor aproximado da integral da o f(x)=x^2 no intervalo [0,1] usando N=20 subintervalos. (Este n func a umero N deve ser PAR)
Freemat: Linhas de comando

a = 0; b = 1; N = 20; % N deve ser PAR h = (b-a)/N; y = inline(x.^2); x = a:h:b; f = y(x); S1 = sum(f(2:2:N)); S2 = sum(f(3:2:N-1)); Soma = (h/3)*(y(a) + 4*S1 + 2*S2 + y(b)) Soma = 0.3333

Inserindo Matrizes

a. O Freemat trabalha basicamente com matrizes reais ou complexas retangulares, sendo que todas as vari aveis no Freemat s ao matrizes. b. Algumas vezes, matrizes 1x1 operam como escalares. Matrizes contendo apenas uma linha ou apenas uma coluna s ao interpretados como vetores. es ou por arquivos. c. Matrizes s ao inseridas no Freemat: explicitamente, por declarac o d. Podemos criar explicitamente uma matriz de ordem 3x3, associando a vari avel A a esta matriz, atrav es do c odigo:
Freemat: Linhas de comando

A = [1,2,3; A = 1 2 4 5 7 8

4,5,6; 7,8,9] 3 6 9

e. Os elementos em cada linha s ao separados por , v rgulas e as linhas s ao separadas por ; ponto e v rgula. f. Evite espac os em branco ao digitar n umeros como 2.34e-9 na forma exponencial. N ao escreva na forma 2.34 e-9. g. Podemos obter os autovalores da matriz A com:
Freemat: Linhas de comando

eig(A) ans = 16.1168 -1.1168 -0.0000

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 8 Inserindo Matrizes Sec a

17

Freemat: Uma introdu c~ ao - XXV Semana da Matem atica - 2009 - UEL

h. Podemos calcular o determinante da matriz A atrav es de:


Freemat: Linhas de comando

det(A) ans = 6.6613e-016 = 0.0000000000066613 es e func es. i. Matrizes aceitam n umeros complexos nas entradas nas suas operac o o
Freemat: Linhas de comando

A = [1,2;3,4] + i*[5,6;7,8] A = 1.0000 + 5.0000i 2.0000 + 3.0000 + 7.0000i 4.0000 +

6.0000i 8.0000i

j. Para matrizes, n ao escreva 2 + 6 * i mas digite 2+6*i, evitando os espac os vazios. k. Se as letras i ou j, normalmente utilizadas para a unidade imagin aria, j a foram usadas como ndices ou vari aveis em algumas express oes, podemos criar uma nova unidade imagin aria, como I=sqrt(-1). o hilb() (p l. Matriz de Hilbert 3x3 gerada pela func a agina 13 deste tutorial). Podemos o com: chamar esta func a
Freemat: Linhas de comando

hilb(3,3) ans = 1.0000 0.5000 0.3333

0.5000 0.3333 0.2500

0.3333 0.2500 0.2000

es no Freemat em uma u nica linha: m. Matriz us 2x4 criada por declarac o


Freemat: Linhas de comando

for i=1:2, for j=1:4, us(i,j)=i+j, end, end us = 2 3 4 5 3 4 5 6 n. O Freemat possui um editor interno de textos que pode ser acionado com as teclas de atalho Ctrl+E ou mais simplesmente, digitando na linha de comando a palavra:
Freemat: Linhas de comando

editor o. Matriz criada em um arquivo e gerada em um editor de texto puro. Abra o editor rea a ` direita: interno do Freemat e digite o c odigo na sua a
Arquivo: mat9.m

mat9 = [1 2 3 4 5 6 7 8 9] p. Salve o arquivo com o nome mat9.m e feche o editor interno do Freemat.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 8 Inserindo Matrizes Sec a

18

q. Voc e pode carregar a matriz mat9.m para a mem oria da m aquina se digitar

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

mat9 r. Para listar uma matriz com muitas entradas, e melhor usar um arquivo de texto criado no editor local, onde corrigimos erros facilmente. O arquivo deve ser um arranjo retangular (similar ao da matriz mat9) com as entradas num ericas da matriz. es embutidas: eye, rand, ones e zeros, facilitam a criac o de s. Existem algumas func o a outras matrizes. t. Matrizes ou vetores somente aceitam ndices que sejam n umeros naturais. u. Matrizes tamb em aceitam mais do que dois ndices, como um ndice triplo (i,j,k). v. Podemos criar matrizes de ordem mxnxp, como por exemplo:
Freemat: Linhas de comando

for i=1:2, for j=1:3, for k=1:3, andr(i,j,k)=i+j+k, end, end, end andr = (:,:,1) = 3 4 5 4 5 6 (:,:,2) = 4 5 6 5 6 7 (:,:,3) = 5 6 7 6 7 8 o (1,2,1) da matriz andr para que valha pi, com o w. Podemos alterar o valor da posic a c odigo
Freemat: Linhas de comando

andr(1,2,1)=pi andr = (:,:,1) = 3.0000 4.0000 (:,:,2) = 4.0000 5.0000 (:,:,3) = 5.0000 6.0000

3.1416 5.0000 5.0000 6.0000 6.0000 7.0000

5.0000 6.0000 6.0000 7.0000 7.0000 8.0000

x. Uma entrada de uma matriz ou vetor pode ser indicada com ndices dentro de par enteses. O comando A(2,3) indica a entrada da linha 2 e coluna 3 da matriz A e x(3) indica a terceira coordenada do vetor x.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 9 Operac es com Matrizes e Arranjos Sec a o

19

es com Matrizes e Arranjos Operac o

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

es usuais com matrizes s o), * (multiplicac o), a. As operac o ao as seguintes: + (soma), - (subtrac a a ^ (pot encia), \ (divis ao pela esquerda), / (divis ao pela direita) e (transposta conjugada). o C, a divis b. Na Linguagem de programac a ao entre dois n umeros inteiros, como por o funciona normalmente, isto exemplo, 7/4=1. No Freemat, a operac a e,
Freemat: Linhas de comando

7/4 ans = 1.7500 c. Divis ao de argumentos complexos:


Freemat: Linhas de comando

a = 3 + 4*i; b = 5 + 8*i; c = a/b c = 0.5281 - 0.0449i d. N umero complexo dividido por um tipo duplo e o resultado promovido a dcomplex.
Freemat: Linhas de comando

b = a/2.0 b = 1.5000 + 2.0000i e. Divis ao pela direita (sem ponto) de uma matriz a por uma matriz b signica o produto da matriz a pela inversa da matriz b, isto e,
Freemat: Linhas de comando

a = [1,2;3,4]; b = [2,3;6,7]; c = a/b c = 1.2500 -0.2500 0.7500 0.2500 f. Divis ao pela direita (com ponto) de uma matriz a por uma matriz b signica a divis ao da matriz a pela matriz b, elemento-a-elemento:
Freemat: Linhas de comando

a = [1,2;3,4]; b = c = a./b c = 0.5000 0.6667 0.5000 0.5714

[2,3;6,7];

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 9 Operac es com Matrizes e Arranjos Sec a o

20

g. Divis ao pela direita elemento-a-elemento de matriz por escalar:

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

c = a/3 c = 0.3333 1.0000

0.6667 1.3333

h. Divis ao pela direita elemento-a-elemento de escalar por matriz:


Freemat: Linhas de comando

c = 3/a c = 3.0000 1.0000

1.5000 0.7500

i. Operador produto elemento-a-elemento de duas matrizes:


Freemat: Linhas de comando

a = [1,2;3,4]; b = [2,3;6,7]; c = a .* b c = 2 6 18 28 j. Operador produto elemento-a-elemento de escalar por matriz:


Freemat: Linhas de comando

c = 3*a c = 3 6 9 12 k. Operador produto elemento-a-elemento de matriz por escalar:


Freemat: Linhas de comando

c = a*3 c = 3 6 9 12 l. C alculo da transposta conjugada de uma matriz real


Freemat: Linhas de comando

A = [1,2; 0,4; 1,-1]; A ans = 1 0 1 2 4 -1

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 9 Operac es com Matrizes e Arranjos Sec a o

21

m. C alculo da transposta conjugada de uma matriz complexa

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

A = [1+i,2-i]; A ans = 1.0000 - 1.0000 i 2.0000 + 1.0000 i o) de uma matriz complexa n. C alculo da transposta (sem a conjugac a
Freemat: Linhas de comando

A = [1+i,2-i]; A. ans = 1.0000 + 1.0000 i 2.0000 - 1.0000 i o. Uso do operador de divis ao para resolver o sistema AY=B.
Freemat: Linhas de comando

A = [1,1;0,1]; Y = A \ B Y = 1 2

B = [3;2];

es matriciais tamb p. Estas operac o em funcionam para matrizes escalares 1x1. o matricial n q. Se a operac a ao e compat vel, o Freemat envia uma mensagem de erro es com matrizes escalares (soma, subtrac o, para o console, exceto no caso de operac o a o) pois cada entrada da matriz opera como se fosse um escalar. divis ao e multiplicac a r. A divis ao de matrizes deve ser tratada de modo especial. Se A e uma matriz quadrada invers vel e b e uma matriz-coluna ou matriz-linha compat vel, ent ao, x=A\b e a o de A*x=b e x=b/A o de x*A=b. soluc a e a soluc a s. Na divis ao pela esquerda, se a matriz A e quadrada, ela e fatorada pelo M etodo de o de Gauss e estes fatores s Eliminac a ao usados para resolver A*x=b. o de t. Se a matriz A n ao e quadrada, ela e fatorada pelo M etodo de ortogonalizac a Householder com pivot em colunas e os fatores s ao usados para resolver o sistema subdeterminado e sobredeterminado no sentido dos m nimos quadrados. u. A divis ao pela direita e obtida com a divis ao pela esquerda por b/A=(A\ b). es: *, ^, \ e /, tamb v. As operac o em podem operar elemento-a-elemento se colocarmos til um ponto . antes delas, cando da forma .*, .^, .\ e ./. O operador . ponto eu o de gr na construc a acos. w. O mesmo c odigo ponto-a-ponto, agora com exponencial:
Freemat: Linhas de comando

[1,2,3,4] .^ 2 ans = [1,4,9,16]

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 10 Construindo gr es Sec a acos de func o

22

10

es Construindo gr acos de func o


Freemat: Linhas de comando

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

o tal=tal(x) a. Primeiramente, vamos denir uma func a tal = @(x) x.*sin(x) o anonymous tal(x)=x.sin(x) sobre o intervalo [1,16] b. Agora plotamos esta func a em cor vermelha, (r=red) com o comando plot
Freemat: Linhas de comando

x=1:0.01:16; plot(tal(x),r-) o tal(x)=x*sin(x): c. Dever a aparecer uma janela gr aca com o gr aco da func a d. Podemos anexar uma grade e o t tulo Fun c~ ao Tal ao gr aco:
Freemat: Linhas de comando

x=1:0.01:16; plot(tal(x),r-), grid, title(Fun c~ ao Tal) o f=f(x), podemos obter uma outra e. Nota: Se conhecemos o gr aco de uma func a o g(x)=A.f(B(x-C))+D, sendo que as vari func a aveis A, B, C e D representam: A C o/Reduc o vertical Ampliac a a Deslocamento horizontal B D o/Reduc o horizontal Ampliac a a Deslocamento vertical

f. Exerc cio: Comparar os gr acos de f1(x)=sin(x) e f2(x)=5.sin(3(x-pi/2))+2.

11

Estat stica com o Freemat

es estat a. O Freemat possui algumas func o sticas pr e-denidas: m edia, m aximo, m nimo, soma, produto, vari ancia, desvio padr ao e soma acumulada (cumsum). es estat b. As func o sticas que n ao existem no Freemat, podem ser criadas atrav es de arquivos .m. c. Problema: Nos meses de um certo ano, um setor registrou certos fatos de acordo com a tabela num erica de ocorr encias: J 4 F 3 M 5 A 5 M 10 J 8 J 9 A 6 S 3 O 4 N 8 D 7

d. Vamos inserir os dados do problema em uma matriz:


Freemat: Linhas de comando

x=[4,3,5,5,10,8,9,6,3,4,8,7] x = 4 3 5 5 10

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 11 Estat Sec a stica com o Freemat

23

e. Agora, vamos realizar alguns c alculos com os dados do problema:

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

mean(x) ans = 6 sum(x) ans = 72 std(x) ans = 2.3741 var(x) ans = 5.6364 cumsum(x) ans = 4 7 12 17 27 35 44 50 53 57 65 72

f. A soma acumulada de um arranjo num erico n-dimensional x na dimens ao d e gerada o y=cumsum(x,d) e a sa com a func a da y e do mesmo tipo que o arranjo x. Neste caso, tipos inteiros s ao promovidos a tipos int32. Se a dimens ao d n ao est a indicada, a ` primeira dimens soma e aplicada apenas a ao n ao-singular. g. Exerc cio: Testando um sistema de freio, uma ind ustria constatou que 21 motoristas, com velocidade de 120 Km por hora, conseguiram parar dentro das seguintes dist ancias de frenagem (em metros) 58, 70, 80, 46, 61, 65, 75, 55, 67, 56, 70, 72, 75, 61, 66, 58, 68, 70. Obter a m edia, soma, m nimo, m aximo, desvio padr ao e vari ancia. h. O Freemat tamb em opera com algumas estat sticas relacionadas a pares ordenados. i. Primeiro, vamos inserir os pares (x,y) sendo que x e y s ao vetores-linha, com:
Freemat: Linhas de comando

x = [2, 4, 7, 9,12,13,14]; y = [7,12,17,23,30,35,40]; j. Obtemos as m edias aritm eticas de x e de y, com:


Freemat: Linhas de comando

xm = mean(x) xm = 8.7143 ym = mean(y) ym = 23.4286 n = numel(x) ans = 7 Sx = sum(x) ans = 61 Sy = sum(y) ans = 164 Sxx = sum(x.*x) - n*xm*xm ans = 1.2743e+002 Sxy = sum(x.*y) - n*xm*ym ans = 3.3386e+002

% M edia aritm etica dos x % M edia aritm etica dos y % N umero de elementos de x % Soma dos elementoss de x % Soma dos elementos de y % Soma ajustada de produtos xx % Soma ajustada de produtos xy

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 11 Estat Sec a stica com o Freemat

24

Freemat: Linhas de comando

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Syy = sum(y.*y) - n*ym*ym ans = 8.9371e+002 C = Sxy/n ans = 47.6939 r = Sxy/sqrt(Sxx*Syy) r = 0.9893 a = Sxy/Sxx ans = 2.6200 b = ym-a*xm ans = 0.5975

% Soma ajustada de produtos yy % A covari^ ancia do conjunto % Ceficiente de correla c~ ao % coeficiente angular da reta de ajuste % coeficiente linear da reta de ajuste

k. Agora vamos plotar apenas os pares ordenados (x,y), com:


Freemat: Linhas de comando

plot(x,y,ro) l. Constru mos os coecientes da reta:


Freemat: Linhas de comando

p = [a, b] p = 2.6200

0.5975

o f que representa a reta de melhor ajuste, m. Agora criamos as ordenadas da func a correspondentes aos valores de x dados inicialmente:
Freemat: Linhas de comando

f = polyval(p,x) ans = 5.8374 11.0774

18.9372

24.1771

32.0370

34.6570

37.276

n. Plotamos os pontos (x,y) e a reta de melhor ajuste, com:


Freemat: Linhas de comando

plot(x,f,r-, x,y,bs,linewidth,2) o dos pontos por segr- indica os pontos da reta (x,f) plotados em red com ligac a mentos, bs indica os pontos (x,y) plotados em blue com square e linewidth,2 indica as linhas trac adas com espessura 2 (O normal e 1). o. Os coecientes da reta de melhor ajuste, podem ser obtidos no Freemat com:
Freemat: Linhas de comando

p = polyfit(x,y,1) p = 2.6200 0.5975 p. As ordenadas da reta f de melhor ajuste, correspondentes aos valores de x dados inicialmente s ao obtidos por
Freemat: Linhas de comando

f = polyval(p,x); q. A plotagem dos pontos (x,y) e da reta de melhor ajuste, e obtida com:
Freemat: Linhas de comando

plot(x,f,r-, x,y,bs,linewidth,2)

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 12 Usando condic es l Sec a o ogicas

25

12

es l Usando condic o ogicas


Freemat: Linhas de comando

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

a. Criando algumas vari aveis para testes l ogicos. a = 3.5; b = 8.0; c = 5.7; es l b. Testando condic o ogicas sobre as vari aveis.
Freemat: Linhas de comando

(a < b) ans = 1 (a == b) ans = 0 (b >= a) & (b >= c) ans = 1 (c >= b) & (c >= a) ans = 0 (c >= b) | (c >= a) ans = 1

13

es, Express Declarac o oes e Vari aveis

a. Freemat e um programa que opera com express~ oes e elas s ao interpretadas e calcuo ladas. Uma declarac a e usualmente escrita na forma
Freemat: Linhas de comando

variavel = expressao b. Outra forma de denir uma express ao e simplesmente escrever:


Freemat: Linhas de comando

expressao es e nomes de vari c. Em geral, express oes s ao compostas de operadores, func o aveis. d. O c alculo de uma express ao gera uma matriz, que e mostrada na tela e associada a uma vari avel para uso posterior. e. Se o nome da vari avel e o sinal de igualdade = s ao omitidos, ser a criada automaticamente uma vari avel ans (answer=resposta) para o correspondente resultado. o f. Normalmente, uma declarac a e encerrada por um [ENTER]. o pode ser continuada na pr g. Uma declarac a oxima linha com o acr escimo de tr es pontos ... ou mais pontos seguidos por um [ENTER]. es podem ser postas em uma u nica linha separada por v h. V arias declarac o rgulas ou ponto-e-v rgulas.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 14 Salvando uma sess Sec a ao

26

Freemat: Uma introdu c~ ao - XXV Semana da Matem atica - 2009 - UEL

ltimo caracter de uma declarac o i. Se o u a e um ; ponto-e-v rgula, a sa da n ao mostra o o resultado, mas a associac a e realizada. Este fato e essencial para n ao mostrar sa das que voc e n ao deseja ou resultados intermedi arios. es e vari j. Freemat e sens vel ao contexto com nomes de comandos, func o aveis. Por exemplo, a palavra Comando e diferente da palavra comando. k. O comando who (ou whos) lista as vari aveis dispon veis no workspace. l. Um processo ou c alculo pode ser interrompido em muitas m aquinas sem fechar o Freemat, usando as teclas de atalho CTRL+C (ou CTRL+BREAK em um PC).

14

Salvando uma sess ao

Ao encerrar o Freemat, todas as vari aveis s ao perdidas, mas usando o comando save antes de sair, voc e salvar a todas as vari aveis em um arquivo. Ao reentrar no Freemat, o comando load ir a reestabelecer o workspace ao estado anterior.

15

es para construir Matrizes Func o

es embutidas que servem para construir matrizes. a. Existem algumas func o b. O comando eye gera uma matriz identidade. Por exemplo:
Freemat: Linhas de comando

Id = eye(3) >>> Id = 1 0 0 0 1 0 0 0 1 c. O comando zeros gera uma matriz de zeros. Por exemplo, zeros(m,n) produz uma matriz mxn de zeros e zeros(n) produz uma matriz nxn.
Freemat: Linhas de comando

Z23 = zeros(2,3) >>> 0 0 0 0 0 0 Z22 = zeros(2,2) >>> 0 0 0 0 Z3 = zeros(3) >>> 0 0 0 0 0 0 0 0 0

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 15 Func es para construir Matrizes Sec a o

27

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

d. Se A e uma matriz, ent ao zeros(size(A)) produz uma matriz de zeros com a mesma dimens ao de A.
Freemat: Linhas de comando

A=[1,2,3; 3,4,5; 7,8,9] >>> A = 1 2 3 4 5 6 7 8 9 Z = zeros(size(A)) >>> Z = 0 0 0 0 0 0 0 0 0 e. O comando ones gera uma matriz em que as entradas s ao todas iguais a 1.
Freemat: Linhas de comando

O23 = ones(2,3) >>> 1 1 1 1 1 1 O22 = ones(2,2) >>> 1 1 1 1 O3 = ones(3) >>> 1 1 1 1 1 1 1 1 1 f. Se A e uma matriz quadrada, diag(A) e um vetor com a diagonal principal de A.
Freemat: Linhas de comando

D = diag(A) >>> D = 1 5 9 g. Se x e um vetor, diag(x) e a matriz diagonal com x na diagonal principal.


Freemat: Linhas de comando

x=[1,5,9] >>> x = 1 5 9 DD=diag(x) >>> DD = 1 0 0 0 5 0 0 0 9 h. O que e diag(diag(A))?

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 16 Lac es relacionais Sec a os For, while, if e Operac o

28

i. O comando rand gera uma matriz aleat oria. Por exemplo:

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

R23 = rand(2,3) >>> 0.3759 0.9134 0.0183 0.3580 R22 = rand(2,2) >>> 0.0990 0.3478 0.4972 0.0276 R3 = rand(3) >>> 0.5313 0.4921 0.9958 0.7597 0.2079 0.3365

0.7604 0.8077

0.8670 0.2714 0.2174

j. Matrizes podem ser constru das com blocos (como uma casa). Por exemplo, se A e uma matriz 3x3, ent ao
Freemat: Linhas de comando

B = [A, zeros(3,2); zeros(2,3), eye(2)] >>> B = 1 2 3 0 0 4 5 6 0 0 7 8 9 0 0 0 0 0 1 0 0 0 0 0 1 e uma matriz 5x5, sendo que B(1,1)=A, B(1,2)=zeros(3,2), B(2,1)=zeros(2,3) e B(2,2)=eye(2).

16

es relacionais Lac os For, while, if e Operac o

es atrav es, da mesma a. Em geral, lac os controlam o uxo de operac o es de declarac o o. Uma matriz vazia forma que em outras linguagens de programac a e escrita como x=[]. o (em uma linha) b. Lac o For: Podemos gerar um vetor 3-dimensional com a declarac a
Freemat: Linhas de comando

x = >>> >>> >>>

[]; x = x = x =

for i = 1:3, x=[x,i^2], end 1 1 4 1 4 9

c. O mesmo vetor 3-dimensional pode ser gerado, em v arias linhas, com:


Freemat: Linhas de comando

x = []; for i = 1:3 x = [x,i^2] end

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 16 Lac es relacionais Sec a os For, while, if e Operac o

29

o: d. O mesmo vetor obtido antes, agora na ordem invertida, e gerado pela declarac a

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

x = []; for i = 3:-1:1, x=[x,i^2], end es: e. Podemos construir uma matriz de Hilbert 3x2 com as declarac o
Freemat: Linhas de comando

for i = 1:3 for j = 1:2 H(i,j) = 1/(i+j-1); end end H % Solicita que a matriz seja posta na tela >>> ans = 1.0000 0.5000 0.5000 0.3333 0.3333 0.2500 f. O ponto e v rgula informa ao Freemat para n ao mostrar os resultados intermedi arios. o for permite que qualquer matriz seja usada no lugar de 1:n. A vari g. A declarac a avel assume exatamente, de modo consecutivo o valor de cada coluna da matriz. h. Para calcular a soma de todas as entradas da matriz A, digitamos:
Freemat: Linhas de comando

sum(sum(A)) >>> 45 i. Lac o While: A forma geral de um lac o while e


Freemat: Linhas de comando

while relacao declaracoes end Neste caso, a linha declaracoes e executada repetidamente at e que relacao seja verdadeira. j. Por exemplo, para um n umero dado 1000, o lac o abaixo ir a calcular e mostrar o menor inteiro n ao-negativo n tal que 2n 1000:
Freemat: Linhas de comando

n = 0; while 2^n < 1000 n = n + 1; end n >>> ans = 10

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 16 Lac es relacionais Sec a os For, while, if e Operac o

30

Freemat: Uma introdu c~ ao - XXV Semana da Matem atica - 2009 - UEL

k. Condicional If: Se relacao e verdadeira, a linha declaracoes e executada. A forma o if mais simples de uma declarac a e
Freemat: Linhas de comando

if relacao declaracoes end l. V arios ramos tamb em s ao poss veis, como est a ilustrado abaixo:
Freemat: Linhas de comando

if n < 0 paridade = 0; elseif rem(n,2) == 0 paridade = 2; else paridade = 1; end

% rem resto da divis~ ao de n por 2.

es com apenas dois ramos, a parte elseif deve ser omitida. m. Em declarac o n. Operadores relacionais: Os operadores relacionais do Freemat s ao: < (menor que), > (maior que), <= (menor ou igual), >= (maior ou igual), == (igual) e ~= (n ao igual). o. Nota: O sinal simples de igualdade = serve para associar um valor, mas o sinal duplo de igualdade == e usado como um operador relacional. es l p. Relac o ogicas podem ser conectadas ou quanticadas com os seguintes operadores l ogicos: & (e), | (ou) e ~ (n ao). o q. Quando usadas em escalares, uma relac a e realmente o escalar 1 ou 0 se, respectivao mente, a relac a e verdadeira ou falsa. Alguns exemplos de sa das verdadeiras (1) ou falsas (0):
Freemat: Linhas de comando

3 < 5 >>> ans 3 > 5 >>> ans 3 == 5 >>> ans 3 ~= 3 >>> ans

= 1 = 0 = 0 = 0

o r. Quando usadas em matrizes de mesma dimens ao, uma relac a e uma matriz de o entre as entradas correspondentes. zerosd e uns dando o valor da relac a
Freemat: Linhas de comando

a = rand(3) a = 0.6565 0.3236 0.5196

0.1273 0.9954 0.5407

0.0840 0.4618 0.9132

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 16 Lac es relacionais Sec a os For, while, if e Operac o

31

Freemat: Linhas de comando

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

b = eye(3) b = 1 0 0 0 1 0 0 0 1
Freemat: Linhas de comando

a == b ans = 0 0 0 0 0 0 0 0 0 o matris. Os lac os while e if interpretam como verdadeira se cada entrada da relac a cial e n~ ao-nula. Para executar uma declaracao em que A e B s ao iguais, digite:
Freemat: Linhas de comando

if end

A == B declaracao

t. Para executar uma declaracao quando A e B n ao s ao iguais. Digite com dois any pois este operador e vetorial.
Freemat: Linhas de comando

if end

any(any(A ~= B)) declaracao

es any e all reduzem as relac es matriciais entre vetores ou escalares. u. As func o o v. Outra forma mais simples para o c odigo anterior:
Freemat: Linhas de comando

if end

A == B else declaracao

bvio w. O que parece o


Freemat: Linhas de comando

if

A ~= B, declaracao, end

n ao fornece o desejado pois declaracao deve ser executada apenas se cada uma das entradas de A e B s ao diferentes.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 17 Func es escalares, vetoriais e matriciais Sec a o

32

17

es escalares, vetoriais e matriciais Func o

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

es: escalares, vetoriais e matriciais. a. Existem tr es tipos comuns de func o es escalares: Func es que operam sobre escalares, mas operam elemento-ab. Func o o elemento se aplicadas a matrizes. As mais comuns s ao: abs, acos, asin, atan, cos, ceil, exp, floor, log (natural), rem (resto), round, sign, sin, sqrt e tan. es Vetoriais: Func es que operam essencialmente sobre vetores (linha ou colc. Func o o una), mas atuam sobre uma matriz mxn (m 2) coluna-a-coluna para produzir um o a cada coluna. A ac o linhavetor-linha contendo os resultados da sua aplicac a a a-linha pode ser obtida pelo uso da transposta, como por exemplo mean(A). As es vetoriais mais comuns: all, any, max, mean, min, prod, sort, std e sum. func o d. A entrada de maior valor da matriz A e dada por max(max(A)) ou por max(A). es Matriciais: Coisas interessantes acontecem no Freemat com o uso de suas e. Func o es matriciais. As func es matriciais mais u teis s func o o ao: o de Cholesky (a) chol Fatorac a (b) cond N umero condicional (norma2) (c) det Determinante (d) eig Autovalores e autovetores (e) expm Matriz exponencial (f) inv Inversa o LU (g) lu Fatorac a (h) hess Forma de Hessenberg (i) norm normas: 1, 2, F, innito (j) poly Polin omio caracter stico o QR (k) qr Fatorac a (l) rank Posto (m) rref Forma escada linhas-reduzida o de Schur (n) schur Decomposic a (o) size Dimens ao (p) sqrtm Matriz raiz quadrada o valor singular (q) svd Decomposic a

es podem ter argumentos simples ou m f. Tais func o ultiplos na sa da. Por exemplo, para obter um vetor coluna com os autovalores da matriz A, digite:
Freemat: Linhas de comando

A=[1,2,3; ... [ENTER] 4,5,6; ... [ENTER] 7,8,1]; [ENTER] y=eig(A) y = 12.4542 -0.3798 -5.0744

% Podemos usar apenas eig(A)

g. Tamb em podemos usar o c odigo eig(A) para obter o mesmo resultado mostrado antes. h. Para gerar uma matriz U com os autovetores da matriz A nas colunas e uma matriz diagonal D com os autovalores da matriz A na diagonal principal.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 18 Editando e Rechamando uma linha de comando Sec a

33

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

i. Usamos o c odigo para obter a matriz de autovetores e a matriz diagonal com os autovalores.
Freemat: Linhas de comando

[U,D] = eig(A) >>> U = -0.2937 -0.6901 -0.6615 D = 12.4542 0 0

-0.7397 0.6650 -0.1031 0 -0.3798 0

-0.2972 -0.3987 0.8676 0 0 -5.0744

18

Editando e Rechamando uma linha de comando

a. A linha de comando pode ser editada facilmente. O cursor pode ser posto com as setas para a esquerda e para a direita e as teclas Backspace (ou Delete) usadas para apagar ` esquerda do cursor. Outros feitos de edic o tamb o caracter a a em est ao dispon veis. No PC, tente usar as teclas Home, End e Delete. b. Um feito conveniente e usar as setas up/down para rolar a pilha dos comandos executados anteriormente. Ao obter o comando, podemos chamar o mesmo, editar e executar a linha de comando revisada. c. Para pequenas rotinas, e sempre mais conveniente rolar a pilha do que usar um aro entre o programa e o editor. quivo .m que exige alguma ac a es y=sin(mx) e y=sin(nx) sobre o intervalo [0,2pi] d. Para comparar gr acos das func o para v arios par ametros m e n, podemos digitar a seguinte linha de comando:
Freemat: Linhas de comando

m=2; n=3; x=0:.01:2*pi; y=sin(m*x); z=cos(n*x); plot(x,y,x,z)

19

o dois pontos Submatrizes e a notac a

a. Vetores e submatrizes s ao muito usados para manipular dados complexos. o : (tamb b. A notac a em usada para gerar vetores e refer encias a submatrizes) indexa o de tais objetos. vetores de inteiros como chaves realizando bem a manipulac a o serve para vetorizar operac es, permite reduzir c. O uso criativo deste tipo de indexac a o o lenta), simplicar o c o uso de la cos (operac a odigo e car mais f acil de ler. bom se esforc o! d. Nota: E ar para car familiarizado com este tipo de indexac a

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 19 Submatrizes e a notac o dois pontos Sec a a

34

Freemat: Uma introdu c~ ao - XXV Semana da Matem atica - 2009 - UEL

e. A express ao 1:5 (j a usada antes) e na verdade um vetor-linha. Realmente


Freemat: Linhas de comando

1:5 >>> 1 2 3 4 5 f. Os n umeros n ao precisam ser inteiros nem o incremento precisa ser 1.
Freemat: Linhas de comando

0.2 >>> 5 : >>>

: 0.2 : 1.2 0.2 0.4 0.6 0.8 1.0 1.2 -1 : 1 5 4 3 2 1

es, iremos gerar uma tabela de senos: g. Por exemplo, com as seguintes declarac o
Freemat: Linhas de comando

x = [0.0 : 0.1 : 2.0]; y = sin(x); [x y] o sin opera ponto-a-ponto, usando o vetor x para gerar um vetor y. h. Nota: A func a o : pode ser usada para acessar sub-matrizes de uma matriz. i. A notac a j. Geramos um vetor-coluna com as 4 primeiras entradas da coluna 3 da matriz A, com:
Freemat: Linhas de comando

A=[1,2,3; 4,5,6; 7,8,9; 10,11,12]; A(1:4,3) >>> 3 6 9 12 k. Um sinal : sozinho indica uma linha inteira ou coluna inteira. O c odigo
Freemat: Linhas de comando

A(:,3) gera a coluna 3 da matriz A, isto e, o mesmo resultado que o item anterior. l. Para gerar as linhas 1,2,3,4 da matriz A, digite o c odigo:
Freemat: Linhas de comando

A(1:4,:) >>> A = 1 2 3 4 5 6 7 8 9 10 11 12 m. Em geral, vetores de inteiros cam como ndices. Geramos as colunas 2 e 4 de A, com:

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 20 Arquivos no Freemat Sec a

35

Freemat: Linhas de comando

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

A(:,[2 3]) >>> 2 3 5 6 8 9 11 12 o de associac o. n. Tais ndices podem ser usados de ambos os lados de uma declarac a a o. Para trocar trocar as colunas 2,4,5 da matriz A pelas colunas 1,2,3 da matriz B, digite:
Freemat: Linhas de comando

A=[1,2,3,4,5; 6,7,8,9,10; 11,12,13,14,15; 16,17,18,19,20; 1,2,3,4,5] B=[1,1,1,1,1; 2,2,2,2,2; 3,3,3,3,3; 4,4,4,4,4; 5,5,5,5,5] A(:,[2 4 5]) = B(:,1:3) A = 1 1 11 2 3 2 1 12 2 3 3 1 13 2 3 4 1 14 2 3 5 1 15 2 3 Neste caso, toda a matriz A que foi alterada e mostrada e associada com a letra A. p. As colunas 2 e 4 da matriz A s ao multiplicadas pela direita pela matriz [1,2;3,4]:
Freemat: Linhas de comando

A=[1,2,3,4,5; 6,7,8,9,10; 11,12,13,14,15; 16,17,18,19,20; 1,2,3,4,5] A(:,[2,4]) = A(:,[2,4])*[1 2;3 4] >>> A = 1 14 3 20 5 6 34 8 50 10 11 54 13 80 15 16 74 18 110 20 1 14 3 20 5 ` pr De novo, toda a matriz alterada e mostrada e associada a opria letra A. o x=x(7:-1:1)? q. Se x=[1,2,3,4,5,6,7], o que signica a declarac a

20

Arquivos no Freemat

a. Os tipos de arquivos funcionais do Freemat, s ao arquivos: com a extens ao .m, de script es. e de func o es arb. Arquivo com a extens ao m: Permite executar uma sequ encia de declarac o mazenadas em arquivos com a extens ao .m. No Freemat usamos muito os arquivos .m, que s ao de dois tipos: script e func o ao criados no editor local de es. Tais arquivos s textos.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 20 Arquivos no Freemat Sec a

36

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

es normais. Se o arquivo possui c. Arquivo de Script: Cont em sequ encias de declarac o es no arquivo a o nome rotate.m, ent ao o comando rotate ir a chamar as declarac o ser executado. As vari aveis no arquivo de script s ao globais e mudam os valores das vari aveis hom onimas no ambiente da sess ao atual do Freemat. d. Um arquivo de Script serve para inserir dados em uma matriz, para que os erros sejam corrigidos facilmente. Por exemplo, se o arquivo data.m possui a entrada:
Freemat: Linhas de comando

A = [1 2 3 4 5 6 7 8]; o data ir o ent ao a declarac a a associar esta matriz a data.m para realizar a operac a mais f o load para carregar este arquivo. desejada. E acil usar a func a e. Um arquivo .m pode fazer refer encia a outros arquivos .m, inclusive se referir ao pr oprio arquivo de modo recursivo. o: Permite expandir o Freemat. Podemos criar novas func es para f. Arquivo de Func a o es j os nossos problemas que ter ao o mesmo status que as outras func o a embutidas no o s Freemat. Vari aveis em um arquivo de func a ao locais por default, mas uma vari avel pode ser declarada como global (ver help global). o. g. Vamos ilustrar com um exemplo simples de um arquivo de func a
Freemat: Linhas de comando

function a = randint(m,n) % RANDINT Matriz de inteiros gerada randomicamente. % randint(m,n) retorna matriz mxn com entradas em [0,9]. a = floor(10*rand(m,n)); o est h. Uma vers ao mais geral desta func a a abaixo:
Freemat: Linhas de comando

function a = randint(m,n,a,b) % RANDINT Matriz de inteiros gerada randomicamente. % randint(m,n) retorna matriz mxn com entradas em [0,9]. % rand(m,n,a,b) retorna entradas inteiras em [a,b]. if nargin < 3, a = 0; b = 9; end a = floor((b-a+1)*rand(m,n)) + a; i. Insira o conte udo acima em um arquivo com o nome randint.m (o mesmo nome da o). A primeira linha declara o nome da func o, argumentos de entrada e de func a a sa da. Sem esta linha, o arquivo deve ser um arquivo de script. o z=randint(4,5), faz com que os n `s j. A declarac a umeros 4 e 5 sejam passados a o e o resultado de sa ` vari vari aveis m e n no arquivo da func a da passado a avel z. o, seus nomes independem dos k. Como s ao locais as vari aveis em um arquivo de func a nomes do ambiente atual do Freemat.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 20 Arquivos no Freemat Sec a

37

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

l. O uso do comando nargin (n umero de argumentos de entrada) permite congurar o valor padr ao omitido de uma vari avel de entrada, como a e b no exemplo acima. o tamb m. Uma func a em pode ter v arios argumentos de sa da. Por exemplo,
Freemat: Linhas de comando

function [mean, stdev] = stat(x) % STAT M edia e desvio padr~ ao % Para um vetor x, stat(x) retorna a mdia de x; % [mean, stdev] = stat(x) retorna ambos, m edia e desvio padr~ ao. % Para uma matriz x, stat(x) atua coluna-a-coluna. [m n] = size(x); if m == 1 m = n; % trata o caso de um vetor-linha end mean = sum(x)/m; stdev = sqrt(sum(x.^2)/m - mean.^2); n. Se o conte udo acima for posto no arquivo stat.m, o comando [xm,xd]=stat(x), associar a a m edia xm e o desvio padr ao xd das entradas de x, respectivamente. es simples tamb o tendo v o. Associac o em podem ser realizadas com uma func a arios argumentos de sa da. Por exemplo, xm=stat(x) (n ao precisa colocar colchetes em volta de xm) ir a associa a m edia de x a xm. p. O s mbolo % indica que o resto da linha e um coment ario. As primeiras linhas comentadas cont guas, documentam o arquivo .m, cando dispon veis no help on-line o deve e ser ao mostradas se, por exemplo, digitarmos help stat. Tal documentac a o. Esta func o ilustra alguns dos feitos sempre ser inclu da em um arquivo de func a a que podem ser usados para produzir bons c odigos. o q. Observe que x.^2 e a matriz dos quadrados das entradas de x, que sum e uma func a o escalar e que a divis o vetorial, que sqrt e uma func a ao em sum(x)/m e uma operac a es s de divis ao de uma matriz por um escalar, assim, todas as operac o ao vetorizadas e os lac os devem ser evitados. r. Se n ao podemos vetorizar alguns c alculos, podemos fazer com que os lac os for sejam mais r apido pr e-alocando vetores ou matrizes para que a sa da seja guardada. o abaixo com a func o zeros, reservamos espac s. Ao incluir a segunda declarac a a o para guardar E na mem oria. Sem isto, o Freemat deve ir a redimensionar E com mais uma o, tornando mais lenta a execuc o. coluna em cada iterac a a
Freemat: Linhas de comando

M = ones(6); E = zeros(6,50); for j = 1:50 E(:,j) = eig(M^j); end

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 21 Strings de texto, Mensagens de erro, Entrada Sec a

38

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

es seguintes. Como obsert. Alguns feitos mais avanc ados est ao ilustrados pelas func o o, tal como tol neste vamos antes, alguns dos argumentos de entrada de uma func a exemplo, pode ser opcionais com o uso de nargin (n umero de argumentos de entrada). A vari avel nargout pode ser usada da mesma forma. o u. O fato que uma relac a e um n umero (1 se verdadeiro; 0 se e falso) e usado e quando o, nonzero signica true e 0 signica false. while ou if avalia uma relac a es s v. Algumas destas func o ao embutidas e outras s ao distribu das em arquivos .m.

21

Strings de texto, Mensagens de erro, Entrada


Freemat: Linhas de comando

a. Strings de texto s ao inseridas em Fremat envolvidas por aspas simples. Por exemplo, s = Este e um teste. ` vari associa o texto dado a avel s. o disp. Por exemplo: b. Strings de texto podem ser mostradas com a func a
Freemat: Linhas de comando

disp(esta mensagem est a sendo exibida) o error. c. Mensagens de erro s ao mostradas de melhor maneira com a func a
Freemat: Linhas de comando

error(Desculpe, a matriz deve ser sim etrica.) o do arquivo .m. pois quando postas em um arquivo .m, elas abortam a execuc a d. Em um arquivo .m o usu ario pode ser solicitado a inserir dados interativamente com o input. Por exemplo, quando a declarac o a func a a
Freemat: Linhas de comando

iter = input(Entre com o n umero de itera c~ oes:

o interrompe enquanto e encontrada, a mensagem de prompt e mostrada e a execuc a o usu ario realiza a entrada de dados. Ap os pressionar a tecla [ENTER], o dado e ` vari o continua, at associado a avel iter e a execuc a e ...

22

Gerenciando arquivos .m

a. Usando o Freemat, comumente desejamos criar ou editar um arquivo .m com o editor local e ent ao retornar ao Freemat, mas queremos manter o programa ativo ao mesmo tempo que editamos o arquivo pois encerrando o Freemat, todas as vari aveis ser ao perdidas na sa da.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 23 Formato de sa Sec a da

39

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

b. Isto pode ser feito facilmente com as teclas de atalho Ctrl+E que abre um editor interno, ou pelo simples digitar da palavra editor na linha de comando. Basta editar o seu arquivo, salvar e continuar a trabalhar com o programa.
Freemat: Linhas de comando

Colocar um gr afico aqui. c. Podemos editar um arquivo e salvar com o nome rotate.m e voltar ao programa e usar este arquivo recentemente digitado. d. No Windows, e prefer vel manter ativos, tanto o Freemat como o editor local, com um processo ativo e o outro suspenso. Se tais processos rodam em v arias janelas, voc e deve manter o Freemat ativo em uma janela e o editor em outra janela. o est e. V arias ferramentas para depurac a ao dispon veis. Ver help dbtype ou a lista de es na u ltima sess func o ao. f. O comando pwd (present working directory) retorna o nome do atual diret orio de trabalho e cd pode ser usado para mudar o diret orio de trabalho. g. Os comandos dir ou ls listam os conte udos do diret orio de trabalho enquanto que o comando what lista somente os arquivos .m no diret orio. h. Arquivos .m devem estar em uma pasta acess vel ao Freemat. Arquivos .m na atual pasta de trabalho tamb em s ao acess veis. i. A lista atual de pastas no Fremat pesquisa o caminho com o comando path. Este comando tamb em pode ser usado para acrescentar ou deletar pastas ao caminho de pesquisa. Ver help path.

23

Formato de sa da

a. Os no Freemat s ao realizados em dupla precis ao, mas o formato da sa da pode ser controlado por: format format format format format format format format short long short e long e rat hex bank + ponto xado com 4 d gitos ap os a v rgula (o padr ao) ponto xado com 14 d gitos ap os a v rgula o cient notac a ca com 4 d gitos ap os a v rgula o cient notac a ca com 15 d gitos ap os a v rgula o por raz aproximac a ao de inteiros pequenos formato hexadecimal dolares e centavos xados +, -, espac o em branco

b. Uma vez chamado um formato, este permanece tendo efeito at e que seja alterado. c. O comando format compact elimina linhas vazias permitindo que mais dados sejam postas na tela ou na p agina. O comando format loose faz voltar ao formato n aocompacto. Estes comandos s ao independentes dos outros comandos de formato.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 24 C Sec a opia f sica

40

24

C opia f sica

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

a. Uma c opia f sica pode ser obtida com o comando diary. O comando mostra sequencialmente na tela (exceto os gr acos) express oes que s ao escritas em um arquivo.
Freemat: Linhas de comando

diary NomeArquivo b. Se o nome do arquivo n ao for informado ele ser a escrito para um arquivo padr ao denominado diary at e que seja digitado o comando diary off. O comando diary on escreve para o arquivo para encerrar, etc. c. Quando terminar, voc e pode editar o arquivo e imprimir o mesmo em seu sistema.

25

Gr acos

Freemat gera gr acos de: curvas no plano e no espac o, superf cies gradeadas e facetadas. Os principais comandos para tais gr acos s ao: plot, plot3, meshgrid, surf.

25.1

Gr acos de curvas no plano

a. O comando plot cria gr acos lineares no plano XY. Se x e y s ao vetores de mesma dimens ao, o comando plot(x,y) abre uma janela gr aca e desenha um gr aco XY com os elementos de x versus os elementos de y. o sin() sobre o intervalo [-4,4] com o c b. Um gr aco simples da func a odigo:
Freemat: Linhas de comando

x = -4 : 0.01 : 4; y = sin(x); plot(x,y) c. Os gr acos podem ter t tulos, grades, eixos com etiquetas e textos colocados dentro do gr aco com os seguintes comandos que aceitam uma string como argumento. title xlabel ylabel text T tulo do gr aco Etiqueta do eixo OX Etiqueta do eixo OY Texto posicionado em coordenadas espec cas

o sin() sobre [-4,4] com uma grade: d. Gr aco da func a


Freemat: Linhas de comando

x = -4 : 0.01 : 4; y = sin(x); plot(x,y), grid

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

25.1

Gr acos de curvas no plano

41

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

o do intervalo [-4,4] com passo 0.01 e y e. No c odigo acima, x e uma partic a e um vetor o sin aos n o. associando ponto-a-ponto, os valores da func a os desta partic a f. Podemos anexar um t tulo no gr aco anterior, tomando o c odigo:
Freemat: Linhas de comando

x = -4 : 0.01 : 4; y = sin(x); plot(x,y), grid, title(Fun c~ ao seno) o sin() com: g. Colocamos a palavra Texto no ponto (2,0.5) do gr aco da func a
Freemat: Linhas de comando

plot(x,y), grid, title(Fun c~ ao seno), text(2,0.5,Texto) h. Colocamos v arias palavras no gr aco com o comando
Freemat: Linhas de comando

plot(x,y), grid, title(Fun c~ ao seno), ... text([0,1],[-0.1,0.2],{Texto1,Texto2}, fontsize,15) em que (0,-0.1) e o ponto onde foi posto Texto1 e (1,0.2) e o ponto onde foi posto o para o tamanho da fonte ser igual a 15. Texto2. Anexamos uma opc a o sin() sobre o intervalo [-4,4], anexando palavras aos i. Plotamos o gr aco da func a eixos x e y, com o c odigo:
Freemat: Linhas de comando

x = -4 : 0.01 : 4; y = sin(x); plot(x,y), grid, xlabel(Eixo x), ylabel(Eixo y) j. Podemos plotar v arios gr acos, um para cada tempo da gura atual onde os gr acos dos comandos de plotagem seguintes s ao mostrados. Se figure 1 e a gura atual, ent ao o comando figure(2) (ou figure) abre uma segunda gura (se necess ario) a constroi a gura atual. O comando figure(1) ir a mostrar gure 1 e ir a fazer isto com a gura atual. O comando gcf retorna o n umero atual de guras. k. Podemos desenhar o gr aco da curva de Gauss y=exp(-x^2) sobre [-1.5,1.5] anexando uma grade ao gr aco. Neste caso, usamos o sinal .^ de pot encia para garantir que a o seja ponto-a-ponto. operac a
Freemat: Linhas de comando

x = -1.5 : .01 : 1.5; y=exp(-x.^2); plot(x,y), grid o plot pode gerar o gr o denida em um arquivo. Criamos l. A func a aco de uma func a o arquivo expnormal.m com o c odigo:
Fun c~ ao: expnormal()

function y = expnormal(x) y=exp(-x.^2);

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

25.1

Gr acos de curvas no plano

42

e depois geramos o gr aco, digitando:

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

x = linspace(-pi,pi); plot(x,expnormal(x)), grid, title(Curva normal de Gauss) m. Curvas parametrizadas podem ser plotadas no plano. Por exemplo:
Freemat: Linhas de comando

t = 0 : 0.001 : 2*pi; x = cos(3*t); y = sin(2*t); plot(x,y), grid, title(Curva de Lissajous) n. Normalmente, os eixos possuem uma auto-escala, o que pode ser sobreposto pelo comando axis. Alguns feitos do comando axis s ao: axis([x_mi,x_ma,y_mi,y_ma]) axis(axis) axis auto v = axis axis square axis equal axis off axis on coloca escala de eixos nos limites indicados Limpa a escala para os gr acos seguintes ` auto-escala Retorna a Retorna o vetor v mostrando a escala atual Mesma escala em ambos os eixos Mesma escala e marcas tic em ambos os eixos Desliga escala dos eixos e marcas tic Liga escala dos eixos e marcas tic

o. O comando axis deve ser colocado depois do comando plot. p. Podemos usar duas formas para v arios gr acos em um simples gr aco:
Freemat: Linhas de comando

x=0:.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); plot(x,y1, x,y2, x,y3), grid e formar uma matriz Y contendo os valores funcionais como colunas:
Freemat: Linhas de comando

x=0:.01:2*pi; Y=[sin(x), sin(2*x), sin(4*x)]; plot(x,Y) q. Um outro modo e com hold. O comando hold on limpa a tela gr aca atual de modo que os gr acos seguinte s ao colocados sobre a tela gr aca. Mas, os eixos podem se tornar re-escalonados. Entrando hold off ocorre o hold. r. Podemos sobrepor os tipos de linha padr ao, tipos de pontos e cores. Por exemplo,
Freemat: Linhas de comando

x=0:.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); plot(x,y1,--, x,y2,:, x,y3,+) gera uma linha tracejada e uma linha com pontos para os dois primeiros gr acos enquanto que para o terceiro, o s mbolo + e colocado em cada n o.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

25.1

Gr acos de curvas no plano

43

Freemat: Uma introdu c~ ao - XXV Semana da Matem atica - 2009 - UEL

s. Os tipos de linhas s ao: - (s olida), : (pontos), -. (trac o e ponto) e -- (tracejada). t. Os tipos de marcas s ao: . (ponto), o (c rculo), x (vezes), + (mais), * (asterisco), s (quadrado), d (diamante), v (v), ^ (acento circunexo), < (menor) e > (maior). u. As Cores s ao: r (red), g (green), b (blue), k (black), c (cyan), m (magenta) e y (yellow). v. Para plotar uma linha tracejada -- em vermelho r, digitamos:
Freemat: Linhas de comando

plot(x,y,r--) w. O comando subplot pode ser usado para particionar a tela em v arios pequenos gr acos que podem ser postos em uma gura. Ver help subplot.
Freemat: Linhas de comando

t = linspace(-pi,pi); subplot(2,2,1) plot(t,cos(t*1).*exp(-2*t)); subplot(2,2,2); plot(t,cos(t*2).*exp(-2*t)); subplot(2,2,3); plot(t,cos(t*3).*exp(-2*t)); subplot(2,2,4); plot(t,cos(t*4).*exp(-2*t)); x. C opia f sica de gr acos 1. Uma sa da gr aca das guras dos gr acos atuais pode ser facilmente obtida com o o comando print. Ao entrar este comando, e enviada uma c opia de alta-resoluc a com a gura contendo os gr acos atuais para a impressora default. o padr 2. O arquivo printopt.m serve para a congurac a ao usada pelo comando print. Voc e pode mudar os padr oes editando este arquivo (Ver help printopt). 3. O comando print NomeArquivo salva a gura gr aca atual para o arquivo indicado no arquivo de formato padr ao. Se NomeArquivo n ao tem extens ao, ent ao uma extens ao apropriada tal como .ps, .eps, ou .jet e anexada. 4. Por exemplo, se PostScript e o formato de arquivo padr ao, ent ao
Freemat: Linhas de comando

print lissajous cria um arquivo lissajous.ps com o gr aco atual que pode ser impressa na sequ encia usando o sistema de impress ao. Se NomeArquivo j a existe, ele ser a soo -append. breposto a menos que voc e use a opc a 5. O comando print -append lissajous anexa a gura gr aca atual ao arquivo existente lissajous.ps. Deste modo, podemos salvar v arias guras gr acas em um mesmo arquivo.
Freemat: Linhas de comando

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

25.2

Gr acos de curvas no espac o

44

o padr 6. A congurac a ao pode, de modo natural, ser sobreposta. Por exemplo,

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

print -deps -f3 saddle salva o arquivo Encapsulated PostScript saddle.eps com os gr acos da gura 3, mesmo que ela n ao seja a gura atual.

25.2

Gr acos de curvas no espac o

a. An alogo a plot em 2D, o comando plot3 gera curvas no espac o 3D. Se x, y e z s ao vetores de mesma dimens ao, ent ao o comando plot3(x,y,z) produz um gr aco em perspectiva de uma curva linear por pedac os em 3D passando pelos pontos com coordenadas nos respectivos pontos (x,y,z). Tais vetores s ao usualmente denidos na forma param etrica. b. Por exemplo,
Freemat: Linhas de comando

t = .01 : .01 : 20*pi; x = cos(t); y = sin(t); z = t.^3; plot3(x,y,z) produz uma h elice cil ndrica que e comprimida pr oximo do plano z=0. c. Da mesma forma que para gr acos planares, podemos anexar: um t tulo e etiquetas nos eixos (incluindo zlabel). Os feitos do comando axis descritos para 2D, tamb em valem para gr acos 3D; congurando a escala dos eixos para os limites prescritos, mas agora exigem um vetor 6-dimensional.

25.3

Gr acos de superf cies e de grade

a. Gr acos de superf cies gradeadas em 3D s ao plotados com o comando mesh. Aqui mesh(z) cria um gr aco em perspectiva 3D dos elementos da matriz z. Os pontos da ` grade retangular em z=0. superf cie s ao denidos pelas coordenadas z relativos a b. Por exemplo, digite
Freemat: Linhas de comando

[X,Y] = meshgrid(-1.6:.4:1.6); c. Do mesmo modo, gr acos de superf cies 3D s ao plotados com o comando surf.
Freemat: Linhas de comando

surf(meshgrid(-1.6:.4:1.6))

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

25.3

Gr acos de superf cies e de grade

45

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

d. Para plotar o gr aco de z=f(x,y) sobre um ret angulo, devemos denir vetores xx e o meshgrid, criamos uma yy que particionam os lados do ret angulo. Usando a func a matriz x, sendo cada linha igual a xx e cuja coluna tenha dimens ao de yy, e do mesmo modo, criamos uma matriz y, em que cada coluna e igual a yy, como segue:
Freemat: Linhas de comando

[x,y] = meshgrid(xx,yy); e. Assim calculamos uma matriz z, obtida pelo c alculo de f atuando ponto-a-ponto sobre o surf pode ser aplicados. as matrizes x e y, para as quais a func a f. Por exemplo, voc e pode desenhar o gr aco de z = ex [-2,2]x[-2,2] como segue:
Freemat: Linhas de comando
2 y 2

sobre a regi ao quadrada

xx = -2:.2:2; yy = xx; [x,y] = meshgrid(xx,yy); z = exp(-x.^2 - y.^2); surf(x,y,z) g. Ao inv es de gerar meshgrid, podemos trocar as tr es primeiras linhas do c odigo acima por: [x,y]=meshgrid(-2:.2:2,-2:.2:2); e obter algo mais simples, como:
Freemat: Linhas de comando

[x,y] = meshgrid(-2:.2:2, -2:.2:2); z = exp(-x.^2 - y.^2); surf(x,y,z) o repmat() realiza c h. A func a opias de uma matriz de acordo com o tipo de chamada. Copia 1 linha com a matriz x repetida 1 vez:
Freemat: Linhas de comando

x = [1 2 3 4] y = repmat(x,1,1) y = 1 2 3 4 Copia 1 linha com a matriz x repetida 2 vezes:


Freemat: Linhas de comando

x = [1 2 3 4] y = repmat(x,1,2) y = 1 2 3 4 1 2 3 4 Copia 2 linhas com a matriz x repetida 3 vezes:


Freemat: Linhas de comando

x = [1 2 3 4] y = repmat(x,2,3) y = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

25.3

Gr acos de superf cies e de grade

46

Copia 5 linhas com a matriz x repetida 1 vez:

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

Freemat: Linhas de comando

x = [1 2 3 4] y = repmat(x,[5,1]) Copia 2 linhas com a matriz x repetida 3 vezes:


Freemat: Linhas de comando

x = [1 2 3 4] y = repmat(x,[2,3]) o com o c i. Podemos construir uma outra func a odigo:


Freemat: Linhas de comando

x = repmat(linspace(-1,1),[100,1]); y = x; r = x.^2 + y.^2; z = exp(-r*3).*cos(5*r); c = r; surf(x,y,z,c) axis equal view(3) o sobre gr j. Como observamos, os feitos do comando axis descritos na sec a acos no plano tamb em valem para gr acos 3D, bem como os comandos para: t tulo, etiquetas de eixos e o comando hold. k. O sombreamento de cores de superf cies e obtido pelo comando shading. Tr es formas conguram o sombreamento: faceted que e o default, interpolated e flat, que podem ser chamados por qualquer um dos comandos indicados abaixo:
Freemat: Linhas de comando

shading faceted, shading interp, shading flat l. As superf cies produzidas com surf, conguradas por interpolated e flat removem o das linhas da rede. Experimente os diferentes tipos de sombreamento a sobreposic a citados acima. O comando shading (bem como colormap e view abaixo) devem ser colocados depois do comando surf. m. O perl de cores de uma superf cie e controlado pelo comando colormap e podem ser o seguintes:
Freemat: Linhas de comando

hsv (default), hot, cool, jet, pink, copper, flag, gray, bone n. Por exemplo, o comando colormap(cool) ir a congurar uma determinada cor para a gura atual. Fac a testes com v arias colormaps na superf cie produzida acima. o. O comando view mostra o ponto de vista de coordenadas esf ericas ou cartesianas o objeto 3D. Ver help view.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

25.4

Manipulando Gr acos

47

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

o peaks gera uma superf p. A func a cie bonita sobre a qual podemos experimentar o sombreamento com shading, colormap e view. es sphere e q. Podemos construir gr acos de superf cies parametrizadas com as func o cylinder. A superf cie conhecida como Toro:
Freemat: Linhas de comando

function [x,y,z] = toro(r,n,a) %TORO Gera um Toro com toro(r,n,a), raio central a, raio lateral r. % n indica o n umero de faces na superf cie. % Vari aveis de entrada opcionais com padr~ ao r=0.5, n=50, a=1. % [x,y,z] = toro(r,n,a) gera tr^ es matrizes (n+1)x(n+1) % para construir surf(x,y,z) cuja sa da gr afica e o toro. if nargin < 3, a = 1; end if nargin < 2, n = 50; end if nargin < 1, r = 0.5; end u = pi*(0:2:2*n)/n; v = 2*pi*(0:2:n)/n; xx = (a + r*cos(v))*cos(u); yy = (a + r*cos(v))*sin(u); zz = r*sin(v)*ones(size(u)); if nargout == 0 surf(xx,yy,zz) ar = (a + r)/sqrt(2); axis([-ar,ar,-ar,ar,-ar,ar]) else x = xx; y = yy; z = zz; end

25.4

Manipulando Gr acos

es de baixo n O sistema gr aco do Freemat tamb em possui func o vel que controlar quase todos os aspectos do ambiente gr aco ao produzir gr acos sosticados. Estude o comando set(1) e gca,set(ans) para ver mais propriedades que podemos controlar.

26

C alculos com Matrizes Esparsas

a. Em geral, as matrizes s ao cheias, isto e, a maioria das entradas e n ao-nula, mas, se uma matriz possui muitos zeros, o c alculo pode ser mais r apido, evitando muitas es aritm operac o eticas sobre as entradas nulas e gastando menos mem oria que o exigido normalmente, guardando apenas as entradas n ao nulas da matriz. Desse o no tempo e no armazenamento quando o problema envolve modo, ocorre reduc a matrizes com grande quantidade de entradas. Matrizes com muitos zeros s ao denominadas esparsas.

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 26 C Sec a alculos com Matrizes Esparsas

48

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

b. Existem duas formas para guardar matrizes: full e sparse, sendo que a forma cheia es full e sparse realizam a convers e o normal. A func o ao entre os dois modos. o sobre o n c. Para a matriz A, o c odigo gera uma informac a umero de zeros de A:
Freemat: Linhas de comando

a = [1,0,4,2,0; 0,0,0,0,0; 0,1,0,0,2] a = 1 0 4 2 0 0 0 0 0 0 0 1 0 0 2 A = sparse(a) A = Matrix is sparse with 5 nonzeros d. Podemos obter a matriz cheia A, cigitando
Freemat: Linhas de comando

full(A) ans = 1 0 4 2 0 0 0 0 0 0 0 1 0 0 2 o nnz(A) retorna o n e. Se A e uma matriz, a func a umero de elementos n ao nulos de A.
Freemat: Linhas de comando

nnz(A) ans = 5 f. Uma matriz esparsa e guardada como um arranjo linear dos seus elementos n ao nulos o sparse permite criar uma matriz usando os seus ndices de linhas e colunas. A func a esparsa pela listagem das entradas n ao nulas. Se o vetor s cont em as entradas n ao nulas de S e os vetores de inteiros i e j listam os seus correspondentes ndices, ent ao sparse(i,j,s,m,n) cria a matriz esparsa S de ordem mxn. g. Vamos construir uma matriz esparsa tal que S(1,1)=5, S(2,2)=6, S(3,3)=7, S(4,1)=8, S(4,2)=9 e S(4,3)=10. Assim, denimos os ndices de linhas e de colunas, bem como os seus valores:
Freemat: Linhas de comando

Linha = [1 2 3 4 4 4]; % Indice da linha Coluna = [1 2 3 1 2 3]; % Indice da coluna Valor = [5 6 7 8 9 10]; S = sparse(Linha,Coluna,Valor,4,3), full(S) S = Matrix is sparse with 6 nonzeros ans = 5 0 0 0 6 0 0 0 7 8 9 10

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

o 26 C Sec a alculos com Matrizes Esparsas

49

o - XXV Semana da Matem Freemat: Uma introduc a atica - 2009 - UEL

h. A lista de sa da com entradas n ao nulas na coluna de maior ordem com os ndices o F=full(S) reestabelece S para o de linha e coluna para cada entrada. A declarac a modo cheio. Vamos vericar o que foi dito com uma matriz A usando o comando
Freemat: Linhas de comando

issparse(A) i. As matrizes an alogas na forma esparsa para eye, ones e randn que valem para matrizes cheias, s ao, respectivamente, speye, spones e sprandn j. Os comandos spones e sprandn aceitam argumentos matriciais e trocam somente as entradas nulas por valores iguais a 1 e n umeros aleat orios normalmente distribu dos, respectivamente. randn tamb em aceita que a estrutura de matriz esparsa seja randomizada. O comando sparse(m,n) cria uma matriz esparsa nula. k. Um outro exemplo.
Freemat: Linhas de comando

n = 6; e = floor(10*rand(n-1,1)); E = sparse(2:n,1:n-1,e,n,n) E = Matrix is sparse with 4 nonzeros full(E) ans = ans = 0 0 0 0 0 0 0 7 0 0 0 0 0 0 4 0 0 0 0 0 0 6 0 0 0 0 0 0 7 0 es aritm es podem ser aplicadas, independente do l. As operac o eticas de muitas func o modo de armazenamento. es sobre matrizes cheias produzem mam. Sobre o armazenamento do resultado, operac o trizes cheias. Na sequ encia, a letra E representa uma matriz esparsa e a letra C reprees indicadas, obtemos uma matriz: senta uma matriz cheia. Para as operac o es com matrizes Algumas Operac o E+E, E*E, E.*E, E.*C, E^n, E.^n, E\E E+C, E*C, E\C, C\E inv(E), chol(E), lu(E) Resultado Matriz esparsa Matriz cheia Matriz esparsa

n. Para uma matriz esparsa sim etrica S, eig(S) e uma matriz cheia mas se S e antio svd exige como sim etrica o resultado pode ser uma matriz cheia ou esparsa. A func a argumento uma matriz cheia. o. Podemos comparar entre os dois modos de armazenamento, observando a eci encia o de um sistema Ax=b de equac es. na resoluc a o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquivo: FreematIntro.tex

Ulysses Sodr e, Andrielber Silva Oliveira, Talita Paiva Corr ea, Leandro Meneses da Costa

Você também pode gostar