Anda di halaman 1dari 19

Programa ca o em MATLAB

UNIVERSIDADE DA BEIRA INTERIOR


Departamento de Matem atica

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

Cap tulo 1 Introdu c ao


A utiliza ca o do Matlab apenas com a janela de comandos torna bastante dif cil emendar erros e guardar instru co es para repetir noutra sess ao. Para resolver este inconveniente existem os scripts e fun c oes. S ao cheiros de texto com extens ao .m. Para melhorar estes cheiro o Matlab permite uma linguagem de programa c ao de alto n vel. Com os scripts e fun co es podemos criar rotinas pr oprias e adicion a-las ` as j a existentes.

Cap tulo 2 Scripts


Um script e um conjunto de instru co es do MATLAB gravados num cheiro (com a extens ao equivalente a escrever todas as .m chamados m-les), como est a exemplicado na gura 2.1. E instru co es na janela principal, s o que armazenadas num arquivo. O script trabalha com vari aveis globais (apresentadas no direct orio de trabalho), ou seja, l e e escreve as vari aveis do ambiente de preciso ter cuidado pois tamb trabalho. E em pode alterar vari aveis existentes, sem avisar. Nos scripts podemos escrever informa ca o u til para o utilizador, mas que n ao faz parte de nenhuma

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

C alculo simb olico em Matlab

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.

Cap tulo 3 Fun c oes


Fun c oes s ao m-les contendo um conjunto de instru co es do Matlab, como um script, s o que todas as vari aveis s ao locais e n ao globais. S ao como programas ou subrotinas no Fortran. Para distinguir as fun co es dos scripts a primeira instru c ao e function. A seguir na 1a linha do arquivo dene-se as vari aveis de entrada e de sa da, e o nome da fun ca o, como mostra a gura 3.1. O nome da fun ca o deve ter o mesmo nome do arquivo a ser gravado.

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

C alculo simb olico em Matlab

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 .

Cap tulo 4 Programa c ao


Nos scripts e fun co es as instru co es s ao executadas pela ordem que est ao escritas, para mudar a ordem com que s ao executadas s ao necess arios alguns comandos. O Matlab tem um conjunto de comandos para controlar o uxo das instru c oes, de entre eles destacamos: for e while - para ciclos. if-elseif-else- para condi c oes simples. switch-case-otherwise - para condi c oes mais complexas. break, return e error - para terminar opera co es. Cada um dos controladores de uxo deve terminar com end. Ciclo for Um for e usado para repetir uma opera ca o ou um grupo de opera co es para um n umero de vezes predenido.

Figura 4.1: Exemplo do ciclo for A forma de utilizar e: for contador=vector instru c~ oes 7

C alculo simb olico em Matlab end

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.

Figura 4.2: Exemplo do ciclo while

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

C alculo simb olico em Matlab

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

Cap tulo 5 Escrita e leitura de arquivos


O MATLAB possui algumas fun c oes para ler e escrever dados em arquivos do tipo bin ario ou ASCII formatados. As fun co es s ao: fopen: abre um arquivo existente ou cria um novo arquivo fclose: fecha um arquivo aberto fwrite: escreve uma informa ca o bin ario para um arquivo fread: l e informa c ao bin ario num arquivo fscanf: l e informa c ao formatada num arquivo fprintf: escreve informa ca o formatada num arquivo

Figura 5.1: Exemplo de escrita de dados num cheiro Para ler e escrever informa ca o formatada os comandos s ao:

11

C alculo simb olico em Matlab

Escrita e leitura de arquivos

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

Cap tulo 6 Gr acos especiais


fplot

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

C alculo simb olico em Matlab stem

Gr acos especiais

Representa uma sequ encia. >>t=linspace(0,2*pi,100); >>f=exp(-0.2*t).*sin(t); >>stem(t,f)

compass Desenha vectores. >>th=linspace(0,2*pi,11); >>zx=cos(th); >>zy=sin(th); >>z=zx+i*zy; >>compass(z)

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

Desenha um gr aco circular em 3D. >>pop=[3332;696;694;437;307]; >>pie3(pop) >>title(popula c~ ao do mundo)

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

Representa uma fun ca o em forma de ta. >>t=linspace(0,5*pi,100); >>y=sin(t); >>ribbon(t,y,0.1)

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

Desenha um cilindro por rota ca o de uma fun ca o. >>z=0:0.02:1; >>r=sin(3*pi*z)+2; >>cylinder(r)

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