Conte udo
1 Introdu c ao 2 Scripts 3 Fun c oes 4 Programa c ao 5 Escrita e leitura de arquivos 6 Gr acos especiais 2 3 5 7 11 13
Figura 2.1: Exemplo de um script instru ca o. Tudo o que e escrito ap os o s mbolo % , numa linha, e considerado coment ario e o Matlab n ao l e. O ; no nal da instru c ao permite que seja efectuada a instru c ao sem apresenta ca o do resultado. No caso de a instru c ao n ao ser nalizada com ; o resultado e mostrado na janela de comandos. A apresenta ca o dos resultados tamb em pode ser feita com o comando fprintf. A entrada de vari aveis que n ao existem no ambiente de trabalho pode ser feiro com o comando input. Para executar o script basta escrever o nome do arquivo (sem a extens ao .m), como mostra a gura 2.2. 3
Scripts
Figura 2.2: Exemplo de utiliza ca o de um script A utiliza ca o de scripts requer alguns cuidados. NUNCA grave o script com o mesmo nome de uma vari avel nele utilizada. O nome do arquivo script deve come car por uma letra. Seja cuidadoso com os nomes das vari aveis no script (todas essas vari aveis s ao gravadas no ambiente de trabalho) Exerc cios 1. Construa um script que transforma um n umero x em graus, num n umero y em radianos. 2. Fa ca um script que mostra na janela principal uma tabela de convers ao de graus Celsius para graus Fahrenheit. ( Considere C=-40:5:100) 3. Construa um script que: tra ca o gr aco da fun c ao tan(x) a azul, no intervalo [, ]; representa a tracejado verde as assimptotas; marca com um circulo vermelho os zeros da fun ca o; insere as legendas e t tulo.
Figura 3.1: Exemplo de uma fun c ao Para executar uma fun ca o existem v arias op c oes. Podemos guardar todas as vari aveis de sa da ou apenas as primeiras, como est a exemplicado na gura 3.2. Algumas dicas para construir fun co es. Crie uma estrutura l ogica e pense na sequ encia computacional antes de escrever o c odigo. Escreva-a num papel. Dena as vari aveis de entrada e sa da. Traduza o que escreveu no papel para a lingagem do Matlab. 5
Fun c oes
Figura 3.2: Exemplo de uma fun c ao Dena nomes l ogicos para as vari aveis e fun co es. Divida grandes blocos computacionais e escreva-os em fun c oes separadas. Verique os erros e a sa da com mensagens de erro e use o artif cio do ; para vericar os passos interm edios de c alculo. O termo de deni ca o deve ser escrito com letra min uscula (function e n ao Function) . Os coment arios come cam com %, podendo ser colocados em qualquer lugar. Todas as linhas com coment arios imediatamente ap os a primeira linha s ao mostradas no Matlab help. Escreva o m aximo de coment arios poss veis no c odigo. Uma simples vari avel de sa da n ao precisa ser fechada por par enteses rectos [ ]. O nome das vari aveis de entrada e de sa da declaradas na primeira linha s ao vari aveis locais. Exerc cios 1. Construa uma fun ca o cuja entrada e um n umero x em graus, e devolve o seu valor em radianos. 2. Fa ca uma fun ca o que dadas 2 matrizes calcule a soma e diferen ca. 3. Construa uma fun ca o que converte a press ao de atm para N/m2 .
Figura 4.1: Exemplo do ciclo for A forma de utilizar e: for contador=vector instru c~ oes 7
Programa ca o
A vari avel que dene o contador e um vector, n ao necessariamente de valores inteiros. As instru co es s ao executadas para cada elemento do vector. Ciclo while Um while e usado para repetir uma opera ca o ou um grupo de opera c oes para um n umero indenido de vezes enquanto que a condi ca o especicada seja satisfeita.
A sintaxe e while condi ca ~o instru c~ oes end necess E ario garantir que alguma vez a condi ca o n ao e satisfeita, pois caso contr ario o programa entra num ciclo innito. Para parar um ciclo innito pode-se utilizar as teclas ctrl e c simultaneamente. Condicional if O comando if cria blocos condicionais. O comando e utilizado da forma: if condi ca ~o instru c~ oes else instru c~ oes end Se a condi ca o e verdadeira realiza o primeiro bloco de instru co es. Se a condi c ao e falsa realiza o segundo bloco. No caso de v arios condicionais encadeados podemos utilizar elseif Observa c oes: 8
Programa ca o
Figura 4.3: Exemplo do condicional if N ao e necess ario utilizar sempre o comando completo, por vezes basta o if e end. A instru c ao elseif pode ser utilizada as vezes que for necess aria. Condicional switch Cria blocos condicionais. Uma vari avel e usada como um dispositivo de direccionamento (switch), onde cada valor dessa vari avel direcciona para um caso (case).
Figura 4.4: Exemplo do condicional switch A sintaxe e: switch vari avel case case ... otherwise instru c~ oes end Observa c oes: N ao e necess ario utilizar sempre o comando completo, por vezes basta o switch e case. 9 valor1 valor2 instru c~ oes instru c~ oes
C alculo simb olico em Matlab A instru c ao case pode ser utilizada as vezes que for necess aria. Operadores Booleanos
Programa ca o
O resultado das condi c oes tem de ser uma vari avel booleana, com os valores 1 ou 0. O valor 0 quando a condi c ao e falsa e 1 quando verdadeira. Essencialmente existem dois tipos de operadores. Relacionais Os relacionais permitem comparar elementos <, <=, >, >=, ==, =. L ogicos Os l ogicos permitem construir proposi co es. & ou and - conjun ca o; | ou or - disjun ca o; ou not - nega ca o; Comandos de paragem Para terminar a execu ca o de algumas instru c oes o Matlab tem alguns comandos de paragem. error(mensagem) dentro de uma fun c ao ou script, sai da execu c ao da rotina e mostra uma mensagem de erro. return dentro de uma fun c ao ou script, sai da execu c ao da rotina. break dentro de um for ou while, termina a execu ca o do ciclo.
Figura 4.5: Exemplo de utiliza ca o dos comandos de paragem Exerc cios 1. Fa ca um programa que verica se um n umero e primo. 2. Um fornecedor faz o seguinte desconto num determinado produto: mais de 200 unidades 7%; de 100 a 200 uni. 5%; de 50 a 100 uni. 3%; menos de 50 unidades n ao tem desconto. Escreva um programa que calcula o pre co total, dado o no . de unidades e o pre co unit ario. 10
Figura 5.1: Exemplo de escrita de dados num cheiro Para ler e escrever informa ca o formatada os comandos s ao:
11
Figura 5.2: Exemplo da leitura de dados escritos num cheiro Formato %c %d %e %E %f %g %o %s %x Exerc cios 1. Construa um programa que escreve num cheiro de texto uma tabela de convers ao entre as unidades de temperatura Fahrenheit, Kelvin e Celsius. 2. Crie um programa que gera aleatoriamente um conjunto de 100 elementos normalmente distribu dos e os escreva num cheiro. 3. Fa ca um programa que l e o cheiro da al nea anterior, calcule a m edia dos dados e apresente um gr aco dos valores lidos. Descri ca o Simples caracter Nota ca o decimal Nota ca o exponencial (usando emin usculo ) Nota ca o exponencial (usando emai usculo ) Nota ca o xando ponto O mais compactado de %e ou %f Nota ca o Octal Grupos de caracteres Nota ca o Hexadecimal
12
Representa gr acos de fun co es de uma forma simples. Por exemplo: >>fplot(x.*sin(x),[0 10*pi])
semilogy O gr aco e representado com escala logar tmica (base 10) no eixo y . >> x=linspace(0,2*pi,200); >> y=exp(-x); >> semilogy(x,y) >> grid on
semilogx O gr aco e representado com escala logar tmica (base 10) no eixo x. >> x=linspace(0,2*pi,200); >> y=log(2*x); >> semilogx(x,y) >> grid on
13
C alculo simb olico em Matlab loglog O gr aco e representado com escala logar tmica (base 10) nos dois eixos. >>t=linspace(0,2*pi,200); >>x=exp(t); >>y=100+exp(2*t); >>loglog(x,y); >>grid on
Gr acos especiais
ll
Representa o pol gono e pinta a area limitada pelo pol gono. pol gono >>t=linspace(0,2*pi,200); >>r=sqrt(abs(2*sin(5*t))); >>x=r.*cos(t); >>y=r.*sin(t); >>fill(x,y,k) >>axis(equal) errorbar Representa a fun c ao e a margem de erro para cada ponto. >>x=0:0.1:2; >>aprx2=x-x.^3/6; >>er=aprx2-sin(x); >>errorbar(x,aprx2,er) Se necess ario une o primeiro e o u ltimo ponto para fechar o
14
C alculo simb olico em Matlab barh Desenha um gr aco de barras horizontal. >>cont=char(Asia,Europa,... ...Africa,America do Norte,... ... America do Sul); >>pop=[3332;696;694;437;307]; >>barh(pop) >>for i=1:5, gtext(cont(i,:)); end >>xlabel(Polula c~ ao em Milh~ oes) >>title(Popula c~ ao do Mundo (1992)) plotyy Representa duas fun co es no mesmo intervalo mas com escalas diferentes. Um eixo e representado a ` esquerda e outro a ` direita. >>x=1:0.1:10; >>y1=exp(-x).*sin(x); >>y2=exp(x); >>Ax=plotyy(x,y1,x,y2); >>hy1=get(Ax(1),ylabel); >>hy2=get(Ax(2),ylabel); >>set(hy1,string,e^(-x)*sin(x)); >>set(hy2,string,e^x); area Desenha a fun ca o e preenche a area limitada pela fun c ao e o eixo. >>x=linspace(-3*pi,3*pi,100); >>y=-sin(x)./x; >>area(x,y) >>xlabel(x) >>ylabel(sin(x)./x) >>hold on >>x1=x(46:55); >>y1=y(46:55); >>area(x1,y1,facecolor,y)
Gr acos especiais
15
Gr acos especiais
comet Representa uma anima c ao onde a fun ca o e desenhada como sendo a traject oria de um cometa. >>q=linspace(0,10*pi,20000); >>y=q.*sin(q); >>comet(q,y)
quiver Representa o campo de velocidades com vectores. >>r=-2:0.2:2; >>[X,Y]=meshgrid(r,r); >>Z=-0.5*X.^2 + X.*Y + Y.^2; >>[dx,dy]=gradient(Z,.2,.2); >>quiver(X,Y,dx,dy,2);
16
C alculo simb olico em Matlab surfc Representa a superf cie e as curvas de n vel. >>u=-5:0.2:5; >>[X,Y]=meshgrid(u,u); >>Z = cos(X).*cos(Y).*exp(-sqrt(X.^2+Y.^2)/4); >>surfc(X,Y,Z) >>axis(off)
Gr acos especiais
pie3
stem3 Representa uma sequ encia em 3D. >>t=linspace(0,6*pi,200); >>x=t; >>y=t.*sin(t); >>z=exp(t/10)-1; >>stem3(x,y,z)
ribbon
17
C alculo simb olico em Matlab sphere Desenha uma esfera. >>sphere(20) ou >>[x,y,z]=sphere(20); >>surf(x,y,z) >>axis(equal)
Gr acos especiais
cylinder
slice Mostra alguns cortes de fun co es em 4D. >>v=[0,1]; >>[x,y,z]=meshgrid(v,v,v); >>slice(x,y,z,z,[0,1],[0,1],[0,1]) >>axis([-.1,1.1,-.1,1.1,-.1,1.1])
movie Mostra um lme. >>nframes = 36; >>Frames = moviein(nframes); >>angulo = linspace(0,360,36); >>x=linspace(-3,3,100); >>[X,Y]=meshgrid(x,x); >>Z=X.*Y.*(X.^2-Y.^2)./((X.^2+Y.^2)); >>mesh(X,Y,Z) >>for i=1:nframes view(angulo(i),30) Frames(:,i)=getframe; end >>movie(Frames,2)
18