Tutorial de matlab (em português)

87

Transcript of Tutorial de matlab (em português)

Page 1: Tutorial de matlab (em português)

Universidade Federal de Minas Gerais

Departamento de Ci�encia da Computa�c�ao do ICEx

Introdu�c�ao ao MATLAB

Frederico F� Campos� �lho

fevereiro de ����

Page 2: Tutorial de matlab (em português)
Page 3: Tutorial de matlab (em português)

Sum�ario

� Ambiente de programa�c�ao �

��� Janela de comando � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Comandos de aux��lio ao usu�ario � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Comando help � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Comando lookfor � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Exerc��cios � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� Elementos fundamentais �

��� Constantes e vari�aveis � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Arranjos � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Matrizes � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Vari�aveis literais � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Vari�aveis especiais � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

��� Express oes � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Express oes aritm�eticas � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Express oes l�ogicas � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Express oes literais � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

��� Gr�a�cos � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

i

Page 4: Tutorial de matlab (em português)

ii SUM�ARIO

����� Gr�a�cos bidimensionais � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Gr�a�cos tridimensionais � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Figuras � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

��� Exerc��cios � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

� MATLAB como linguagem de programa�c�ao ��

��� Comandos de entrada e sa��da � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Formato de exibi�c ao � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Espa�co de trabalho � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Di�ario � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Leitura e grava�c ao de dados � � � � � � � � � � � � � � � � � � � � � � � ��

��� Estruturas condicionais � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Estrutura if�end � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Estrutura if�else�end � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Estrutura if�elseif�end � � � � � � � � � � � � � � � � � � � � � � � � �

��� Estruturas de repeti�c ao � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Estrutura for�end � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Estrutura while�end � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Estrutura com interrup�c ao no interior � � � � � � � � � � � � � � � � � � ��

��� Arquivos M � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Programa � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Comandos para execu�c ao de express oes � � � � � � � � � � � � � � � � � ��

����� Subprograma function � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Depura�c ao de programa � � � � � � � � � � � � � � � � � � � � � � � � � ��

Page 5: Tutorial de matlab (em português)

SUM�ARIO iii

����� Gerenciamento de arquivos � � � � � � � � � � � � � � � � � � � � � � � � ��

��� Exerc��cios � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

� MATLAB para Computa�c�ao Cient�ca ��

��� Medidas de tempo e opera�c oes � � � � � � � � � � � � � � � � � � � � � � � � � � ��

��� �Algebra linear � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Decomposi�c oes e inversa � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Solu�c ao de sistemas � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Autovalores e autovetores � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Normas e condi�c ao � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� C�alculo de zero e m��nimo de fun�c ao � � � � � � � � � � � � � � � � � � � � � � � �

����� Opera�c oes com polin�omios � � � � � � � � � � � � � � � � � � � � � � � � �

����� C�alculo de ra��zes � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Determina�c ao dos m��nimos de fun�c oes � � � � � � � � � � � � � � � � � ��

��� Interpola�c ao e ajuste de curvas � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� C�alculo das diferen�cas �nitas ascendentes � � � � � � � � � � � � � � � � ��

����� Interpola�c ao unidimensional � � � � � � � � � � � � � � � � � � � � � � � ��

����� Ajuste polinomial � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

��� Integra�c ao num�erica � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

Page 6: Tutorial de matlab (em português)

iv SUM�ARIO

Page 7: Tutorial de matlab (em português)

Pref�acio

MATLAB �R�� acronismo de MATrix LABoratory� �e um sistema interativo e linguagem deprograma�c ao para computa�c ao num�erica e visualiza�c ao para as �areas t�ecnicas e cient���cas�Seu elemento b�asico de dados �e uma matriz� a qual n ao requer dimensionamento� OMATLAB permite a solu�c ao de muitos problemas num�ericos em uma fra�c ao do tempo queseria necess�ario para escrever um programa em uma linguagem como FORTRAN� Pascal ouC� Al�em do mais� em MATLAB as solu�c oes dos problemas s ao expressas de um modo bempr�oximo do que elas s ao escritas matematicamente� MATLAB �e marca registrada daThe MathWorks� Inc��� Prime Park WayNatick� Massachusetts ������ � USAURL http���www�mathworks�com�

Existem vers oes pro�ssionais do MATLAB para computadores pessoais baseados em micro�processadores x� e Macintosh� esta�c oes de trabalho da Digital� Hewlett�Packard� IBM�Silicon Graphics e Sun� al�em de vers oes para alguns supercomputadores� �E tamb�em dis�pon��vel uma vers ao de estudante para ambiente Windows e Macintosh�

O objetivo deste texto �e apresentar o MATLAB �vers ao ���� como uma linguagem de progra�ma�c ao dotada de fun�c oes n ao dispon��veis nas linguagens convencionais� Por isto� este ma�terial pode ser utilizado em disciplinas� tais como� Programa�c ao de Computadores� C�alculoNum�erico� An�alise Num�erica� �Algebra Linear e quaisquer outras dos cursos de Engenhariae das �areas de Ci�encias Exatas� Tamb�em� ser ao exploradas algumas caracter��sticas pr�opriasque mostrar ao por que o MATLAB �e uma poderosa ferramenta de apoio ao aprendizado eutiliza�c ao da Computa�c ao Cient���ca�

No cap��tulo � �e descrito o ambiente de programa�c ao do MATLAB mostrando a janela decomandos e como obter informa�c oes de comandos durante a sess ao� O cap��tulo � mostra oselementos fundamentais do MATLAB� como constantes e vari�aveis� express oes e gr�a�cos� Nocap��tulo �� o MATLAB �e apresentado como uma linguagem de programa�c ao� sendo descritoscomandos de entrada e sa��da� estruturas condicionais e de repeti�c ao e arquivos� O cap��tulo �apresenta fun�c oes do MATLAB para resolver problemas de �algebra linear� c�alculo de zero em��nimo de fun�c ao� interpola�c ao� ajuste de curvas e integra�c ao num�erica�

Sugest oes para aprimorar o presente texto� bem como� para efetuar corre�c oes ser ao bem�vindas pelo e�mail� ffcampos�dcc�ufmg�br�

Belo Horizonte� fevereiro de ��

Frederico Ferreira Campos� �lhoDCC�ICEx�UFMG

v

Page 8: Tutorial de matlab (em português)

vi

Page 9: Tutorial de matlab (em português)

Cap��tulo �

Ambiente de programa�c�ao

A intera�c ao entre o MATLAB e o usu�ario �e feita por interm�edio de uma janela� na qual umcomando �e fornecido e o resultado exibido� No caso de d�uvida sobre a sintaxe ou mesmo aexist�encia de um comando� o MATLAB possui meios de auxiliar o usu�ario durante a sess ao�

��� Janela de comando

Para executar o MATLAB em ambiente Windows ou Macintosh� o cursor deve ser colocadosobre o seu��cone e pressionado o bot ao da esquerda domouse ou ent ao entrar com o comandomatlab em caso de ambiente Unix� Aparecer�a a janela de comando pela qual ser�a feita aintera�c ao entre o MATLAB e o usu�ario� O sinal de que o programa est�a pronto para receberum comando �e indicado pelos caracteres ��� ou por EDU�� no caso da vers ao de estudante� A�gura ��� mostra a janela de comando da vers ao de estudante do MATLAB para ambienteWindows�

Figura ���� Janela de comando da vers ao de estudante do MATLAB�

Um comando �e �nalizado acionando�se a tecla Enter ou Return� Se um comando for muitolongo� ent ao tr�es pontos ����� seguidos do pressionamento da tecla Enter ou Return indica

Page 10: Tutorial de matlab (em português)

� Cap��tulo �� Ambiente de programa�c�ao

que o comando continuar�a na pr�oxima linha� Comandos m�ultiplos podem ser colocados emuma mesma linha se eles forem separados por v��rgulas ou ponto�e�v��rgulas� Al�em disto� asv��rgulas dizem ao MATLAB para mostrar os resultados e os ponto�e�v��rgulas para suprimira exibi�c ao�

Todo texto ap�os o sinal de � �e considerado coment�ario� e portanto ignorado� o que tornaf�acil a documenta�c ao de um programa�

As teclas � e � podem ser usadas para listar os comandos previamente usados e as teclas �e � movem o cursor na linha de comandos possibilitando assim a sua modi�ca�c ao�

O n�umero de linhas a serem exibidas de cada vez na janela de comandos pode ser rede�nidapelo comando more� Sua sintaxe �e

moren�umero�de�linhas��

onde n�umero�de�linhas� de�ne o n�umero de linhas a serem exibidas� O comando �e desati�vado por more off� enquanto que more on de�nide um n�umero de linhas de modo a ocupartoda a janela de comandos�

A execu�c ao de um comando em MATLAB pode ser interrompida a qualquer instante bas�tando para isto pressionar as teclas Control e C� simultaneamente� O comando clc �e usadopara limpar a janela de comandos e home posiciona o cursor no canto superior esquerdo dajanela de comando� O t�ermino de execu�c ao do MATLAB �e feito pelo comando quit ou exit�

Quando o MATLAB �e ativado� os comandos contidos no arquivo matlabrc�m s ao automa�ticamente executados para que sejam atribuidos valores a alguns par�ametros� Nesta fasetamb�em s ao executados os comandos do arquivo startup�m� caso ele exista� O usu�ario podecriar� em seu pr�oprio diret�orio� o arquivo startup�m contendo� por exemplo� de�ni�c ao deconstantes matem�aticas e f��sicas� formatos de exibi�c ao ou quaisquer comandos do MATLABpara personalizar a sua janela de comando�

A abrang�encia e potencialidade do MATLAB est�a muito al�em do que ser�a mostrado nestetexto� por isso �e aconselh�avel executar o comando demo para visualizar uma demonstra�c aoe se ter uma id�eia dessa potencialidade�

��� Comandos de aux��lio ao usu�ario

O MATLAB possui muito mais comandos do que aqueles apresentados neste texto� o quetorna mais dif��cil lembr�a�los� Com o intuito de auxiliar o usu�ario na procura de comandos� oMATLAB prov�e assist�encia por interm�edio de suas extensivas capacidades de aux��lio direto�Estas capacidades est ao dispon��veis em tr�es formas� o comando help� o comando lookfor einterativamente por meio de um menu de barras� no caso de vers ao para ambiente Windowse Macintosh�

Page 11: Tutorial de matlab (em português)

���� Comandos de aux��lio ao usu�ario �

����� Comando help

O comando help �e a maneira mais simples de obter aux��lio no caso de se conhecer o t�opicoem que se quer assist�encia� Sua sintaxe �e

help t�opico�

onde t�opico� �e o nome da fun�c ao ou de diret�orio� Por exemplo�

�� help sqrt

SQRT Square root�

SQRTX� is the square root of the elements of X� Complex

results are produced if X is not positive�

See also SQRTM�

Assim s ao produzidas informa�c oes sobre a fun�c ao sqrt para extrair raiz quadrada� O co�mando help funciona a contento quando se conhece exatamente o t�opico sobre o qual sequer assist�encia� Considerando que muitas vezes este n ao �e o caso� o help pode ser usadosem t�opico� para listar todos os t�opicos de aux��lio prim�ario

�� help

HELP topics�

matlab�general � General purpose commands�

matlab�ops � Operators and special characters�

matlab�lang � Programming language constructs�

matlab�elmat � Elementary matrices and matrix manipulation�

matlab�elfun � Elementary math functions�

matlab�specfun � Specialized math functions�

matlab�matfun � Matrix functions � numerical linear algebra�

matlab�datafun � Data analysis and Fourier transforms�

matlab�polyfun � Interpolation and polynomials�

matlab�funfun � Function functions and ODE solvers�

matlab�sparfun � Sparse matrices�

matlab�graph d � Two dimensional graphs�

matlab�graph�d � Three dimensional graphs�

matlab�specgraph � Specialized graphs�

matlab�graphics � Handle Graphics�

matlab�uitools � Graphical user interface tools�

matlab�strfun � Character strings�

matlab�iofun � File input�output�

matlab�timefun � Time and dates�

matlab�datatypes � Data types and structures�

matlab�demos � Examples and demonstrations�

For more help on directory�topic� type �help topic��

�E importante notar que os t�opicos listados ir ao depender da instala�c ao do MATLAB em umdado computador� Estes t�opicos podem variar de acordo com esta instala�c ao� Por exemplo�para obter aux��lio sobre as fun�c oes matem�aticas especializadas

Page 12: Tutorial de matlab (em português)

� Cap��tulo �� Ambiente de programa�c�ao

�� help specfun

Specialized math functions�

Specialized math functions�

airy � Airy functions�

besselj � Bessel function of the first kind�

bessely � Bessel function of the second kind�

besselh � Bessel functions of the third kind Hankel function��

besseli � Modified Bessel function of the first kind�

besselk � Modified Bessel function of the second kind�

beta � Beta function�

betainc � Incomplete beta function�

betaln � Logarithm of beta function�

ellipj � Jacobi elliptic functions�

ellipke � Complete elliptic integral�

erf � Error function�

erfc � Complementary error function�

erfcx � Scaled complementary error function�

erfinv � Inverse error function�

expint � Exponential integral function�

gamma � Gamma function�

gammainc � Incomplete gamma function�

gammaln � Logarithm of gamma function�

legendre � Associated Legendre function�

cross � Vector cross product�

Number theoretic functions�

factor � Prime factors�

isprime � True for prime numbers�

primes � Generate list of prime numbers�

gcd � Greatest common divisor�

lcm � Least common multiple�

rat � Rational approximation�

rats � Rational output�

perms � All possible permutations�

nchoosek � All combinations of N elements taken K at a time�

factorial � Factorial function�

Coordinate transforms�

cart sph � Transform Cartesian to spherical coordinates�

cart pol � Transform Cartesian to polar coordinates�

pol cart � Transform polar to Cartesian coordinates�

sph cart � Transform spherical to Cartesian coordinates�

hsv rgb � Convert hue�saturation�value colors to red�green�blue�

rgb hsv � Convert red�green�blue colors to hue�saturation�value�

Page 13: Tutorial de matlab (em português)

��� Exerc��cios �

O comando help �e mais conveniente se o usu�ario conhecer exatamente o t�opico em quedeseja aux��lio� No caso de n ao saber soletrar ou mesmo desconhecer um t�opico as outrasduas formas de assist�encia s ao muitas vezes mais produtivas�

����� Comando lookfor

O comando lookfor prov�e assist�encia pela procura em todas as primeiras linhas dos t�opicosde aux��lio do MATLAB e retornando aquelas que contenham a palavra�chave especi�cada�O mais importante �e que a palavra�chave n ao precisa ser um comando do MATLAB� Suasintaxe �e

lookfor palavra�chave�

onde palavra�chave� �e a cadeia de caracteres que ser�a procurada nos comandos do MA�TLAB� Por exemplo� para informa�c oes sobre matriz identidade

�� lookfor identity

EYE Identity matrix�

SPEYE Sparse identity matrix�

Apesar da palavra identity n ao ser um comando do MATLAB� ela foi encontrada nadescri�c ao de dois comandos� para uma dada instala�c ao� Tendo esta informa�c ao� o comandohelp pode ser usado para exibir informa�c oes a respeito de um comando espec���co� como porexemplo

�� help eye

EYE Identity matrix�

EYEN� is the N�by�N identity matrix�

EYEM�N� or EYE�M�N�� is an M�by�N matrix with ��s on

the diagonal and zeros elsewhere�

EYESIZEA�� is the same size as A�

See also ONES� ZEROS� RAND� RANDN�

Em um PC� um aux��lio por interm�edio de menu�dirigido �e dispon��vel selecionando Table ofContents ou Index no menu Help� Como o uso desta forma de assist�encia �e bem intuitivo�o melhor a fazer �e experimentar�

�� Exerc��cios

Se�c�ao � �

���� Executar o programa MATLAB�

���� Veri�car a diferen�ca entre � e � nos comandos pi��� pi��� e pi��� pi�����

���� Testar o funcionamento das teclas � e ��

Page 14: Tutorial de matlab (em português)

� Cap��tulo �� Ambiente de programa�c�ao

���� Ver o funcionamento das teclas � e ��

���� Veri�car a diferen�ca entre more ��� more off e more on�

Se�c�ao � �

���� Quantos par�ametros tem a fun�c ao erro erf�

���� Quais s ao os comandos utilizados para interpola�c ao�

��� Qual o comando usado para calcular o determinante �determinant� de uma matriz�

���� Qual o comando para achar raiz �root� de uma equa�c ao polinomial�

���� Comparar a soma dos autovalores �eigenvalues� com o tra�co �trace� de uma matriz dePascal de ordem qualquer� Fazer a mesma compara�c ao usando uma matriz com elementosaleat�orios�

Page 15: Tutorial de matlab (em português)

Cap��tulo �

Elementos fundamentais

Neste cap��tulo ser ao apresentados alguns��tens b�asicos� como constantes� vari�aveis� express oese gr�a�cos� o que tornar�a poss��vel o uso imediato do MATLAB no modo interativo� Al�emdisto� estes elementos s ao fundamentais para a elabora�c ao de programas�

��� Constantes e vari�aveis

Uma constante num�erica no MATLAB �e formada por uma seq�u�encia de d��gitos que podeestar ou n ao precedida de um sinal positivo ��� ou um negativo ��� e pode conter um pontodecimal ���� Esta seq�u�encia pode terminar ou n ao por uma das letras e� E� d ou D seguida deoutra seq�u�encia de d��gitos precedida ou n ao de um sinal positivo ��� ou um negativo ���� Estasegunda seq�u�encia �e a pot�encia de � pela qual a primeira seq�u�encia deve ser multiplicada�Por exemplo� �� �e�� signi�ca ���� e �����d �e ������

Em modo interativo� o MATLAB �e um interpretador de express oes� A express ao fornecida�e analisada sintaticamente e se estiver correta ser�a avaliada� O resultado pode ser atribu��do�a uma vari�avel por interm�edio do sinal ���� ou seja�

vari�avel��express�ao�

Por exemplo

�� g��������

g �

�������

Se o nome da vari�avel e o sinal de atribui�c ao ��� forem omitidos ent ao o resultado ser�a dado�a vari�avel default ans�

�� ���

ans �

������

Na se�c ao ��� ser ao apresentados os tipos de express oes poss��veis no MATLAB� Como qualqueroutra linguagem de programa�c ao� o MATLAB tem regras a respeito do nome de vari�aveis�conforme mostrado na tabela ����

Page 16: Tutorial de matlab (em português)

Cap��tulo �� Elementos fundamentais

regra sobre nome de vari�avel coment�ario

conter at�e �� caracteres caracteres al�em do ��o s ao ignorados�come�car com letra seguida deletras� n�umeros ou � �

caracteres de pontua�c ao n ao s ao permitidos�

Tamanho da letra �e diferenciador raiz� Raiz e RAIZ s ao vari�aveis distintas�

Tabela ���� Regras para nomes de vari�aveis�

Algumas linguagens de programa�c ao requerem um tratamento especial para n�umeros com�plexos� o que n ao �e o caso do MATLAB� Opera�c oes matem�aticas com n�umeros complexoss ao escritas do mesmo modo como para n�umeros reais�

�� a��� i

a �

������ � �����i

�� b����j

b �

������ � ������i

Note que i e j s ao usados para indicar a parte imagin�aria do n�umero complexo� As vari�aveisreais e complexas em MATLAB ocupam e �� bytes de mem�oria� respectivamente�

����� Arranjos

Um arranjo ou vetor �e um conjunto de vari�aveis homog�eneas �conte�udo de mesmo tipo�identi�cadas por um mesmo nome e individualizadas por meio de ��ndices� No MATLAB oarranjo pode ser de�nido elemento por elemento�

a � � a�� a�� ��� � an �

separados por espa�co em branco ou v��rgula�

�� a��� ���������

a �

������ ������ �������

O vetor a possui os elementos a����� a ����� e a�������� Se os valores do arranjoforem igualmente espa�cados ele pode ser de�nido por interm�edio da express ao

b � valor inicial��incremento��valor final�

Para gerar um vetor com o primeiro elemento igual a �� o segundo igual a ��� o terceiroigual a � e assim sucessivamente at�e o �ultimo igual a � basta de�nir

�� b��������

b �

�� �� � � �� �� ��

Se o incremento desejado for igual a � ent ao ele poder�a ser omitido

�� u���

u �

� � � �

Page 17: Tutorial de matlab (em português)

���� Constantes e vari�aveis �

Ao inv�es de usar incremento� um arranjo pode tamb�em ser constru��do de�nindo o n�umerodesejado de elementos na fun�c ao linspace� cuja sintaxe �e

linspacevalor inicial��valor final��n�umero de elementos��

Assim� para criar um arranjo com o primerio elemento igual a �� o �ultimo igual a � epossuindo � elementos�

�� c�linspace��������

c �

�� �� � � �� �� ��

Isto produz um vetor id�entico a b�������� de�nido acima� Se no comando linspace opar�ametro n�umero de elementos� for omitido ent ao ser ao gerados � pontos� Os elemen�tos tamb�em podem ser acessados individualmente�

�� c � � segundo elemento de c

ans �

��

ou em blocos usando os comandos de de�ni�c ao de arranjos

�� c���� � terceiro ao quinto elemento

ans �

� � ��

Lembrando que ��� �� gera a seq�u�encia �� �� �� ent ao

�� c��� ��� � quinto� terceiro e primeiro elementos

ans �

�� � ��

O endere�camento indireto �e tamb�em poss��vel� permitindo referenciar os elementos em qual�quer ordem

�� c�� ��� � quarto e primeiro elementos

ans �

� ��

Nos exemplos acima os arranjos possuem uma linha e v�arias colunas� por isto s ao tamb�emchamados vetores linha� Do mesmo modo� podem existir vetores coluna� ou seja� arranjoscom v�arias linhas e uma �unica coluna� Para criar um vetor coluna elemento por elementoestes devem estar separados por ���

v � � v�� v�� ��� � vn �

Deste modo� para gerar um vetor coluna com os elementos ���� ��� � ��� �

�� v��������� ���� �

v �

������

��� ���

��� ���

Page 18: Tutorial de matlab (em português)

� Cap��tulo �� Elementos fundamentais

Por isto� separando os elementos de um arranjo por brancos ou v��rgulas s ao especi�cadosos elementos em diferentes colunas �vetor linha�� Por outro lado� separando os elementospor ponto�e�v��rgula especi�ca�se os elementos em diferentes linhas �vetor coluna�� Paratransformar um vetor linha em vetor coluna e vice�versa� o operador de transposi�c ao ��� �eusado

�� x�v�

x �

������ ��� ��� ��� ���

�� y������

y �

No caso do vetor ser complexo o operador de transposi�c ao ���� deve ser usado para obtera transposi�c ao pois o uso do operador ��� resultar�a em um complexo conjugado transposto�Por exemplo� seja o vetor complexo

�� z�������������������i

z �

������ � ������i ����� � �� ���i ������ � ������i

o transposto �e

�� t�z��

t �

������ � ������i

����� � �� ���i

������ � ������i

e o complexo conjugado transposto

�� cc�z�

cc �

������ � ������i

����� � �� ���i

������ � ������i

Assim� no caso do vetor n ao ser complexo a transposi�c ao pode ser feita usando ��� ou �����A fun�c ao length deve ser usada para saber o comprimento de um vetor

�� l�lengthz�

l �

����� Matrizes

As matrizes s ao arranjos bidimensionais e constituem as estruturas fundamentais doMATLAB e por isto existem v�arias maneiras de manipul�a�las� Uma vez de�nidas� elaspodem ser modi�cadas de v�arias formas� como por inser�c ao� extra�c ao e rearranjo�

Page 19: Tutorial de matlab (em português)

���� Constantes e vari�aveis ��

Similarmente aos vetores� para construir uma matriz os elementos de uma mesma linhadevem estar separados por branco ou v��rgula e as linhas separadas por ponto�e�v��rgula ouEnter �ou Return��

A � � a�� a�� ��� a�n� a�� a�� ��� a�n� ��� � am� am� ��� amn �

Para criar uma matriz A com � linhas e � colunas

�� A��� ��� � � �

A �

� ��

� �

Para modi�car um elemento basta atribuir�lhe um novo valor�

�� A�� ���

A �

� � ��

� �

Se for atribu��do um valor a um elemento n ao existente� ou seja� al�em dos elementos da matrizent ao o MATLAB aumenta esta matriz automaticamente preenchendo�a com valores nulosde forma a matriz permanecer retangular

�� A������

A �

� � �� � � �

� � � � �

� � � � � �

Seja agora a matriz quadrada B de ordem �

�� B��� �� � � �� � � �

B �

� �

� � �

� �

De modo similar aos arranjos� os elementos de uma matriz podem ser referenciados indivi�dualmente� tal como

�� B ���

ans �

ou em conjuntos� neste caso usando a nota�c ao de arranjo� Por exemplo� os elementos daslinhas � e � e coluna ��

�� B�� ��� �

ans �

A nota�c ao de vetor� valor inicial��incremento��valor final�� tamb�em pode serusada ou at�e mesmo linspace� Lembrando que ������ gera a seq�u�encia �� � � e ���

produz �� � �� ent ao o comando

Page 20: Tutorial de matlab (em português)

�� Cap��tulo �� Elementos fundamentais

�� C�B�����������

C �

� �

� � �

� �

cria uma matriz C a partir das linhas �� � e � e colunas �� � e � de B� ou seja� cria uma matrizC a partir das linhas de B em ordem contr�aria�

Considerando que s ao referenciadas todas as � colunas de B� a nota�c ao simpli�cada ��� podeser igualmente usada ao inv�es de ���

�� C�B���������

C �

� �

� � �

� �

Para criar uma matriz D a partir das linhas � e � e colunas � e � de B� faz�se

�� D�B�� ��� ���

D �

� �

� �

Para construir uma matriz E a partir da matriz B seguida da coluna � de C seguida ainda de� coluna com os elementos iguais a �

�� E��B C�� � � ���

E �

� � �

� � � �

� �

Para remover uma linha ou coluna de uma matriz usa�se a matriz vazia ��� Para remover acoluna � de E

�� E�������

E �

� �

� � �

� �

E posteriormente para remover a linha �

�� E�������

E �

� � �

� �

A fun�c ao size �e usada para fornecer o n�umero de linhas e colunas de uma matriz� Ela podeser usada de duas formas�

�� t�sizeE�

t �

Page 21: Tutorial de matlab (em português)

���� Constantes e vari�aveis ��

onde a vari�avel t �e um vetor linha com duas posi�c oes� contendo o n�umero de linhas e colunasde E� respectivamente� A outra forma �e

�� �l�c��sizeE�

l �

c �

onde as vari�aveis simples l e c cont�em o n�umero de linhas e colunas de E� respectivamente�Se a fun�c ao length for usada em uma matriz ela fornecer�a o maior valor entre n�umero delinhas e colunas

�� c�lengthE�

c �

OMATLAB tem fun�c oes que se aplicam individualmente �a cada coluna da matriz produzindoum vetor linha com elementos correspondentes ao resultado de cada coluna� Se a fun�c ao foraplicada �a transposta da matriz ter�se� ao resultados relativos �a cada linha da matriz� Se oargumento da fun�c ao for um vetor ao inv�es de uma matriz ent ao o resultado ser�a um escalar�Algumas destas fun�c oes s ao mostradas na tabela ����

fun�c ao descri�c ao

sum soma dos elementosprod produto dos elementosmean m�edia aritm�eticastd desvio padr aomax maior elementomin menor elementosort ordena�c ao em ordem crescente

Tabela ���� Exemplos de fun�c oes do MATLAB�

Seja um quadrado m�agico que �e uma matriz de ordem n� n � � com valores entre � e n� talque a soma das linhas� colunas e diagonal s ao iguais

�� A�magic��

A �

�� � ��

� �� �� �

� � �

� �� �� �

�� sumA�

ans �

�� �� �� ��

�� prodA�

ans �

��� ��� ��� � ��

Page 22: Tutorial de matlab (em português)

�� Cap��tulo �� Elementos fundamentais

�� meanA�

ans �

������ ������ ������ ������

�� stdA�

ans �

������ ��� � ��� � ������

�� maxA�

ans �

�� �� �� ��

�� maxmaxA�� � maior elemento da matriz

ans �

��

�� minA�

ans �

� � �

�� sortA�

ans �

� � �

� � � �

�� �� �

�� �� �� ��

O MATLAB possui tamb�em v�arias fun�c oes para manipula�c ao de matrizes dentre as quaisdestacam�se aquelas mostradas na tabela ����

fun�c ao descri�c ao

diag se o argumento for um vetor ent ao cria uma matriz diagonal comos elementos do vetor� se o argumento for uma matriz ent ao produzum vetor coluna contendo os elementos da diagonal�

tril obt�em a parte triangular inferior de uma matriz�triu obt�em a parte triangular superior de uma matriz�

Tabela ���� Algumas fun�c oes para opera�c oes de matrizes�

Para a matriz A dada acima

�� d�diagA�

d �

��

��

�� D�diagd�

D �

�� � � �

� �� � �

� � � �

� � � �

Page 23: Tutorial de matlab (em português)

���� Constantes e vari�aveis ��

�� L�trilA�

L �

�� � � �

� �� � �

� � �

� �� �� �

�� U�triuA�

U �

�� � ��

� �� �� �

� � � �

� � � �

O MATLAB fornece v�arias matrizes elementares de grande utilidade� como as mostradas natabela ���� Se um �unico par�ametro for provido ent ao a matriz ser�a quadrada de ordem igualao valor do par�ametro� Se forem dois par�ametros ent ao ela ser�a retangular com as dimens oesiguais aos valores destes par�ametros�

fun�c ao descri�c ao da matriz

zeros nula�ones elementos iguais a ��eye identidade ou parte dela�rand elementos aleat�orios uniformemente distribuidos entre e ��randn elementos aleat�orios com distribui�c ao normal com m�edia e desvio

padr ao ��

Tabela ���� Algumas matrizes elementares do MATLAB�

Por exemplo�

�� Z�zeros �

Z �

� �

� �

�� U�ones ���

U �

� � �

� � �

�� I�eye ���

I �

� � � �

� � � �

�� R�rand��

R �

�� ��� ������ ������

�� ��� ��� �� ������

������ ���� � ��� ��

�� N�randn����

Page 24: Tutorial de matlab (em português)

�� Cap��tulo �� Elementos fundamentais

N �

����� � �� ��� ���� ������ �������

������� ������� ������� ������� ����

��� �� ��� � ��� �� ��� �� �������

As fun�c oes rand e randn produzem n�umeros pseudo�aleat�orios e a seq�u�encia gerada �e de�terminada pelo estado do gerador� Quando o MATLAB �e ativado� �e atribu��do um mesmovalor inicial ao estado� e portanto� a seq�u�encia de n�umeros gerados ser�a a mesma� a n ao serque o estado seja mudado� Para colocar o gerador no estado inicial quando estas fun�c oes j�ativerem sido executadas usa�se

�� rand�state����

�� randn�state����

����� Vari�aveis literais

Uma vari�avel pode conter uma cadeia de caracteres ao inv�es de um n�umero� Estes caracteress ao manipulados iguais aos vetores linha� A cadeia de caracteres deve estar delimitada porap�ostrofos para ser atribuida a uma vari�avel literal� Assim�

�� a��MATLAB�� b��cadeia de caracteres�

a �

MATLAB

b �

cadeia de caracteres

Para obter os caracteres das posi�c oes �� � e � da vari�avel a�

�� c�a����

c �

LAB

Os caracteres podem ser concatenados

�� d��a � manipula � b�

d �

MATLAB manipula cadeia de caracteres

As cadeias de caracteres contendo mais de uma linha devem ter o mesmo n�umero de colunascomo acontece com as matrizes�

�� e���O MATLAB�

�permite �

�matrizes�

�literais��

e �

O MATLAB

permite

matrizes

literais

����� Vari�aveis especiais

O MATLAB tem diversas vari�aveis especiais� as quais est ao listadas na tabela ���� Comexcess ao de ans� estas vari�aveis n ao devem ser rede�nidas� Para mais informa�c oes sobrematrizes e outras vari�aveis use help elmat�

Page 25: Tutorial de matlab (em português)

���� Express�oes ��

vari�avel valor

ans nome de vari�avel default usado para resultados�pi � � �� �����eps menor n�umero tal que quando adicionado a � cria um n�umero de

ponto �utuante maior que �� Seu valor �e eps � ���� � ����������em computadores com aritm�etica de ponto �utuante IEEE�

inf in�nito� por exemplo� ���NaN n ao �e um n�umero �Not�a�Number�� por exemplo� ��i e j i � j �

p���realmin menor n�umero positivo de ponto �utuante em um computador

particular� Em m�aquinas com formato de ponto �utuante IEEErealmin � �������������

realmax maior n�umero de ponto �utuante represent�avel em um computadorparticular� Em m�aquinas com formato de ponto �utuante IEEErealmax � ������������

Tabela ���� Vari�aveis especiais do MATLAB�

��� Expressoes

Uma express ao �e uma combina�c ao de constantes� vari�aveis e operadores� cuja avalia�c aoresulta em um valor �unico� O MATLAB possui tr�es tipos de express oes� aritm�eticas� l�ogicase literais�

����� Expressoes aritm�eticas

�E dispon��vel no MATLAB as opera�c oes aritm�eticas b�asicas mostradas na tabela ����

opera�c ao express ao operador exemplo

adi�c ao a b � ��

subtra�c ao a� b � �������

multiplica�c ao a� b � �� � �

divis ao a b � ou ! ��� �!�

potencia�c ao ab " "��

Tabela ���� Opera�c oes aritm�eticas b�asicas do MATLAB�

As express oes s ao avaliadas da esquerda para a direita� tendo a potencia�c ao maior ordem depreced�encia� seguida pela multiplica�c ao e divis ao �ambas tendo igual preced�encia� e seguidapela adi�c ao e subtra�c ao �com igual preced�encia�� Os par�enteses podem ser usados paraalterarem a ordem de preced�encia�

As opera�c oes b�asicas entre vetores s�o s ao de�nidas quando estes tiverem o mesmo tamanhoe orienta�c ao �linha ou coluna�� Estas opera�c oes b�asicas s ao apresentadas na tabela ����As opera�c oes de multiplica�c ao� divis ao e potencia�c ao envolvendo vetores s ao antecedidaspelo caracter ���� o que signi�ca que estas opera�c oes s ao efetuadas elemento por elemento�Considere

Page 26: Tutorial de matlab (em português)

� Cap��tulo �� Elementos fundamentais

Seja a � � a� a� ���an �� b � � b� b� ���bn � e c um escalar

opera�c ao express ao resultado

adi�c ao escalar a�c � a� c a� c ��� an c �

adi�c ao vetorial a�b � a� b� a� b� ��� an bn �

multiplica�c ao escalar a�c � a�c a�c ��� anc �multiplica�c ao vetorial a��b � a�b� a�b� ��� anbn �

divis ao �a direita a��b � a��b� a��b� ��� an�bn �

divis ao �a esquerda a�!b � b��a� b��a� ��� bn�an �

potencia�c ao a�"c � a�"c a�"c ��� an"c �

c�"a � c"a� c"a� ��� c"an �

a�"b � a�"b� a�"b� ��� an"bn �

Tabela ���� Opera�c oes vetoriais b�asicas�

�� a����� b���������� c�

a �

� � � �

b �

�� � �� �� ��

c �

�� a�c

ans �

� � � � �

�� a�b

ans �

�� �� �� ��

�� a��b

ans �

������ ������ ������ ������ ������

�� a�"c

ans �

� � �� �

�� c�"a

ans �

� � �� �

De modo similar �as opera�c oes vetorias� existem as opera�c oes matriciais b�asicas� as quaisest ao compiladas na tabela ���

O operador ! envolvendo matrizes e vetores est�a relacionado com solu�c ao de sistemas lineares�conforme ser�a visto na se�c ao ������ Sejam as matrizes A e B de ordem � e o escalar c

�� A��� �� � � �� � � �� B���� � ��� �� �� ��� �� �� � �� c��

A �

� �

Page 27: Tutorial de matlab (em português)

���� Express�oes ��

Seja c um escalar e

A � � a�� a�� ��� a�n� a�� a�� ��� a�n� ��� � am� am� ��� amn �

B � � b�� b�� ��� b�n� b�� b�� ��� b�n� ��� � bm� bm� ��� bmn �

opera�c ao express ao resultado

adi�c ao escalar A�c aij c

adi�c ao matricial A�B aij bij

multiplica�c ao escalar A�c aij cmultiplica�c ao por elemento A��B aij bijmultiplica�c ao matricial A�B AB

divis ao por elemento A��B aij�bij

divis ao �a esquerda A�!B bij�aij

potencia�c ao A�"c acijA"c Ac

c�"A caij

c"A cA

A�"B abijij

Tabela ��� Opera�c oes matriciais b�asicas�

� � �

� �

B �

�� � ��

�� �� ��

�� �� �

c �

�� A�c

ans �

� � �

� �

�� �� �

�� A�B

ans �

� �� ��

�� �

� � �

�� A�c

ans �

� �

� �� ��

� � �

A diferen�ca no resultado das express oes quando os operadores cont�em o caracter ��� deveser observada� Na multiplica�c ao�

Page 28: Tutorial de matlab (em português)

� Cap��tulo �� Elementos fundamentais

�� A��B � multiplicacao de matriz elemento a elemento

ans �

�� � �

�� �� �

�� ��� ���

�� A�B � multiplicacao matricial ordinaria

ans �

� � ��

�� �� ��

�� ��� � �

E na potencia�c ao�

�� A�"c � elemento de uma matriz elevado a uma constante

ans �

� � �

�� � � ��

��� �� �

�� A"c � multiplicacao sucessiva de matriz A"� � A�A�A �

ans �

��� ��� ���

��� ���� ����

���� ��� ��

�� c�"A � constante elevada a elemento da matriz

ans �

� �

�� �� �

��� ���� � ���

Como pode ser esperado de uma linguagem para aplica�c oes nas �areas t�ecnicas e cient���cas�o MATLAB oferece v�arias fun�c oes importantes para matem�atica� ci�encia e engenharia� Atabela ��� apresenta algumas fun�c oes matem�aticas elementares do MATLAB� e uma listamais completa pode ser obtida usando o comando help elfun� As fun�c oes matem�aticasespecializadas podem ser listadas usando help specfun�

Se a vari�avel for um vetor ou uma matriz a avalia�c ao de uma fun�c ao se d�a para cada elementoda vari�avel

�� a����

a �

� � � �

�� b�sqrta�

b �

������ ����� ���� � ����� � ���

Os resultados acima podem ser apresentados na forma de uma tabela por interm�edio docomando

�� �a�b��

ans �

Page 29: Tutorial de matlab (em português)

���� Express�oes ��

fun�c ao descri�c ao fun�c ao descri�c ao

trigonom�etricasacos arco co�seno cos co�senoacosh arco co�seno hiperb�olico cosh co�seno hiperb�olicoacot arco co�tangente cot co�tangenteacoth arco co�tangente hiperb�olica coth co�tangente hiperb�olicaacsc arco co�secante csc co�secanteacsch arco co�secante hiperb�olica csch co�secante hiperb�olicaasec arco secante sec secanteasech arco secante hiperb�olica sech secante hiperb�olicaasin arco seno sin senoasinh arco seno hiperb�olico sinh seno hiperb�olicoatan arco tangente tan tangenteatanh arco tangente hiperb�olica tanh tangente hiperb�olicaatan arco tangente de � quadrantes

exponenciaisexp exponencial log�� logaritmo decimallog logaritmo natural sqrt raiz quadrada

complexasabs valor absoluto imag parte imagin�aria do complexoangle �angulo de fase real parte real do complexoconj complexo conjugado

num�ericasceil arredonda em dire�c ao a � lcm m��nimo m�ultiplo comumfix arredonda em dire�c ao a rem resto de divis aofloor arredonda em dire�c ao a �� round arredonda em dire�c ao ao intei�

ro mais pr�oximogcd m�aximo divisor comum sign sinal

Tabela ���� Fun�c oes matem�aticas elementares�

������ ������

����� �����

������ ���� �

������ �����

������ � ���

����� Expressoes l�ogicas

Uma express ao se diz l�ogica quando os operadores s ao l�ogicos e os operandos s ao rela�c oese�ou vari�aveis do tipo l�ogico� Uma rela�c ao �e uma compara�c ao realizada entre valores domesmo tipo� A natureza da compara�c ao �e indicada por um operador relacional conforme atabela ����

O resultado de uma rela�c ao ou de uma express ao l�ogica �e verdadeiro ou falso� contudo noMATLAB o resultado �e num�erico� sendo que � signi�ca verdadeiro e � signi�ca falso� Noteque ��� �e usado para atribui�c ao de um valor a uma vari�avel enquanto que ���� �e usado paracompara�c ao de igualdade� No MATLAB os operadores relacionais podem ser usados paracomparar vetores do mesmo tamanho ou comparar um escalar com os elementos de um vetor�Em ambos os casos o resultado ser�a um vetor de mesmo tamanho� Sejam os vetores a e b eo escalar c

Page 30: Tutorial de matlab (em português)

�� Cap��tulo �� Elementos fundamentais

operador relacional descri�c ao

� maior que�� maior ou igual a menor que� menor ou igual a�� igual a�� diferente de

Tabela ���� Operadores relacionais do MATLAB�

�� a������ b� ������ c��

a �

� � � � � � � ��

b �

� � � � � � � �

c �

Assim

�� d�a��c

d �

� � � � � � � � � �

produz um vetor que cont�em o valor � �verdadeiro� quando o elemento correspondente dovetor a for maior ou igual a �� caso contr�ario cont�em o valor � �falso�� Como no MATLABo resultado da rela�c ao l�ogica �e um valor num�erico� este pode fazer parte de uma express aoaritm�etica

�� e�a�b���

e �

� � � � � � �� ��

Portanto� quando um elemento de b for menor ou igual a �� o valor � �resultado da rela�c aol�ogica� �e adicionado ao correspondente valor de a�

Os operadores l�ogicos permitem a combina�c ao ou nega�c ao das rela�c oes l�ogicas� Os operadoresl�ogicos do MATLAB s ao listados na tabela �����

operador l�ogico descri�c ao uso

# e conjun�c ao$ ou disjun�c ao� n�ao nega�c ao

Tabela ����� Operadores l�ogicos do MATLAB�

Para os vetores a e b de�nidos anteriormente

�� f�a���#a���

f �

� � � � � � � � � �

Page 31: Tutorial de matlab (em português)

���� Express�oes ��

Os elementos de f s ao iguais a � quando os correspondentes elementos de a forem maiores doque � e menores ou iguais a �� Para fazer a nega�c ao� ou seja� onde for � ser�a � e vice�versabasta

�� g��f

g �

� � � � � � � � � �

A ordem de preced�encia no MATLAB para express oes envolvendo operadores aritm�eticos el�ogicos s ao indicados na tabela �����

ordem de preced�encia operadores

�a " �" � ��

�a � � ! �� �� �!

�a � � � ��un�ario� ��un�ario��a � � �� � �� ��

�a $ #

Tabela ����� Ordem de preced�encia das opera�c oes aritm�eticas e l�ogicas�

Os par�enteses podem ser usados para alterarem a ordem de preced�encia� Assim� a avalia�c aoda express ao

�� h��a����" �� #��b���

h �

� � � � � � � � � �

�e equivalente �as v�arias etapas

�� h��a��

h� �

�� �� � �� � � � � �

�� h �h��"

h �

�� � � � � � �� �

�� h����b

h� �

� � � �� �� � � � �

�� h���h

h� �

��� � �� �� � �� �� � ��� � �

�� h��h���

h� �

� � � � � � � � � �

�� h��h����

h� �

� � � � � � � � � �

�� h�h�#h�

h �

� � � � � � � � � �

Page 32: Tutorial de matlab (em português)

�� Cap��tulo �� Elementos fundamentais

����� Expressoes literais

O MATLAB disp oe de v�arias fun�c oes para manipula�c ao de cadeia de caracteres conformepode ser obtido por help strfun� Algumas delas s ao mostradas a seguir� O comando n �

abss� retorna no vetor n os valores num�ericos dos caracteres ASCII �American Standard

Code for Information Interchange� contidos no vetor s de acordo com a tabela �����

representa�c ao decimal dos caracteres

�� % �� � �� �� E � Q �� � �� i ��� u

�� � �� � � � � F � R �� " �� j �� v

�� & �� � �� � �� G � S �� ' �� k ��� w

�� ( � � � �� H � T �� ) � l �� x

�� � �� � �� � �� I � U �� a �� m ��� y

� # � �� � �� J � V � b �� n ��� z

�� � �� � �� * �� K � W �� c ��� o ��� +

� �� � �� � �� L X � d ��� p ��� $

�� � �� � �� A �� M � Y �� e ��� q ��� ,

�� � �� � �� B � N � Z �� f ��� r ��� �

�� � �� � �� C �� O �� � �� g ��� s

�� � �� � � D P �� ! �� h ��� t

Tabela ����� Caracteres em c�odigo ASCII�

Por exemplo� para o vetor s de tamanho ��

�� s � ����i�

s �

���i

�� n � abss�

n �

�� �� �� ���

De modo contr�ario� c � setstrm� constr�oi a cadeia de caracteres c a partir do vetornum�erico m� Este comando �e particularmente �util para escrever textos em portugu�es �vertabela ������

�� m � � �� ��� ��� �� � ��� �

m �

�� ��� ��� �� � ���

�� c � setstrm�

c �

Fun-c�ao

ou de um modo mais simples

�� d � ��N��setstr �����mero��

d �

Page 33: Tutorial de matlab (em português)

��� Gr�acos ��

representa�c ao decimal dos caracteres

��� .A � .E � D� ��� / ��� .a ��� .e �� ��

�� 0

��� �A �� �E �� �N ��� .U ��� �a ��� �e ��� �n ��� .u

��� "A �� "E �� .O �� �U ��� "a ��� "e ��� .o �� �u

��� �A �� 1E ��� �O ��� "U ��� �a ��� 1e ��� �o ��� "u

��� 1A �� .I ��� "O �� 1U �� 1a ��� .2 ��� "o ��� 1u

��� 3A �� �I ��� �O ��� �Y ��� 3a ��� �2 ��� �o ��� �y

�� 4 �� "I ��� 1O ��� �� 5 �� "2 ��� 1o ���

��� C- �� 1I ��� � ��� 6 ��� -c ��� 12 ��� ��� 1y

Tabela ����� Caracteres em c�odigo ASCII extendido do MATLAB�

N�umero

A fun�c ao str num�cadeia de caracteres��� converte a representa�c ao do valor num�ericoda cadeia de caracteres� escrita em c�odigo ASCII para a representa�c ao num�erica� Acadeia de caracteres� deve estar escrita de acordo com as regras de de�ni�c ao de cons�tantes num�ericas vistas na se�c ao ���

�� x � str num��� �d ������e��i��

x �

�� ���e�� � ������e���i

com este valor num�erico �e poss��vel� por exemplo� extrair a raiz quadrada

�� y � sqrtx�

y �

���� �� � ��� ��i

Por outro lado� a fun�c ao t � num stra� converte o n�umero a para a sua representa�c aoem caracteres� Esta fun�c ao �e de grande utilidade quando da escrita de r�otulos e t��tulos emgr�a�cos �ver se�c ao �����

�� v � ����� ����

�� ��velocidade � ��num strv��� m�s��

ans �

velocidade � ������ m�s

O resultado de num str �e exibido normalmente com � d��gitos� Se um par�ametro extra fordado ent ao ele indicar�a o n�umero m�aximo de d��gitos a serem exibidos

�� num strv���

ans �

����� �

�� Gr�a�cos

Uma das grandes virtudes do MATLAB �e a facilidade que ele oferece para produzir gr�a�cosde boa qualidade� Nesta se�c ao ser ao vistos como gerar gr�a�cos bi e tridimensionais e osmodos de grav�a�los em arquivos para que possam ser inclu��dos em textos�

Page 34: Tutorial de matlab (em português)

�� Cap��tulo �� Elementos fundamentais

����� Gr�acos bidimensionais

Para gerar gr�a�cos bidimensionais podem ser usados as vers�ateis fun�c oes plot e fplot�

Fun�c�ao plot

A sintaxe desta fun�c ao �e

plotx��y���tipo de linha ����x �y ��tipo de linha �������

onde x e y s ao vetores contendo as abscissas e ordenadas dos pontos a serem exibidos�respectivamente e tipo de linha� �e uma cadeia de � a � caracteres que especi�ca a cor eo estilo da linha� os quais s ao mostrados na tabela �����

s��mbolo cor s��mbolo estilo de linhay amarela � pontom lil�as o c��rculoc turquesa x marca xr vermelho � maisg verde � asteriscob azul � linha s�olidaw branco � linha pontilhadak preto �� linha de tra�co e ponto

�� linha tracejada

Tabela ����� Alguns tipos de linha da fun�c ao plot�

Considere os vetores

�� x � linspace���������

�� y � sinx��

�� z � cosx��

Para gerar um gr�a�co de sen�x� em fun�c ao de x basta

�� plotx�y�

O gr�a�co produzido �e mostrado na �gura ����a��

Tamb�em pode ser gerado um gr�a�co um pouco mais complexo� sen�x� e cos�x� em fun�c aode x com os valores de sen�x� sendo destacados com ��� e os de cos�x� com �o�� Para isto ocomando

�� plotx�y������x�z����o��

produz a �gura ����b�� O MATLAB oferece alguns comandos para identi�ca�c ao nos gr�a�cos�como os exibidos na tabela �����

Assim os comandos

�� xlabel�eixo x��

Page 35: Tutorial de matlab (em português)

��� Gr�acos ��

−8 −6 −4 −2 0 2 4 6 8−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

�a� f�x� � sen�x�

−8 −6 −4 −2 0 2 4 6 8−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

�b� f�x� � sen�x� e f�x� � cos�x�

Figura ���� Gr�a�cos produzidos pelo comando plot�

comando descri�c ao

xlabel�texto��� escreve texto� abaixo do eixo das abscissas�ylabel�texto��� escreve texto� ao lado do eixo das ordenadas�title�texto��� escreve texto� no alto da �gura�

textxi�yi��texto��� escreve texto� na posi�c ao xi�yi��gtext�texto��� escreve texto� na posi�c ao indicada pelo mouse�

Tabela ����� Fun�c oes para identi�ca�c ao de gr�a�cos�

�� ylabel�eixo y��

�� title��fun��setstr ����setstr �����es seno e co�seno���

Page 36: Tutorial de matlab (em português)

� Cap��tulo �� Elementos fundamentais

�� text���������cosx���

produzir ao os r�otulos e t��tulos no gr�a�co da �gura ����b�� como mostrado na �gura ����a��Note que a fun�c ao setstr foi usada para gerar os caracteres da l��ngua portuguesa mostradosna tabela ���� da p�agina ���

−8 −6 −4 −2 0 2 4 6 8−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

eixo x

eixo

yfunções seno e co−seno

cos(x)

�a� R�otulos e t��tulos

−8 −6 −4 −2 0 2 4 6 8−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

eixo x

eixo

y

funções seno e co−seno

cos(x)

sen(x)cos(x)

�b� Grade e legendas

Figura ���� Documenta�c ao de gr�a�cos�

O comando grid on faz com que apare�ca uma grade no gr�a�co produzido� Por sua vez gridoff faz com que a grade desapare�ca� O uso de grid sem argumento altera o estado� isto �e�se n ao houver grade ent ao grid ser�a equivalente �a grid on e se houver grid far�a com quea grade desapare�ca� O comando legend�texto �����texto ������� adiciona uma

Page 37: Tutorial de matlab (em português)

��� Gr�acos ��

caixa de legendas ao esbo�co da �gura atual� usando as cadeias de caracteres texto� comor�otulos� Para mover a caixa de legendas basta pressionar o bot ao esquerdo do mouse sobreela e coloc�a�la na posi�c ao desejada� A �gura ����b� mostra o efeito dos comandos

�� grid on

�� legend�senx����cosx���

Para mais informa�c oes sobre o uso de plot e das fun�c oes relacionadas use o comando help�

Fun�c�ao fplot

O comando fplot�fun-c�ao����Xmin Xmax�� faz com que a fun�c ao especi�cada pela cadeiade caracteres �fun-c�ao�� seja esbo�cada no intervalo Xmin � x � Xmax� Os comandos

�� fplot�sinx��x���� � ���� grid on

�� xlabel�x��� ylabel�fx���� title�fx��senx��x��

produzem o gr�a�co mostrado na �gura ����a�� Para que a fun�c ao especi�cada pela cadeia decaracteres �fun-c�ao�� seja esbo�cada somente para Xmin � x � Xmax e Ymin � f�x� � Ymax

deve ser usado o comando fplot�fun-c�ao����Xmin Xmax Ymin Ymax��� Deste modo� oscomandos abaixo geram o gr�a�co da �gura ����b��

�� fplot�sinx��x������ �� ��� ����� grid on

�� xlabel�x��� ylabel�fx���� title�fx��senx��x��

Para mais informa�c oes sobre os comandos para manipula�c ao de gr�a�cos bidimensionais usehelp graph d�

����� Gr�acos tridimensionais

De uma maneira similar aos gr�a�cos bidimensionais� o MATLAB possui v�arios comandospara que gr�a�cos tridimensionais sejam tamb�em facilmente esbo�cados� Ser ao descritas a se�guir� de modo sucinto� algumas fun�c oes com esta �nalidade� Portanto� para mais informa�c oessobre essas fun�c oes deve ser utilizado o comando help graph�d�

Fun�c�ao meshgrid

O comando �X�Y��meshgridx�y� transforma o dom��nio especi�cado pelos vetores x e y emmatrizes X e Y que podem ser usadas para avaliar fun�c oes de duas vari�aveis e fazer esbo�costridimensionais de malhas e superf��cies� As linhas da matriz X s ao c�opias do vetor x e ascolunas da matriz Y s ao c�opias do vetor y

�� x � �������

x �

������� ������� � ������ ������ ������ �����

�� y � ��������

y �

������� ������� � ������ ������

�� �X�Y� � meshgridx�y�

X �

������� ������� � ������ ������ ������ �����

Page 38: Tutorial de matlab (em português)

� Cap��tulo �� Elementos fundamentais

−20 −15 −10 −5 0 5 10 15 20−20

−15

−10

−5

0

5

10

15

20

x

f(x)

f(x)=sen(x)*x

�a� Restri�c ao em x

−15 −10 −5 0 5 10 15−10

−8

−6

−4

−2

0

2

4

6

8

10

x

f(x)

f(x)=sen(x)*x

�b� Restri�c oes em x e y

Figura ���� Esbo�cos da fun�c ao f�x� � sen�x�x pelo comando fplot�

������� ������� � ������ ������ ������ �����

������� ������� � ������ ������ ������ �����

������� ������� � ������ ������ ������ �����

������� ������� � ������ ������ ������ �����

Y �

������� ������� ������� ������� ������� ������� �������

������� ������� ������� ������� ������� ������� �������

� � � � � � �

������ ������ ������ ������ ������ ������ ������

Page 39: Tutorial de matlab (em português)

��� Gr�acos ��

������ ������ ������ ������ ������ ������ ������

�� Z � X�Y

Z �

� ����� ������� ������� ������� � ������ ������

������� ������� ������� � ������ ������ ������

������� ������� � ������ ������ ������ �����

������� � ������ ������ ������ ����� �����

� ������ ������ ������ ����� ����� ������

Fun�c�ao plot�

Esta fun�c ao �e uma generaliza�c ao da fun�c ao plot vista na se�c ao ����� para esbo�cos tridimen�sionais� Sua sintaxe �e

plot�X��X��Z���tipo de linha ����X �Y �Z �tipo de linha �������

onde X� Y e Z s ao matrizes de mesmo tamanho contendo as coordenadas tridimensionais dospontos a serem exibidos e tipo de linha� �e uma cadeia de � a � caracteres que especi�caa cor e o estilo da linha de acordo com a tabela ���� da p�agina ��� Se X� Y e Z forem vetoresde mesmo tamanho ent ao �e esbo�cada uma linha no espa�co tridimensional cujas coordenadass ao os elementos destes vetores� Assim� para produzir o esbo�co da fun�c ao z � sen�x� cos�y��

no intervalo �� � x � � e �� � y � �� mostrado na �gura ����a�� utiliza�se os comandos��� �X�Y� � meshgrid����� ���� ��� � ��

�� Z � sinX���cosY��" �

�� plot�X�Y�Z�� grid on

�� xlabel�eixo x��� ylabel�eixo y��� zlabel�eixo z��

�� title�plot���

Fun�c�oes mesh� meshc e meshz

A fun�c ao meshX�Y�Z� produz o esbo�co de uma malha na superf��cie especi�cada pelas ma�trizes X� Y e Z� A fun�c ao meshcX�Y�Z� esbo�ca a malha com contornos desenhados abaixo emeshzX�Y�Z� faz o esbo�co da malha com um plano de refer�encia� Os comandos

�� �X�Y� � meshgrid����� ���� ��� � ��

�� Z � sinX���cosY��" �

�� meshX�Y�Z�� grid on

�� xlabel�eixo x��� ylabel�eixo y��� zlabel�eixo z��

�� title�mesh��

geram o esbo�co mostrado na �gura ����b�� Por outro lado�

�� meshcX�Y�Z�� grid on

�� xlabel�eixo x��� ylabel�eixo y��� zlabel�eixo z��

�� title�meshc��

usando a mesma matriz Z de�nida acima e

�� meshzX�Y�Z�� grid on

�� xlabel�eixo x��� ylabel�eixo y��� zlabel�eixo z��

�� title�meshz��

Page 40: Tutorial de matlab (em português)

�� Cap��tulo �� Elementos fundamentais

−3−2

−10

12

3

−2

−1

0

1

2−1

−0.5

0

0.5

1

eixo x

plot3

eixo y

eixo

z

�a� plot�

−3−2

−10

12

3

−2

−1

0

1

2−1

−0.5

0

0.5

1

eixo x

mesh

eixo y

eixo

z

�b� mesh

Figura ���� Esbo�cos da fun�c ao z � sen�x� cos�y�� usando os comandos plot� e mesh�

produzem os esbo�cos apresentados na �guras ����a� e �b��

Fun�c�oes surf e surfl

A fun�c ao surfX�Y�Z� produz uma superf��cie sombreada tridimensional especi�cada pelasmatrizes X� Y e Z� A fun�c ao surflX�Y�Z� gera uma superf��cie sombreada acrescida de umefeito de ilumina�c ao� Deste modo� os comandos

�� �X�Y� � meshgrid����� ���� ��� � ��

�� Z � sinX���cosY��" �

Page 41: Tutorial de matlab (em português)

��� Gr�acos ��

−3−2

−10

12

3

−2

−1

0

1

2−1

−0.5

0

0.5

1

eixo x

meshc

eixo y

eixo

z

�a� meshc

−3−2

−10

12

3

−2

−1

0

1

2−1

−0.5

0

0.5

1

eixo x

meshz

eixo y

eixo

z

�b� meshz

Figura ���� Esbo�cos de z � sen�x� cos�y�� usando os comandos meshc e meshz�

�� surfX�Y�Z�� grid on

�� xlabel�eixo x��� ylabel�eixo y��� zlabel�eixo z��

�� title�surf��

com a matriz Z de�nida acima e

�� surflX�Y�Z�� grid on

�� xlabel�eixo x��� ylabel�eixo y��� zlabel�eixo z��

�� title�surfl��

�� shading interp

�� colormapgray�

Page 42: Tutorial de matlab (em português)

�� Cap��tulo �� Elementos fundamentais

produzem as superf��cies mostradas nas �guras ����a� e �b�� Os comandos shading interp

e colormapgray� foram usados para real�car o efeito da ilumina�c ao�

−3−2

−10

12

3

−2

−1

0

1

2−1

−0.5

0

0.5

1

eixo x

surf

eixo y

eixo

z

�a� surf

−3−2

−10

12

3

−2

−1

0

1

2−1

−0.5

0

0.5

1

eixo x

surfl

eixo y

eixo

z

�b� surfl

Figura ���� Esbo�cos de z � sen�x� cos�y�� usando os comandos surf e surfl�

����� Figuras

As �guras geradas pelo MATLAB podem ser facilmente impressas ou gravadas em um ar�quivo para posterior impress ao ou inclus ao em um texto� Para tal basta usar o comandoprint cuja sintaxe �e

print ��ddisp�� nome do arquivo�

Page 43: Tutorial de matlab (em português)

���� Exerc��cios ��

onde disp� s ao dispositivos para especi�carem o tipo de arquivo a ser gravado com o nomenome do arquivo�� Alguns destes dispositivos s ao mostrados na tabela �����

disp� descri�c�ao disp� descri�c�ao

ps PostScript para impressorasem preto e branco

eps PostScript encapsulado pa�ra impressoras em preto ebranco

psc PostScript para impressorasem cores

epsc PostScript encapsulado pa�ra impressoras em cores

ps PostScript n��vel � para im�pressoras em preto e branco

esp PostScript n��vel � encapsu�lado para impressoras empreto e branco

psc PostScript n��vel � para im�pressoras em cores

epsc PostScript n��vel � encapsu�lado para impressoras emcores

Tabela ����� Alguns dispositivos para grava�c ao de arquivos de �guras�

Assim� o comando

�� print �deps figplot

gera um arquivo PostScript �R� encapsulado com nome figplot�eps� O comando help

print deve ser usado para obter mais informa�c oes sobre todos os dispositvos suportadospelo MATLAB�

��� Exerc��cios

Se�c�ao � �

Observar atentamente e anotar o resultado dos comandos do MATLAB� Apesar dos coman�dos estarem separados por v��rgula� entrar com um de cada vez�

���� Atribuir o valor �������� �a vari�avel a e �������� �a vari�avel b�

���� Conferir os nomes permitidos de vari�aveis

arco�seno��� limite�sup��� Area��� area��

���� Construir os vetores

a��� ��� ��� ����� b�������� � c���� ���� d������

e�linspace�������� e��� e ���� e�������� e�� � ���� f�e�� g�e���

h� �������

���� Construir as matrizes e veri�car o resultado das fun�c oes

Page 44: Tutorial de matlab (em português)

�� Cap��tulo �� Elementos fundamentais

A��� �� �� � ��� � � ��� A ������ B�A ���� � ���� C��A B���

C��� ������� C ������� sizeC�� sumC�� sumC��� prodC�� prodC���

minC��� maxC�� zeros����� ones��� eye��� D�rand��� diagdiagD���

triuD�� trilD�

���� Analisar o resultado dos comandos

s��MATLAB�� �s � em ordem reversa � � slengths��������

Se�c�ao � �

Observar atentamente e anotar o resultado dos comandos do MATLAB� Apesar dos coman�dos estarem separados por v��rgula� entrar com um de cada vez�

���� Avaliar as express oes escalares

���� ���� ���� ��� � !�� �" � �� ������� �� "�

���� Seja a � �� b � �� c � �� d � �� e � �� Avaliar

x � �

qe�e� a��e� b� cd

y � a� b� � c

d e

�cos�a�

d sen�b c�

��

z � log��

�b

d e�

� exp

�b a

b� a

c�

� b�

p� b�

��� Avaliar as express oes vetoriais

u� ��� v�linspace��������� k���

u�k� u�v� u�k� u��v� u��v� u�!v� u�"k� k�"u� v�"u

���� Avaliar as express oes matriciais

M�� �� �� � � ��� �� ��� N��� � � � � ��� � ��� x������� z�

M�z� M�N� M�z� M��N� M�N� M�x� M��N� M�!N� M�"z� M"z� z�"M� z"M� M�"N

���� Veri�car a diferen�ca entre as fun�c oes usando a � � e a � ���� �ceila�� fixa�� floora�� rounda�� signa�

����� Para c � � �i e c � �� �i� observar os resultados das fun�c oes complexasabsc�� conjc�� realc�� imagc�

����� Com rela�c ao �as vari�aveis l�ogicas� dados

a�� � verdadeiro

b�� � falso

c�sqrt ���

d�exp�����

completar a tabela

a b c d a#b a#c b#d a$b a$c b$d �a �b

Page 45: Tutorial de matlab (em português)

���� Exerc��cios ��

����� Avaliar as express oes l�ogicas para x�����

x�� # x��� x�� $ absx��

����� De�nir os comandos para gerarem as cadeias de caracteresT�2tulo� vari�avel e equa-c�oes�

����� Qual a diferen�ca entre as fun�c oes str num e num str�

Se�c�ao � �

����� Seja a fun�c ao

y � e�x��� cos�x�x�

Gerar uma tabela com � pontos para �� � x � � e exibir o gr�a�co da fun�c ao usando ocomando plot colocando r�otulos e grade�

����� Repetir a opera�c ao acima usando � pontos e sem usar grade�

���� Gerar uma tabela de � pontos para

y � sen�x�x� �� � x � �e exibir o seu gr�a�co usando o comando fplot com r�otulos e grade�

����� Seja a fun�c ao

z � sen�x�y��

Gerar uma superf��cie com �� � x � � e �� � y � � usando os comandos meshc e meshz�

���� Usando os comandos surf e surfl exibir a superf��cie de

z � x cos�x� sen�y�

com �� � x � � e �� � y � ��

Page 46: Tutorial de matlab (em português)

� Cap��tulo �� Elementos fundamentais

Page 47: Tutorial de matlab (em português)

Cap��tulo �

MATLAB como linguagem de programa�c�ao

No cap��tulo anterior foram descritos os elementos fundamentais do MATLAB� os quais pos�sibilitam sua utiliza�c ao em um modo interativo� Neste cap��tulo ser ao abordados algunscomandos que tornar ao poss��vel desenvolver programas escritos em MATLAB� tais como�comandos para entrada e sa��da de dados� manipula�c ao de arquivos� estruturas condicionaise estruturas de repeti�c ao�

�� Comandos de entrada e sa��da

O MATLAB fornece algumas facilidades para especi�car o formato de sa��da dos resultados�grava�c ao e leitura das vari�aveis de uma sess ao de trabalho para uso posterior e edi�c ao deprogramas em arquivos�

����� Formato de exibi�cao

Para saber o valor de uma vari�avel basta entrar com o seu nome�

�� pi

ans �

������

O comando dispvari�avel�� �e usado para exibir vari�avel� sem mostrar o seu nome oupara exibir uma cadeia de caracteres contida na vari�avel��

�� disp�numeros aleatorios entre � e ���� disprand ����

numeros aleatorios entre � e �

�� ��� ������ ��� �� ������ ��� �� ������

�� ��� ������ ���� � ������ ������ ��� �

Quando o MATLAB exibe um resultado num�erico� ele segue diversas regras� Normalmente�se o resultado �e um n�umero inteiro� ele �e exibido como tal� Igualmente� quando o resultado�e um n�umero real �ponto �utuante�� ele �e mostrado com aproximadamente quatro d��gitosap�os o ponto decimal� Se os d��gitos signi�cativos do resultado est ao fora desta faixa ent aoo resultado �e exibido em nota�c ao cient���ca� O comando format �e usado para modifcar oformato num�erico de exibi�c ao� como mostrado na tabela ����

��

Page 48: Tutorial de matlab (em português)

� Cap��tulo � MATLAB como linguagem de programa�c�ao

comando � resultado

format short ������ � d��gitos decimais�format bank ���� � d��gitos decimais�format long ��������������� �� d��gitos decimais�format short e ������e � d��gitos decimais e expoente�format long e ����������������e �� d��gitos e expoente�format hex ����fb�����d� hexadecimal�format � � � ou branco para valor positivo�

negativo ou nulo�format rat ������� aproxima�c ao racional�format compact suprime linhas em branco�format loose mant�em linhas em branco�format atribui o padr ao � short e loose�

Tabela ���� O comando format�

����� Espa�co de trabalho

Durante uma sess ao� os comandos e vari�aveis utilizados residem no espa�co de trabalho doMATLAB e podem ser armazenados quando desejado� O comando who lista o nome dasvari�aveis que est ao sendo usadas� ou seja� que est ao presentes no espa�co de trabalho� enquantoque o comando whos fornece maiores informa�c oes sobre estas vari�aveis� As vari�aveis no espa�code trabalho podem ser removidas incondicionalmente usando o comando clear�

�� clear tempo� raiz remove as vari�aveis tempo e raiz��� clear remove todas as vari�aveis do espa�co de trabalho�

Aten�c�ao� n ao ser�a solicitada a con�rma�c ao� Todasas vari�aveis estar ao irremediavelmente removidas�

O comando save �e usado para gravar as vari�aveis do espa�co de trabalho em um arquivo emdisco� Sua sintaxe �e

save nome do arquivo� vari�aveis� chaves�

onde nome do arquivo� especi�ca que as vari�aveis do espa�co de trabalho ser ao gravadasno arquivo bin�ario nome do arquivo��mat� Por exemplo� save trab� faz com que todasas vari�aveis da sess ao sejam gravadas no arquivo trab��mat� Se o nome do arquivo n ao fordado ent ao todas as vari�aveis ser ao gravadas no arquivo default matlab�mat�vari�aveis� de�nem quais as vari�aveis do espa�co de trabalho a serem gravadas no arquivonome do arquivo��mat� As vari�aveis devem estar separadas por brancos�chaves� especi�cam as caracter��sticas dos dados que ser ao gravados no arquivo denominadonome do arquivo��mat� As chaves� podem ser

�ascii de�ne que o arquivo ser�a no formato ASCII e seu nome n ao conter�a aextens ao �mat� que �e a forma usada para armazenar arquivos bin�arios�

�double antecedido por �ascii� de�ne que os n�umeros ser ao gravados com ��d��gitos ao inv�es de �

�tabs antecedido por �ascii� de�ne que os dados estar ao tabulados��append adiciona vari�aveis a um arquivo j�a existente�

As vari�aveis salvas no arquivo ASCII nome do arquivo��extens�ao� s ao intercaladas emuma �unica vari�avel denominada nome do arquivo�� Ao salvar dados complexos usando a

Page 49: Tutorial de matlab (em português)

��� Comandos de entrada e sa��da ��

chave �ascii faz com que a parte imagin�aria dos dados seja perdida pois o MATLAB n aopode carregar o dado n ao num�erico i�

O comando load �e usado para recuperar os dados gravados em um arquivo pelo comandosave e coloc�a�los no espa�co de trabalho� Sua sintaxe �e

load nome do arquivo��extens�ao�

O comando load sem argumento recupera os dados do arquivo default matlab�mat� loadtrab� �sem extens ao� recupera os dados do arquivo bin�ario trab��mat� A extens ao podeser usada para recuperar arquivos ASCII� Neste caso� o arquivo deve conter uma matriz dedados com m linhas e n colunas em cada linha� O resultado �e uma matriz m � n com omesmo nome do arquivo sem a extens ao� Os dados em formato ASCII tem que estar naforma de matriz sen ao o comando load n ao conseguir�a recuper�a�los�

No exemplo a seguir� as vari�aveis a �� � ��� b �� � �� e c �� � �� s ao gravadas no arquivoASCII de nome trab�dat usando o comando save� Em seguida� o comando load �e utilizadopara recuperar estes dados gerando a vari�avel trab ��� �� no espa�co e trabalho��� a����

a �

� �

�� b�eye ���

b �

� � �

� � �

�� c�magic��

c �

� � �

� � �

�� who � variaveis no espaco de trabalho

Your variables are�

a b c

�� whos � variaveis no espaco de trabalho

Name Size Bytes Class

a �x� � double array

b x� �� double array

c �x� � double array

Grand total is �� elements using ��� bytes

�� save trab�dat a b c �ascii � grava o arquivo ASCII trab�dat

�� type trab�dat � mostra o conteudo do arquivo trab�dat

���������e��� ��������e��� ���������e���

���������e��� ���������e��� ���������e���

���������e��� ���������e��� ���������e���

���������e��� ���������e��� ���������e���

���������e��� ���������e��� ���������e���

���������e��� ��������e��� ��������e���

�� load trab�dat

Page 50: Tutorial de matlab (em português)

�� Cap��tulo � MATLAB como linguagem de programa�c�ao

�� whos � variaveis no espaco de trabalho

Name Size Bytes Class

a �x� � double array

b x� �� double array

c �x� � double array

trab �x� ��� double array

Grand total is �� elements using �� bytes

�� trab

trab �

� �

� � �

� � �

� � �

� � �

Se o arquivo contiver uma vari�avel com o mesmo nome de uma j�a existente no espa�co detrabalho ent ao o comando load faz com que a vari�avel do espa�co de trabalho seja substitu��dapela vari�avel existente no arquivo�

����� Di�ario

Todos os comandos solicitados pelo usu�ario e as respostas fornecidas pelo MATLAB �com ex�cess ao de gr�a�cos� podem ser gravados em um arquivo ASCII para que possam ser impressosou mesmo inclu��dos em algum relat�orio� como foi feito neste texto�

Para esta grava�c ao basta usar o comando diary nome do arquivo�� a partir do qual aintera�c ao usu�ario�MATLAB ser�a registrada� A suspens ao do registro �e feita por diary off

e a reinicializa�c ao �e obtida por diary on� Por esta raz ao� os �unicos nomes de arquivos quen ao s ao permitidos s ao on e off�

����� Leitura e grava�cao de dados

A transfer�encia de dados entre o espa�co de trabalho e algum dispositivo de entrada e sa��da�arquivo em disco� impressora� etc�� aumenta a utiliza�c ao do MATLAB visto tornar poss��vel�por exemplo� at�e a troca de informa�c oes com um outro programa�

Abertura de arquivo

O comando fopen abre um arquivo ou obt�em informa�c oes sobre os arquivos abertos� Suasintaxe �e

�fid��mensagem��� � fopen�nome do arquivo����permiss�ao���

Deste modo� o comando fopen associa o nome externo do arquivo �nome do arquivo�� �aunidade fid que ser�a utilizada nos comandos de entrada e sa��da no modo especi�cado pela�permiss�ao��� Os caracteres permitidos para �permiss�ao�� est ao listados na tabela ����

Page 51: Tutorial de matlab (em português)

��� Comandos de entrada e sa��da ��

�permiss�ao�� especi�ca�c ao

�r� Abre o arquivo para leitura��r�� Abre o arquivo para leitura e escrita� mas n ao cria o arquivo��w� Abre o arquivo para escrita e caso necess�ario cria o arquivo� Por�em�

remove o conte�udo do arquivo existente��w�� Abre o arquivo para leitura e escrita e se necess�ario cria o arquivo�

Todavia� remove o conte�udo do arquivo existente��a� Cria e abre um arquivo novo ou abre um arquivo j�a existente para

escrita� anexando ao �nal do arquivo��a�� Cria e abre um arquivo novo ou abre um arquivo j�a existente para

leitura e escrita� anexando ao �nal do arquivo�

Tabela ���� Atributos de arquivo�

Se �permiss�ao�� for omitida ent ao ser�a assumido o valor �r�� Se n ao for especi�cado� osarquivos ser ao abertos em modo bin�ario� Para abrir um arquivo texto� o caracter �t� deveser adicionado ao caracter de permiss ao� como em� �wt� e rt��� Similarmente� o caracter�b� pode ser usado para reiterar que um arquivo deve ser bin�ario�

Caso o comando fopen tenha sucesso ao abrir o arquivo� ele retornar�a o identi�cador dearquivo fid contendo um n�umero inteiro maior do que � e o conte�udo de �mensagem�� ser�avazio� O fid �e usado com outras rotinas de entrada e sa��da para identi�car o arquivo noqual as opera�c oes ser ao realizadas�

No entanto� se o comando fopen n ao tiver sucesso ent ao fid � �� e �mensagem�� conter�auma cadeia de caracteres informando o tipo de erro ocorrido� O comando help fopen deveser utilizado para obter mais informa�c oes sobre este comando�

Fechamento de arquivo

O comando fclosefid� fecha o arquivo previamente aberto pelo comando fopen� cujoidenti�cador associado a este arquivo seja fid� O valor � �e retornado em caso de sucesso nofechamento e �� no caso de insucesso� Por sua vez� o comando fclose�all�� fecha todosos arquivos abertos� Quando um arquivo �e fechado� a associa�c ao entre o identi�cador fid eo arquivo f��sico �nome do arquivo�� �e desfeita�

Grava�c�ao em arquivo

O comando fprintf grava dados formatados em um arquivo e sua sintaxe �e

tamanho� � fprintffid��formato���vari�avel��

onde tamanho� �e o n�umero de bytes escritos� fid �e o identi�cador associado ao arquivo noqual ser�a feita a grava�c ao dos valores contidos na vari�avel� com o formato especi�cadona cadeia de caracteres �formato��� a qual deve conter caracteres alfanum�ericos e�ouespeci�ca�c oes de convers ao� Estas especi�ca�c oes de convers ao s ao delimitadas pelo caracter� e uma das letras i� e� f� g ou s� de acordo com a tabela ����

Deste modo�

Page 52: Tutorial de matlab (em português)

�� Cap��tulo � MATLAB como linguagem de programa�c�ao

formato especi�ca�c ao

�ni usado para valores inteiros� sendo n o tamanho do campo de exibi�c ao��n�df nota�c ao na forma !�"�� sendo n o tamanho do campo �n�umero

total de caracteres exibidos� e d o n�umero de d��gitos decimais��n�de nota�c ao na forma !�"� � sendo n o tamanho do campo �n�umero

total de caracteres exibidos� e d o n�umero de d��gitos decimais��n�dg equivalente a �n�de ou �n�df� dependendo de qual formato for mais curto�

al�em disso os zeros insigni�cantes n ao s ao exibidos��ns exibe caracteres em um campo de tamanho n�

Tabela ���� Formatos de exibi�c ao�

�� fprintf�a precisao deste computador � �� ��e!n��eps� �

a precisao deste computador � ����� e���

onde !n �e usado para come�car uma nova linha� Quando for necess�ario ter o caracter ���exibido basta us�a�lo duas vezes

�� fprintf�hoje e�� dia � s!n��date�

hoje e� dia ���Feb� ���

O comando fprintf do MATLAB difere de seu hom�onimo da linguagem C em um aspectomuito importante� ele �e vetorizado no caso da vari�avel a ser exibida for uma matriz� Nestecaso� o formato �e aplicado aos elementos da matriz� por coluna� at�e a �ultima linha� Ele �eent ao usado de modo similar� sem reinicializa�c ao� pelos demais elementos das outras colunasda matriz� Veja a diferen�ca entre os dois comandos fprintf usando a matriz M

�� x������� �

�� M��x�sqrtx���

M �

������ ������

������ �� ��

����� �����

�� fprintf���� f �����f !n��M�

���� �������

��� �������

�� ����� �

�� fprintf���� f �����f !n��M��

���� �������

���� �� ���

��� ����� �

Se fid for omitido do comando fprintf ou se fid � � ent ao os valores ser ao simplesmenteexibidos na tela� No exemplo abaixo� uma tabela contendo x�

px e e�x para � � x � � �e

gerada e gravada no arquivo sqrtexp�dat�

�� x � ���� � � � define x

�� tab � �x� sqrtx�� exp�x�� � gera tabela

tab �

������ �� ��� ������ ������ ������ �����

Page 53: Tutorial de matlab (em português)

��� Comandos de entrada e sa��da ��

������ ��� �� ����� �� �� ������ �����

����� ����� �� ��� �� �� ������ ������

�� fid � fopen�sqrtexp�dat���w�� � abre o arquivo para escrita

fid �

�� fprintffid����� f�����f�����f!n��tab� � escreve tabela no arquivo

ans �

���

�� fclosefid� � fecha o arquivo

ans �

�� type sqrtexp�dat � lista o arquivo

���� ������� �����

�� � ��� ��� �����

���� ����� �� ���

���� �� �� � �� ��

���� ������� ������

��� ����� � ������

Um manual da linguagem C deve ser consultado para maiores informa�c oes sobre o comandofprintf�

Leitura em arquivo

O comando fscanf efetua a leitura de dados formatados em um arquivo� Sua sintaxe �e

�vari�avel��tamanho�� � fscanffid��formato���elementos��

onde fid �e o identi�cador associado ao arquivo no qual est�a sendo feita a leitura dos dadosescritos no formato especi�cado na cadeia de caracteres �formato��� Os dados s ao con�vertidos segundo o �formato�� e atribu��dos �a vari�avel�� As especi�ca�c oes de convers aos ao mostradas na tabela ��� e o par�ametro elementos� �e descrito na tabela ���� A vari�aveltamanho� retorna o n�umero de elementos que foram lidos com sucesso�

elementos especi�ca�c ao

n L�e at�e n valores em um vetor coluna�inf L�e at�e o �m do arquivo� resultando em um vetor coluna contendo o

mesmo n�umero de elementos do arquivo��m�n� L�e os valores su�cientes para preencher uma matriz de dimens ao m � n�

preenchendo esta matriz por coluna� n pode ser igual �a inf mas n ao podeser igual �a m�

Tabela ���� Especi�ca�c ao de elementos para leitura�

Quando o MATLAB estiver lendo um arquivo ele tentar�a combinar os dados no arquivocom a forma especi�cada em �formato��� Se a combina�c ao ocorrer ent ao os dados ser aoatribu��dos por coluna �a vari�avel�� No entanto� se somente uma combina�c ao parcial ocorrerent ao apenas os dados combinados com o �formato�� ser ao atribu��dos �a vari�avel� e aopera�c ao de leitura ser�a interrompida�

Page 54: Tutorial de matlab (em português)

�� Cap��tulo � MATLAB como linguagem de programa�c�ao

De modo similar ao fprintf� o comando fscanf do MATLAB difere de seu hom�onimo dalinguagem C em um aspecto muito importante� ele �e vetorizado ao retornar um argumentomatriz� Isto signi�ca que o �formato�� �e reciclado atrav�es do arquivo at�e o �nal destearquivo ser encontrado ou a quantidade de dados de�nida em tamanho� tiver sido lida�

�� fid � fopen�sqrtexp�dat���r�� � abre arquivo para leitura

fid �

�� �A�n� � fscanffid����f���f���f���� inf�� � leitura das � colunas

A �

������ �� ��� ������ ������ ������ �����

������ ��� �� ����� �� �� ������ �����

����� ����� �� ��� �� �� ������ ������

n �

��

Se o caracter � for colocado entre o � e um caracter de convers ao �d� e� f� g ou s� ent ao ocorrespondente valor combinado n ao ser�a armazenado na vari�avel��

�� frewindfid� � posiciona leitura para o inicio do arquivo

�� �A�n� � fscanffid����f���f����f��� inf�� � leitura de colunas

A �

������ �� ��� ������ ������ ������ �����

������ ��� �� ����� �� �� ������ �����

n �

�� fclosefid� � fecha o arquivo

ans �

O comando frewindfid� �e usado para posicionar o acesso ao primeiro registro do arquivocujo identi�cador seja fid�

Durante o processo de leitura �e importante veri�car se o �ultimo registro do arquivo j�a foilido� O comando feoffid� faz esta veri�ca�c ao no arquivo de identi�cador fid� Se o �ultimoregistro j�a foi lido ent ao ser�a retornado o valor �� caso contr�ario � ser�a retornado�

Usar o comando help iofun para se conhecer outras fun�c oes do MATLAB para leitura egrava�c ao de dados�

�� Estruturas condicionais

Uma estrutura condicional permite a escolha do grupo de comandos a serem executadosquando uma dada condi�c ao for satisfeita ou n ao� possibilitando desta forma alterar o �uxonatural de comandos� Esta condi�c ao �e representada por uma express ao l�ogica�

Page 55: Tutorial de matlab (em português)

��� Estruturas condicionais ��

����� Estrutura if�end

A estrutura condicional mais simples do MATLAB �e

if condi-c�ao�

comandos�

end

Se o resultado da express ao l�ogica condi-c�ao� for � �verdadeiro� ent ao a lista de comandos�ser�a executada� Se o resultado for � �falso� os comandos� n ao ser ao executados� Considereos comandos

a � input�Entre com o valor de a � ���

if a �� �

b � sqrta�

end

e a execu�c ao para a �

Entre com o valor de a �

b �

�����

Neste exemplo� a raiz quadrada de a ser�a atribu��da a b se� e somente se� o valor de a formaior ou igual a ��

����� Estrutura if�else�end

No caso de haver duas alternativas� uma outra estrutura condicional deve ser usada

if condi-c�ao�

comandos ��

else

comandos ��

end

Se o resultado da express ao l�ogica condi-c�ao� for � �verdadeiro� ent ao a lista contendocomandos �� ser�a executada� Se condi-c�ao� for � �falso� ent ao ser�a a lista comandos ��

a ser executada� A seq�u�encia de comandos

a � input�Entre com o valor de a � ���

if a � �

b � loga�

else

b � expa�

end

quando executada fornecendo a � � produz

Entre com o valor de a � �

b �

���� �

Se a for positivo ent ao o logaritmo natural de a ser�a atribu��do a b e se a for negativo ou nuloent ao b ser�a igual ao exponencial de a�

Page 56: Tutorial de matlab (em português)

� Cap��tulo � MATLAB como linguagem de programa�c�ao

����� Estrutura if�elseif�end

Quando houver mais de duas alternativas� a estrutura if�else�end do MATLAB torna�se

if condi-c�ao ��

comandos ��

elseif condi-c�ao �

comandos �

elseif condi-c�ao ��

comandos ��

else

comandos ��

end

A lista comandos �� ser�a executada se condi-c�ao �� for igual a � �verdadeiro�� j�a a lis�ta comandos � ser�a executada se condi-c�ao � for � e assim para as outras condi�c oes�Se nenhuma das condi�c oes for � ent ao comandos �� ser�a executada� Quando a primei�ra condi-c�ao� for satisfeita e os comandos� executados� a estrutura if�elseif�end ser�aabandonada� ou seja� o controle do processamanto ser�a transferido para o comando imedia�tamente ap�os o end� Os comandos a seguir calculam o valor absoluto de um n�umero real oucomplexo

a � input�Entre com o valor de a � ���

if imaga� �� �

b � sqrtreala��" �imaga��" ��

elseif a �

b � �a�

else

b � a�

end

�a b�

Para a � � � �i�

Entre com o valor de a � ���i

ans �

������� ������i �������

Deste modo foi executado o primeiro comando para o qual a condi�c ao imaga� �� � foisatisfeita� Assim� na estrutura if�elseif�end uma �unica lista de comandos �e executada�

� Estruturas de repeti�cao

A estrutura de repeti�c ao faz com que uma seq�u�encia de comandos seja executada repetida�mente at�e que uma dada condi�c ao de interrup�c ao seja satisfeita� O MATLAB possui duasestruturas de repeti�c ao� as estruturas for�end e a while�end�

Page 57: Tutorial de matlab (em português)

�� Estruturas de repeti�c�ao ��

����� Estrutura for�end

A estrutura for�end permite que um grupo de comandos seja repetido um n�umero espec���code vezes� Sua sintaxe �e

for vari�avel��arranjo�

comandos�

end

onde vari�avel� �e a vari�avel�de�controle que assume todos os valores contidos no vetorlinha arranjo�� Assim� o n�umero de repeti�c oes da lista comandos� �e igual ao n�umerode elementos no vetor arranjo�� A vari�avel�de�controle n ao pode ser rede�nida dentro daestrutura for�end� Os comandos

n � input�Valor de n � ��� s � �� n � n" �

for i � �� � �n��

s � s � i�

end� n � s

executados para n � �

n � input�Valor de n � ��� s � �� n � n" �

Valor de n � �

n �

s �

mostram que a soma dos n primeiros n�umeros ��mpares �e igual ao quadrado de n� pois para n� � a vari�avel�de�controle i assume os valores � � � � � Deve ser observado o uso do ���para suprimir a exibi�c ao de resultados intermedi�arios no c�alculo de s� Para mostrar que asestruturas for�end podem estar encadeadas� considere a seq�u�encia de comandos

n � input�Ordem do quadrado magico � ���

A � magicn��

Soma'Linhas � zerosn���� Soma'Colunas � zeros��n�� Soma'Diagonal � ��

for i � ��n

Soma'Diagonal � Soma'Diagonal � Ai�i��

for j � ��n

Soma'Linhasi� � Soma'Linhasi� � Ai�j��

Soma'Colunasj� � Soma'Colunasj� � Ai�j��

end

end

A� Soma'Linhas� Soma'Colunas� Soma'Diagonal

Para n � �

Ordem do quadrado magico � �

A �

�� � ��

� �� �� �

� � �

Page 58: Tutorial de matlab (em português)

� Cap��tulo � MATLAB como linguagem de programa�c�ao

� �� �� �

Soma'Linhas �

��

��

��

��

Soma'Colunas �

�� �� �� ��

Soma'Diagonal �

��

Cumpre observar que o MATLAB possui comandos para determinar estes somat�orios de ummodo mais simples� pelo uso do comando sum que fornece a soma das colunas de uma matriz�

����� Estrutura while�end

A estrutura while�end� ao contr�ario da for�end� repete um grupo de comandos um n�umeroinde�nido de vezes� Sua sintaxe �e

while condi-c�ao�

comandos�

end

Enquanto a express ao l�ogica condi-c�ao� for verdadeiro a lista comandos� ser�a repetida�Por exemplo� para determinar a precis ao de um computador� os comandos

n � �� Epsilon � ��

while � � Epsilon � �

n � n � ��

Epsilon � Epsilon � �

end

n� Epsilon� eps

quando executados fornecem

n �

��

Epsilon �

����� e���

eps �

� ��e���

Epsilon �e a chamada precis ao da m�aquina �� ou seja� o maior n�umero que somado a � �eigual a �� Para computadores com aritm�etica IEEE � � ����� Comparada com a vari�avelespecial eps � ���� do MATLAB

�� ��eps��

ans �

� ��e���

�� ��Epsilon��

ans �

Page 59: Tutorial de matlab (em português)

��� Arquivos M ��

Note que quando eps �e somado a � resulta em um n�umero maior do que �� O mesmo n aoocorre com Epsilon� porque qualquer valor igual ou menor do que ele somado a � ser�asimplesmente �� ou seja� o computador j�a n ao consegue mais representar � ��

����� Estrutura com interrup�cao no interior

A estrutura while�end permite que um grupo de comandos seja repetido um n�umero inde�terminado de vezes� no entanto� a condi�c ao de interrup�c ao �e testada no in��cio da estrutura�Em v�arias situa�c oes em programa�c ao se faz necess�ario interromper a execu�c ao da repeti�c aoveri�cando a condi�c ao no interior da estrutura e n ao no seu in��cio�

O comando break interrompe a execu�c ao de uma estrutura while�end ou for�end e transferea execu�c ao para o comando imediatamente seguinte ao end� Em repeti�c oes aninhadas� obreak interrompe a execu�c ao apenas da estrutura mais interna� Assim� uma repeti�c ao comcondi�c ao de interrup�c ao no interior pode ter a forma

while �

comandos ��

if condi-c�ao�

break

end

comandos �

end

A estrutura while�end �e executada inde�nidamente a princ��pio pois a condi�c ao do while

�e sempre verdadeiro� Contudo� quando a condi-c�ao� do if for satisfeita o comando breakser�a executado causando a interrup�c ao da repeti�c ao while�end� O conjunto de comandos

while �

a�input�Entre com a� a�� � ���

if a � �

break

end

dispratsa��

end

lista continuamente a representa�c ao racional de um n�umero fornecido enquanto este forpositivo� Deste modo� para a � � e a �

p�

Entre com a� a�� � pi

�������

Entre com a� a�� � sqrt �

�� �� ��

Entre com a� a�� � �

�� Arquivos M

Al�em de se poder entrar com cada comando de uma vez� o MATLAB permite� como qualqueroutra linguagem de programa�c ao� que seja executada uma seq�u�encia de comandos escrita em

Page 60: Tutorial de matlab (em português)

�� Cap��tulo � MATLAB como linguagem de programa�c�ao

um arquivo� Por esta raz ao este tipo de arquivo �e chamado de roteiro �script� e deve possuira extens ao �m� Os arquivos de roteiro s ao particularmente �uteis para entrar com matrizes egrande quantidade de dados� deste modo� torna�se f�acil conferir e modi�car os seus valores�Ser ao apresentados dois tipos de roteiros� programa e fun�c ao�

����� Programa

Um programa de arquivo M tem acesso �a todas as vari�aveis no espa�co de trabalho e asvari�aveis criadas por ele far ao parte do espa�co de trabalho� Alguns comandos do MATLABs ao particularmente �uteis para facilitar a intera�c ao programa�usu�ario�

O comando vari�avel��input�texto��� exibe texto� e espera que um valor seja atri�bu��do �a vari�avel� e error�mensagem��� causa a interrup�c ao da execu�c ao de um pro�grama e exibe mensagem��

Considere o programa no arquivo decsomat�m para gerar uma matriz com elementos aleat�o�rios entre �� e � e decomp�o�la na soma de tr�es matrizes� uma triangular inferior� umadiagonal e outra triangular superior

n � input�Ordem da matriz � ���

A � fix ���randn������onesn����

D � diagdiagA���

L � trilA� � D�

U � triuA� � D�

A� L� D� U

Estes arquivos M podem ser criados usando um editor de texto qualquer e para executar umprograma basta entrar com o nome do arquivo que o contenha

�� decsomat

Ordem da matriz � �

A �

� � ��

��� �� � �

� � ��

L �

� � �

��� � �

� � �

D �

� � �

� �� �

� � ��

U �

� � ��

� � � �

� � �

O comando echo on �e usado para que os comandos do arquivo sejam mostrados durante aexecu�c ao� para suprimir a exibi�c ao basta usar echo off�

Page 61: Tutorial de matlab (em português)

��� Arquivos M ��

Para exibir uma janela contendo um menu de escolha para o usu�ario �e utilizado o comandomenu� Sua sintaxe �e

vari�avel� � menu�t�2tulo����op-c�ao ���������op-c�ao n���

A cadeia de caracteres �t�2tulo�� ser�a apresentada na parte superior da janela do menu eas n op�c oes op-c�ao i�� ser ao colocadas �a disposi�c ao do usu�ario para que ele escolha umadelas� Se a k��esima op�c ao for escolhida ent ao este valor de k ser�a atribu��do a vari�avel��No exemplo a seguir� a escolha do m�etodo de Newton �terceira op�c ao do menu� faz com quea vari�avel m seja igual a ��

�� m � menu�Escolha o esquema ����secante���regula falsi���Newton��

m �

Para interromper a execu�c ao de um programa at�e que qualquer tecla seja acionada bastausar o comando pause� Para que a interrup�c ao seja por n segundos� ao inv�es de esperar peloacionamento de tecla� deve ser usado pause n�� O comando pause �e especialmente �utilquando da exibi�c ao de v�arios gr�a�cos�

x � �����������

for n � ���

plotx�sinx���x�"n�

pause

end

Os comandos pause off e pause on causam a desativa�c ao e ativa�c ao� respectivamente� deinterrup�c oes pelo pause ou pause n��

����� Comandos para execu�cao de expressoes

Antes de ser apresentado o segundo tipo de arquivo M �function� se faz necess�ario mostraros comandos para execu�c ao de express oes� O MATLAB possui dois comandos com esteprop�osito� feval e eval� os quais s ao de grande valia principalmente para o usu�ario criarnovas function#s� O comando

�v�� v�� � � � � vm� � feval�fun-c�ao��� a�� a�� � � � � an�

atribui os n argumentos a�� a�� � � � � an �a uma fun�c ao e retorna o resultado nas m vari�aveisv�� v�� � � � � vm� A fun�c ao �e especi�cada pela cadeia de caracteres �fun-c�ao�� que pode seruma express ao ou mesmo o nome de um arquivo contendo uma function onde a express aoest�a de�nida� Por isto os dois comandos a seguir para calcular resto de divis ao entre doisn�umeros s ao equivalentes

�� x � rem����

x �

�� y � feval�rem������

y �

Por outro lado� o comando eval�express�ao��� interpreta a express ao de�nida pela cadeiade caracteres �express�ao���

Page 62: Tutorial de matlab (em português)

�� Cap��tulo � MATLAB como linguagem de programa�c�ao

�� r � eval�sinpi� ���

r �

�� x � �� y � eval� �x�expx�����

y �

Note que para avaliar uma express ao que possui a vari�avel x� esta tem que ser previamentede�nida� Um uso efetivo de eval �e mostrado na function pegaso da se�c ao ������ A fun�c aoeval �e tamb�em capaz de executar tarefas mais complexas� para tal considere o programacontido no arquivo tabeval�m

Tabela � ��sqrtx��

�expx� � � Observe o caractere branco entre � e �

���x���x���

n � input�Escolha a expressao � ���

x � input�Defina o argumento � ���

a � evalTabelan����

Para execut�a�lo

�� tabeval

Escolha a expressao � �

Defina o argumento �

a �

�������

Neste exemplo� como foi escolhido n � � ent ao a terceira express ao ser�a utilizada� Para x �

tem�se que a � �� ��� � �������� Considerando que a vari�avel Tabela �e uma matrizde caracteres� ela deve ent ao ter o mesmo n�umero de colunas �ver se�c ao ����� na p�agina ����

����� Subprograma function

Um outro tipo de arquivo de roteiro �e usado para o pr�oprio usu�ario criar novas fun�c oes parao MATLAB� Por exemplo� seja a fun�c ao para calcular as duas ra��zes de uma par�abola

function raizes � parabolaa�b�c�

�PARABOLA raizes de uma parabola�

� PARABOLAA�B�C� calcula as duas raizes da parabola

� PX� � A�X" � B�X � C � �

� retornando�as no vetor RAIZES�

delta � sqrtb" ���a�c��

raizes�� � �b � delta � � �a��

raizes � � �b � delta � � �a��

Al�em de aumentar a �exibilidade� os arquivos de fun�c ao tem o mesmo status que as outrasfun�c oes do MATLAB�

�� lookfor parabola

PARABOLA raizes de uma parabola�

Page 63: Tutorial de matlab (em português)

��� Arquivos M ��

�� help parabola

PARABOLA raizes de uma parabola�

PARABOLAA�B�C� calcula as duas raizes da parabola

PX� � A�X" � B�X � C � �

retornando�as no vetor RAIZES�

O nome da fun�c ao tem que ser igual ao nome do arquivo M onde ela est�a de�nida� mas sema extens ao �m� ou seja� a fun�c ao parabola descrita acima deve estar no arquivo parabola�m�Um arquivo pode conter mais que uma function� sendo que a primeira delas deve ter onome desse arquivo� As outras function#s s�o podem ser chamadas pela primeira delas� n aosendo poss��vel serem chamadas por function#s escritas em um outro arquivo� Na realidadev�arias fun�c oes do MATLAB s ao arquivos M� Ao contr�ario do programa no qual as vari�aveiss ao globais� em uma function as vari�aveis s ao locais� ou seja� elas n ao tem acesso e nempodem criar vari�aveis no espa�co de trabalho� Por sua vez� os par�ametros de sa��da �raizesno caso da function parabola� s ao criados no espa�co de trabalho do MATLAB�

Os comandos nargin e nargout retornam o n�umero de argumentos de entrada e sa��da� res�pectivamente� especi�cados pelo usu�ario para uma function� A function pegaso calculao zero pertence ao intervalo �a b� da fun�c ao de�nida na cadeia de caracteres Funcao� uti�lizando o robusto e e�ciente m�etodo p�egaso� Nesta function �e utilizado o comando eval

para avalia�c ao de express ao� o qual �e descrito na se�c ao ������

function �Raiz�Erro�Iter� � pegasofuncao�a�b�Toler�IterMax�Exibe�

�PEGASO Calculo de raiz de equacao pelo metodo pegaso�

� PEGASOFUNCAO�A�B�TOLER�ITERMAX�EXIBE� calcula a raiz de uma

� equacao FX��� contida no intervalo �A B� com tolerancia TOLER

� e com no maximo ITERMAX iteracoes� usando o metodo pegaso�

� sendo a funcao FX� dada na cadeia de caracteres FUNCAO�

� EXIBE especifica se os resultados intermediarios serao

� mostrados� O� nao exibe e �� exibe�

� FUNCAO� A e B sao necessarios enquanto que TOLER� ITERMAX e

� EXIBE terao valores pre�definidos caso nao sejam fornecidos�

if nargin �� error�Numero de argumentos insuficientes��� end

if nargin �� Toler � �e���� end

if nargin �� IterMax � ���� end

if nargin �� Exibe � �� end

x � a� Fa � evalfuncao�� x � b� Fb � evalfuncao��

if Exibe �� �

disp� Calculo de raiz de equacao pelo metodo pegaso��

disp�iter a b x Fx delta'x��

end

k � �� x � b� Fx � Fb�

while �

k � k � �� DeltaX � �Fx � Fb � Fa� � b � a��

x � x � DeltaX� Fx � evalfuncao��

if Exibe �� �

Page 64: Tutorial de matlab (em português)

�� Cap��tulo � MATLAB como linguagem de programa�c�ao

fprintf���i�����f�����f�����f�����e�����e!n��k�a�b�x�Fx�DeltaX��

end

if absDeltaX� Toler # absFx� Toler� $ k �� IterMax�� break� end

if Fx�Fb � a � b� Fa � Fb� else Fa � Fa � Fb � Fb � Fx�� end

b � x� Fb � Fx�

end

Raiz � x�

if nargout � �� Erro � absDeltaX� �� Toler $ absFx� �� Toler� end

if nargout � � Iter � k� end

Os argumentos Funcao� a e b devem ser fornecidos sen ao uma mensagem de erro ser�a exibidae a execu�c ao da function interrompida� No entanto� os argumentos Toler �toler�ancia daraiz�� IterMax �n�umero m�aximo de itera�c oes� e Exibe �exibe resultados intermedi�arios� s aoopcionais� caso n ao sejam inclu��dos na lista de argumentos de entrada ser ao atribu��dos valorespr�e�de�nidos� Se forem especi�cados mais de seis argumentos de sa��da haver�a a exibi�c ao deuma mensagem de erro e a interrup�c ao da function�

Se nenhum ou apenas um argumento de sa��da for especi�cado ent ao ser�a retornado a raiz daequa�c ao na vari�avel Raiz� Se forem dois argumentos ent ao al�em da Raiz ser�a retornado acondi�c ao de erro na vari�avel Erro� Se forem tr�es argumentos de sa��da ent ao ser ao retornadosRaiz� Erro e o n�umero de itera�c oes Iter� Mais de tr�es argumentos de sa��da causam aexibi�c ao de uma mensagem de erro e a n ao execu�c ao da function�

Para calcular a raiz de f�x� � cos�x� � ��px � � pertencente ao intervalo ! �"� comtoler�ancia � � ���� com no m�aximo � itera�c oes� listando os resultados intermedi�arios eretornado a raiz� a condi�c ao de erro e o n�umero de itera�c oes

�� �r�e�i� � pegaso�cosx" ����sqrtx������� ��e��������

Calculo de raiz de equacao pelo metodo pegaso

iter a b x Fx delta'x

� ������� ������ ���� � ��� � �e��� ���� ���e���

������ ���� � �� � ����� �e��� ��� �e���

� ������ �� � ������� ���� ��e��� ���� ��e���

� �� � ������� ��� �� �������e��� ����� ��e���

� ������� ��� �� ������� �������e�� �������e��

r �

������

e �

i �

Por sua vez� calculando a mesma raiz com os argumentos de entrada opcionais previamenteatribu��dos� ou seja� toler�ancia � � ����� m�aximo de � itera�c oes� n ao listando os resultadosintermedi�arios e al�em disto retornado somente a raiz e a condi�c ao de erro

�� �r�e� � pegaso�cosx" ����sqrtx������� �

r �

������

Page 65: Tutorial de matlab (em português)

��� Exerc��cios ��

e �

Conforme j�a mencionado� a vari�aveis de uma function s ao locais� ou seja� s�o podem ser refe�renciadas internamente� n ao sendo reconhecidas pelo espa�co de trabalho e outras function#s�No entanto� al�em do uso de argumentos� um outro modo de trocar informa�c oes entre o espa�code trabalho e functions#s �e pelo uso de vari�aveis globais� A declara�c ao

global lista de vari�aveis�

faz com que as vari�aveis especi�cadas na lista de vari�aveis� tornem�se globais e por�tanto esta declara�c ao deve aparecer no programa e nas function#s de interesse� O uso devari�aveis globais torna mais dif��cil o entedimento e a modi�ca�c ao das function#s� al�em detornar os m�odulos do programa menos independentes� Por estas raz oes� a utiliza�c ao devari�aveis globais deve ser evitada�

O comando return colocado dentro de uma function causa um retorno normal para ocomando seguinte �aquele que chamou a function� Ele �e �util quando da consist�encia dosdados�

����� Depura�cao de programa

O comando keyboard interrompe a execu�c ao de um programa e transfere o controle parao teclado� Este modo especial� indicado pela letra K antes dos caracteres ��� permite listarvari�aveis ou mesmo executar qualquer comando do MATLAB� O modo criado pelo keyboardtermina com a execu�c ao do comando return�

����� Gerenciamento de arquivos

O MATLAB fornece diversos comandos para gerenciamento de arquivos� os quais s ao mos�trados na tabela ����

comando descri�c ao

what lista os arquivos �m� �mat e �mex do diret�orio corrente�dir ou ls lista os arquivos do diret�orio corrrente�type nome do arquivo� exibe o arquivo nome do arquivo��m�delete nome do arquivo� remove o arquivo nome do arquivo��cd dir� ou chdir dir� muda o diret�orio para dir��cd ou chdir ou pwd mostra o diret�orio corrente�which nome do arquivo� mostra em que diret�orio est�a nome do arquivo��m�

Tabela ���� Comandos para gerenciamento de arquivos�

� Exerc��cios

Se�c�ao � �

���� Veri�car as diferen�cas entre os formatos de exibi�c ao para as vari�aveis a�sqrt ��e�exp���� x������ y�x� e M�rand���

Page 66: Tutorial de matlab (em português)

� Cap��tulo � MATLAB como linguagem de programa�c�ao

a� M� dispa�� dispM��format bank� x� dispx�� format short e� a� e� x�

format compact� a� e�x� format� fprintf������f �� ��e!n��a�e��

fprintf�����f!n��x�� fprintf�����f!n��y�

���� Observar os resultados dos comandos para controle do espa�co de trabalho utilizando asvari�aveis do exerc��cio ����

who� whos� save� clear� who� load� whos�

save esptrab x y� clear� who� load esptrab� whos� x� y

���� Gravar os comandos do exerc��cio ��� no arquivo diario e usar type diario para ver oseu conte�udo�

���� Gerar uma tabela de x� sen�x�� � x � ��� e grav�a�la no arquivo seno�dat�

���� Acrescentar o valor � �� sen�� �� na �ultima linha do arquivo seno�dat gravado noexerc��cio ����

Se�c�ao � �

���� Qual o valor de b da estrutura if�end mostrada na se�c ao ����� para a � ���

���� Encontrar o valor de b da estrutura if�else�end da se�c ao ����� para a � ���

��� De�nir o valor de b da estrutura if�else�end da se�c ao ����� para a � ��

���� Achar o valor de b da estrutura if�elseif�end da se�c ao ����� para a � ���

���� Qual o valor de b da estrutura if�elseif�end da se�c ao ����� para a � ���i�

Se�c�ao � �

����� Determinar o valor de s da estrutura for�end mostrada na se�c ao ����� para n � ��

����� Calcular a soma das linhas� das colunas e da diagonal de um quadrado m�agico deordem ��

����� Explicar como �e feita a determina�c ao da precis ao de um computador�

����� Escrever os comandos para calcular a norma�� de um vetor x com n elementos ecomparar com a fun�c ao norm do MATLAB�

����� De�nir os comandos para calcular a norma�� de uma matriz A de ordem n e compararcom a fun�c ao norm�

Se�c�ao � �

����� Escrever uma function para calcular o valor absoluto de um n�umero real ou complexo�

Page 67: Tutorial de matlab (em português)

��� Exerc��cios ��

����� Dadas as matrizes triangulares U � fuijg e L � flijg e os vetores b e c� escrever umafunction para calcular x tal que Ux � b e outra para calcular y tal que Ly � c�

�BBBBBBB�

u�� u�� u�� � � � u�nu�� u�� � � � u�n

u�� � � � u�n���unn

�CCCCCCCA

�BBBBBBB�

x�x�x����xn

�CCCCCCCA�

�BBBBBBB�

b�b�b����bn

�CCCCCCCAe

�BBBBBBB�

l��l�� l��l�� l�� l�����

������

ln� ln� ln� � � � lnn

�CCCCCCCA

�BBBBBBB�

y�y�y����yn

�CCCCCCCA�

�BBBBBBB�

c�c�c����cn

�CCCCCCCA

���� Criar o arquivo almaxmin�m

n�input�Ordem da matriz � ���

A�randn��

maior�maxmaxA��

menor�minminA��

����� Executar o programa acima para n � �� � e ��

���� Gerenciar o diret�orio usando

what� dir� which almaxmin� type almaxmin� delete almaxmin�m� what

Page 68: Tutorial de matlab (em português)

� Cap��tulo � MATLAB como linguagem de programa�c�ao

Page 69: Tutorial de matlab (em português)

Cap��tulo �

MATLAB para Computa�c�ao Cient���ca

��� Medidas de tempo e opera�coes

O MATLAB prov�e dois modos de analisar o desempenho de um dado m�etodo� o tempo deexecu�c ao e o n�umero de opera�c oes aritm�eticas�

Usando o tic�toc �e poss��vel saber o tempo gasto para a execu�c ao de um grupo de comandos�A sua sintaxe �e

tic

comandos�

vari�avel��toc

O tic inicia a contagem do tempo e o toc fornece o tempo� em segundos� passado desdeo �ultimo tic� A atribui�c ao do tempo gasto a vari�avel� �e opcional� No entanto� se ocomputador estiver executando v�arias tarefas simultaneamente� tic�toc pode n ao ser umamedida muito con��avel� Uma medida mais con��avel �e obtida por cputime que fornece otempo de CPU �unidade central de processamento� que �e o tempo gasto para execu�c ao deopera�c oes aritm�eticas e l�ogicas� A sua sintaxe �e

vari�avel ���cputime

comandos�

vari�avel ��cputime�vari�avel ��

Por sua vez a fun�c ao flops fornece o n�umero acumulado de opera�c oes de ponto �utuante�bastando executar o comando flops�� para zerar o contador� Cumpre observar que flopsn ao conta exatamente todas as opera�c oes mas sim as que o MATLAB considera mais im�portantes� Al�em disso� a avalia�c ao de uma fun�c ao elementar �seno� exponencial� etc� paraargumento real �e contado apenas como uma opera�c ao aritm�etica� o que est�a longe de serverdade� Portanto� flops deve ser usado com cautela� Por exemplo� considere a execu�c aodo programa no arquivo medidas�m

A�magic����� B�rand�����

tic� t�cputime� flops���

A�B�

operacoes�flops�

tic'toc�toc�

��

Page 70: Tutorial de matlab (em português)

�� Cap��tulo �� MATLAB para Computa�c�ao Cient��ca

tempo'de'cpu�cputime�t�

megaflops�operacoes����e���tempo'de'cpu�

operacoes� tic'toc� tempo'de'cpu� megaflops

Os resultados produzidos em uma esta�c ao de trabalho SUN � foram

�� medidas

operacoes �

��������

tic'toc �

������

tempo'de'cpu �

�����

megaflops �

�����

A diferen�ca de tempo produzida por tic�toc e cputime pode ser bem signi�cativa se ocomputador estiver executando outros programas ao mesmo tempo� Observe que toc deveestar ap�os flops pois ele requer � opera�c oes� �E sabido que a multiplica�c ao matricial entreduas matrizes de ordem n demanda �n��n� opera�c oes� no entanto o MATLAB s�o considerao termo de maior grau �� � ��� � �����

��� �Algebra linear

O nome MATLAB �e um acronismo de MATrix LABoratory �laborat�orio de matriz�� e certa�mente �e na �area de �algebra linear que o MATLAB apresenta suas maiores pontencialidades�Nesta se�c ao ser ao mostrados alguns comandos do programa relativos aos t�opicos usualmenteabordados em textos de C�alculo Num�erico� Para um conhecimento mais amplo dos comandosdo MATLAB com respeito �a vetores e matrizes usar o comando help matfun�

����� Decomposi�coes e inversa

A fun�c ao cholX� fatora uma matriz sim�etrica de�nida positiva pelo m�etodo de Cholesky� H�adois usos� U�cholX� produz uma matriz triangular superior U tal que U��U�X� Se X n ao forde�nida positiva ent ao ser�a emitida uma mensagem de erro� Por outro lado� �U�p��cholX�nunca produz uma mensagem de erro� Se X for de�nida positiva ent ao p�� e U ser�a igual aomencionado acima� Por�em� se X n ao for de�nida positiva ent ao p ser�a um inteiro positivoe U ser�a uma matriz triangular superior de ordem p�� tal que U��U�X��p�����p���� Porexemplo�

�� A��� � � � �� ��� �� ����

�� U�cholA�

U �

�� �

� � �

� � �

�� B��� � �� � � �� � � ��

B �

� � �

Page 71: Tutorial de matlab (em português)

���� �Algebra linear ��

� � �

� � �

�� U�cholB�

*** Error using ��� chol

Matrix must be positive definite�

�� �U�p��cholB�

U �

� �

� �

p �

�� U��U

ans �

� �

� �

A fun�c ao luX� faz a decomposi�c ao LU da matrix X usando pivota�c ao parcial� O usodo comando �L�U�P��luX� gera uma matriz triangular inferior unit�aria L� uma matriztriangular superior U e uma matriz de permuta�c oes P� tal que P�X�L�U� Contudo� o uso de�E�D��luX� produz D�U e P�E�L de modo que X�E�D� Por exemplo�

�� M�� �� �� � � ��� � � ��

M �

�� �

� � ��

� � �

�� �L�U�P��luM�

L �

������ � �

�� ��� ������ �

������ ������� ������

U �

������ ������ �������

� ������ �� ���

� � ��� �

P �

� � �

� � �

� � �

�� R�P�M�L�U � P�M � L�U

R �

� � �

� � �

� � �

�� �E�D��luM�

E �

������ ������� ������

Page 72: Tutorial de matlab (em português)

�� Cap��tulo �� MATLAB para Computa�c�ao Cient��ca

������ � �

�� ��� ������ �

D �

������ ������ �������

� ������ �� ���

� � ��� �

�� R�M�E�D � M � E�D

R �

� � �

� � �

� � �

A fun�c ao invX� calcula a inversa de X� tal que X�invX��eyesizeX��� Para a matriz Macima

�� N�invM�

N �

������ �� �� �������

���� � ��� �� ������

��� � ������� ������

�� roundM�N�

ans �

� � �

� � �

� � �

A fun�c ao qrX� faz a decomposi�c aoQR da matriz X de dimens aom�n� Esta fatoriza�c ao podeser usada tanto para matriz quadrada quanto para matriz retangular� O uso de �Q�R��qrX�produz uma matriz ortonormal Q de ordemm �Q��Q�eyesizeQ��� e uma matriz triangularsuperior R com a mesma dimens ao m � n de X� de modo que X�QR� J�a �Q�R�P��qrX�

produz uma matriz ortogonal Q� uma matriz triangular superior R com elementos da diagonaldecrescentes e uma matriz de permuta�c oes P de ordem n� tal que X�P�Q�R� Por exemplo�

�� A�� ��� � �� � ��� � ��

A �

��

� �

� ��

� �

�� �Q�R��qrA�

Q �

��� �� ���� � ������� �������

����� � ���� �� ������ �������

������ ������ ��� �� ��� �

��� ��� ����� � ������� ���� �

R �

������� ������

� � �� ��

� �

Page 73: Tutorial de matlab (em português)

���� �Algebra linear ��

� �

�� roundQ��Q� � Q e� ortonormal

ans �

� � � �

� � � �

� � � �

� � � �

�� roundA�Q�R� � A � Q�R

ans �

� �

� �

� �

� �

�� �Q�R�P��qrA�

Q �

������� ������� ������� �������

������ ������� ������ �������

���� �� ������� ������ ��� ���

������ ����� � ������ ������

R �

��� �� �� ��

� ���� ��

� �

� �

P �

� �

� �

�� roundA�P�Q�R� � A�P � Q�R

ans �

� �

� �

� �

� �

A fun�c ao svdX� faz a decomposi�c ao do valor singular de uma matriz X de dimens ao m� n�O comando �U�S�V��svdX� produz uma matriz ortonormal U de ordem m� uma matrizdiagonal S de dimens ao m � n contendo os valores singulares de X em ordem decrescentee uma matriz ortonormal V de ordem n� de modo que X�U�S�V�� Para se obter apenas osvalores singulares de X em um vetor s basta s�svdX�� O uso de �U�S�V��svdX��� produzuma decomposi�c ao mais econ�omica pois para m � n ter�se��a apenas as n primeiras colunasde U e S ser�a de ordem n� Por exemplo�

�� A�� ��� � �� � ��� � ���

�� �U�S�V��svdA�

U �

������� ������ ������� �������

������ ������ ������ �������

������� ������� ��� �� ��� �

Page 74: Tutorial de matlab (em português)

�� Cap��tulo �� MATLAB para Computa�c�ao Cient��ca

����� ���� �� ������� ���� �

S �

� ����� �

� �� � �

� �

� �

V �

��� �� �������

������ ��� ��

�� roundU��U� � U e� ortonormal

ans �

� � � �

� � � �

� � � �

� � � �

�� roundV��V� � V e� ortonormal

ans �

� �

� �

�� roundA�U�S�V�� � A � U�S�V

ans �

� �

� �

� �

� �

�� s�svdA�

s �

� �����

�� � �

�� �U�S�V��svdA���

U �

������� ������

������ ������

������� �������

����� ���� ��

S �

� ����� �

� �� � �

V �

��� �� �������

������ ��� ��

����� Solu�cao de sistemas

Dado um sistema Ax � b� a solu�c ao x pode ser facilmente calculada pelo MATLAB pelooperador !� por exemplo� para um sistema com matriz sim�etrica

�� A��� � � � �� ��� �� ���

Page 75: Tutorial de matlab (em português)

���� �Algebra linear ��

A �

� �

� �� ��

�� ��

�� b��� �� �����

b �

��

���

�� x�A!b

x �

��

�� r�b�A�x��

r �

� � �

No caso de uma matriz n ao�sim�etrica

�� A��� �� � � � ��� � �� ��

A �

� ��

� � ��

� �� �

�� b���� ��� ��

b �

��

���

�� x�A!b

x �

�����

�������

������

�� r�b�A�x��

r �

� � �

����� Autovalores e autovetores

Os autovalores s ao as ra��zes do polin�omio caracter��stico da matriz� A fun�c ao poly constr�oio polin�omio caracter��stico de uma matriz� Por exemplo�

�� A��� �� �� �� � � � ��

A �

� �� �

�� �

� �

Page 76: Tutorial de matlab (em português)

� Cap��tulo �� MATLAB para Computa�c�ao Cient��ca

�� p�polyA�

p �

������ �������� ������� �� �����

�� e�rootsp�

e �

� ���

�����

������

A fun�c ao eigA� permite o c�alculo do autosistema de A �autovalores e autovetores� por umm�etodo mais e�ciente do que construindo o polin�omio caracter��stico� O uso de �V�D��eigA�produz uma matriz diagonal D contendo os autovalores � e uma matriz V com os correspon�dentes autovetores� Para obter apenas os autovalores em um vetor d basta d�eigA�� Se amatriz for sim�etrica ent ao os autovetores s ao mutuamente ortogonais �V��V�eyesizeA����Para a matriz sim�etrica A de�nida acima

�� �V�D��eigA�

V �

������� ������ ��� ��

������ ����� �� ���

������� ����� �����

D �

����� � �

� ������ �

� � � ���

�� d�eigA�

d �

�����

������

� ���

�� roundV��V�

ans �

� � �

� � �

� � �

����� Normas e condi�cao

O MATLAB possui uma fun�c ao para calcular diversas normas de vetores e matrizes� bem co�mo uma fun�c ao para determinar o n�umero de condi�c ao de matrizes� A fun�c ao normX�p� for�nece a norma p de um vetor ou matriz X� No caso de um vetor x� p pode ser qualquer n�umero�inteiro ou real� positivo ou negativo�� al�em dos caracteres inf �normx�inf��maxabsx���e �inf �normx��inf��minabsx���� Se o par�ametro p for omitido ent ao �e assumido p� �ou seja� normx��normx� �� No caso de uma matriz X� p pode ser somente �� � inf ou�fro� �Frobenius� e se ele for omitido tamb�em �e assumido p� �normX��normX� ��� Porexemplo�

�� x��� � � ���

�� A��� �� � � �� � � ��

Page 77: Tutorial de matlab (em português)

���� �Algebra linear ��

�� normx� �� normx�

ans �

�����

ans �

�����

�� normx���

ans �

��

�� normx�inf�

ans �

�� normA� �� normA�

ans �

�������

ans �

�������

�� normA��fro��

ans �

������

A fun�c ao dota�b� calcula o produto interno entre os vetores a e b� os quais devem ter omesmo tamanho� Se A e B forem matrizes ent ao dotA�B� produzir�a um vetor linha contendoo produto interno entre as correspondentes colunas de A e B� Assim�

�� v�����

�� y�������

�� d�dotv�y�

d �

���

A fun�c ao condX� calcula o n�umero de condi�c ao da matriz X de�nido em termos da norma���ou seja�

condX� � ��X� � kXk�kX��k�Para a matrix

�� B��� � �� �� � �� � ��

�� condB�

ans �

�����

A fun�c ao rcondX� fornece uma estimativa do rec��proco do n�umero de condi�c ao de X de�nidoem termos da norma��� Se X for uma matriz bem�condicionada ent ao rcondX� �e pr�oximode � e se X for mal�condicionada rcondX� ser�a pr�oximo de � Para a matriz B acima

�� r�rcondB�

r �

������

�� ��r

ans �

� ���

Page 78: Tutorial de matlab (em português)

� Cap��tulo �� MATLAB para Computa�c�ao Cient��ca

A fun�c ao detX� calcula o determinante da matriz X� Para A e B de�nidas previamente�

�� detA�

ans �

�� detB�

ans �

A fun�c ao traceM� determina o tra�co da matriz M� isto �e� a soma dos elementos da suadiagonal principal� Para a matriz A de�nida anteriormente�

�� t � traceA�

t �

��

�� C�alculo de zero e m��nimo de fun�cao

O MATLAB possui fun�c oes para manipular polin�omios� calcular ra��zes de equa�c oes e deter�minar os m��nimos de fun�c oes� Para mais informa�c oes sobre estes t�opicos usar help polyfun�

����� Opera�coes com polin omios

O MATLAB fornece v�arias fun�c oes que permitem que as opera�c oes envolvendo polin�omiosseja feita de um modo bem simples� No MATLAB� os coe�cientes de um polin�omio s aode�nidos como elementos de um vetor como por exemplo� P �x� � c�x

n c�xn�� � � � cnx

cn� �e representado pelo vetor c�

Avalia�c�ao

Um polin�omio pode ser avaliado no MATLAB pela fun�c ao polyvalc�x�� onde o vetor ccont�em os coe�cientes do polin�omio e x cont�em os pontos nos quais ele deve ser avaliado�Por exemplo� para avaliar P �x� � �x� � �x �x� �x� � �x � nos pontos x � �� �� �� � e�

�� c � �� � � � �� ���

�� x � ����

�� y � polyvalc�x�

y �

�� � � ��� �� � ��

Adi�c�ao e subtra�c�ao

Apesar do MATLAB n ao dispor de uma fun�c ao para adicionar polin�omios� esta opera�c aopode ser efetuada pela adi�c ao vetorial� Assim� para somar os polin�omios a�x� � �x���x� �e b�x� � �x� �x� � x� � basta�� a � �� �� � ���

Page 79: Tutorial de matlab (em português)

��� C�alculo de zero e m��nimo de fun�c�ao ��

�� b � � � �� ����

�� c � a � b

c �

� � �� ��

resultando c�x� � �x� x� � x� �� e para subtrair�� d � a � b

d �

� � � �

Se os polin�omios tiverem graus diferentes ent ao o vetor correspondente ao de menor graudeve ser preenchido com zeros �a esquerda de modo que ambos vetores tenham o mesmotamanho� Por exemplo� para somar e�x� � �x� �x� �x� � e f�x� � ��x ��� e � � � � ����

�� f � �� � �� ��

�� g � e � f

g �

� �

Multiplica�c�ao

Se os vetores a e b cont�em os coe�cientes dos polin�omios a�x� e b�x�� respectivamente� ent aoos coe�cientes do polin�omio resultante da multiplica�c ao de a�x� por b�x� pode ser obtido pelafun�c ao conva�b�� Por exemplo� a multiplica�c ao de a�x� � �x� � �x � por b�x� � �x� ��e feita no MATLAB por meio de

�� a � �� �� ���

�� b � � ����

�� c � conva�b�

c �

� ��� �� ��

resultando no polin�omio c�x� � �x����x� ��x��� Para multiplicar mais de dois polin�omiosa fun�c ao conv deve ser usada repetidamente�

Divis�ao

O comando �q�r��deconva�b� faz a divis ao entre os polin�omios cujos coe�cientes s ao oselementos dos vetores a e b� respectivamente� O vetor q cont�em os coe�cientes do polin�omioquociente e o vetor r cont�em os coe�cientes do polin�omio obtido pelo resto da divis ao� ouseja� a�convq�b��r� Por exemplo� a divis ao de d�x� � �x � �x� �x� � �x � pore�x� � x� � �x � �e efetuada por�� d � � �� � �� ���

�� e � �� �� ���

�� �q�r� � deconvd�e�

q �

� ��

r �

� � � � ��

Page 80: Tutorial de matlab (em português)

�� Cap��tulo �� MATLAB para Computa�c�ao Cient��ca

resultado no quociente q�x� � �x� �x �� com resto r�x� � ��x� ��

Deriva�c�ao

O MATLAB oferece a fun�c ao polyder para a deriva�c ao polinomial� Deste modo� para obtera primeira e segunda derivada de P �x� � x �x� � ��x� ��x� ��� p � �� �� �� ����

�� p� � polyderp�

p� �

� � � � ��

�� p � polyderp��

p �

� � � �

resultando P ��x� � �x� �x� � ��x �� e P ���x� � ��x� ��x� ���

Constru�c�ao a partir das razes

Dadas as ra��zes de uma equa�c ao polinomial em um vetor r� a fun�c ao polyr� constr�oi opolin�omio associado� Por exemplo� se � � ��� � � � e � � � ent ao�� r � ��� � ���

�� p � polyr�

p �

� �� � �

produz o polin�omio P �x� � x� � �x� �x ���

����� C�alculo de ra��zes

O MATLAB possui duas poderosas fun�c oes para o c�alculo de raiz de equa�c ao� A fun�c aoroots obt�em todas as ra��zes de uma equa�c ao alg�ebrica e a fun�c ao fzero determina uma raizde uma equa�c ao alg�ebrica ou transcendente�

Fun�c�ao roots

Se o vetor linha c cont�em os coe�cientes do polin�omio P �x� � c�xn c�x

n�� � � � cnx cn�ent ao a fun�c ao rootsc� fornecer�a um vetor coluna contendo as n ra��zes de P �x� � � Porexemplo� para calcular as � ra��zes de P �x� � x �x� � ��x� � ��x� �� � �� c � �� ��� ��� ���

�� r � rootsc�

r �

�������

������

� �����

������

Page 81: Tutorial de matlab (em português)

��� C�alculo de zero e m��nimo de fun�c�ao ��

Pode ser mostrado que as ra��zes de P �x� � s ao os autovalores da matriz companheira

C �

�BBBBBBB�

�c��c� �c��c� � � � �cn�c� �cn��c�� � � � � � � � ���

������

������

� � � �

�CCCCCCCA�

Deste modo� r � rootsc� �e equivalente �a

�� n � lengthc� � ��

�� C � diagonesn����������

�� C���� � �c �n����c��

C �

� �� �� � �

� � � �

� � � �

� � � �

�� r � eigC�

r �

�������

������

� �����

������

Fun�c�ao fzero

A fun�c ao fzero permite o c�alculo da raiz de uma equa�c ao qualquer de uma vari�avel� Suasintaxe �e

fzero�fun-c�ao���x�� ou

fzero�fun-c�ao���x��toler� ou

fzero�fun-c�ao���x��toler�exibe�

onde �fun-c�ao�� �e o nome de um arquivo M� no qual a fun�c ao �e de�nida� x� �e o valorinicial� toler �e a toler�ancia para a raiz �se n ao de�nida ent ao eps � ���������� �e usada�e se exibe �� as itera�c oes ser ao mostradas� Por exemplo� calcular uma raiz da equa�c aof�x� � �x�sen�x�e�x � de�nida no arquivo f�m abaixo e cujo esbo�co �e apresentado na�gura ����

function y � fx�

y � ��x" �sinx��exp�x��

com x���� usando toler�ancia padr ao eps e sem exibir as itera�c oes�

�� raiz � fzero�f�� �

Zero found in the interval� ���� � �� ���

raiz �

������

Page 82: Tutorial de matlab (em português)

�� Cap��tulo �� MATLAB para Computa�c�ao Cient��ca

0 1 2 3 4 5 6 7 8 9 10−1

−0.5

0

0.5

1

1.5

2

x

f(x)

f(x)=3x2sen(x)e−x

Figura ���� Ra��zes� m�aximo e m��nimo de f�x� � �x� sen�x�e�x�

A fun�c ao fzero �e uma implementa�c ao do efetivo e e�ciente algoritmo de van Wijngaarden�Dekker�Brent baseado em aproxima�c ao quadr�atica inversa e bisse�c ao�

����� Determina�cao dos m��nimos de fun�coes

A fun�c ao fmin�fun-c�ao���a�b� determina o m��nimo de uma fun�c ao de uma vari�avel que seencontra no intervalo �a� b�� A cadeia de caracteres �fun-c�ao�� pode ser uma express ao ouo nome de um arquivo M no qual a fun�c ao est�a de�nida� Para a fun�c ao f�x� � �x�sen�x�e�x

de�nida no arquivo f�m na se�c ao ����� existe um m��nimo no intervalo ��� ��� conforme a�gura ���� Este m��nimo pode ser obtido usando o arquivo M

�� minimo � fmin�f������

minimo �

�� ��

ou especi�cando diretamente a express ao

�� minimo � fmin���x" �sinx��exp�x�������

minimo �

�� ��

Considerando que o m�aximo de f�x� �e igual ao m��nimo de �f�x�� ent ao o m�aximo def�x� � �x�sen�x�e�x � ��� �� �e calculado por�� maximo � fmin����x" �sinx��exp�x����� �

maximo �

��� ��

O help deve ser usado para obter mais informa�c oes sobre fmin e a fun�c ao fmins� usada paracalcular o m��nimo de fun�c ao de v�arias vari�aveis�

��� Interpola�cao e ajuste de curvas

O MATLAB possui fun�c oes para c�alculo das diferen�cas �nitas ascendentes� interpola�c aounidimensional e bidimensional e para regress ao polinomial�

Page 83: Tutorial de matlab (em português)

���� Interpola�c�ao e ajuste de curvas ��

����� C�alculo das diferen�cas nitas ascendentes

A fun�c ao diffx� calcula a diferen�ca entre dois elementos adjacentes do vetor x� No casode x ser uma matriz ser ao tomadas as diferen�cas em cada uma das colunas� Por exemplo�

�� x � �� � � ��

x �

� � � �

�� d� � diffx�

d� �

� � �

Al�em disso� diffx�n� determina as diferen�cas �nitas de ordem n

�� d � diffx� �

d �

� � �

A fun�c ao diff pode tamb�em ser utilizada para estimar a derivada em um ponto de umafun�c ao tabelada�

����� Interpola�cao unidimensional

Dada uma tabela com pares �xi� yi� especi�cados nos vetores x e y� respectivamente� ent aoos valores de z contidos no vetor z podem ser interpolados usando a fun�c ao interp�� cujasintaxe �e

resultado� � interp�x�y�z��m�etodo���

onde a cadeia de caracteres �m�etodo�� especi�ca o m�etodo a ser utilizado na interpola�c ao�sendo

par�ametro m�etodo

�linear� interpola�c ao linear��cubic� interpola�c ao por polin�omios c�ubicos��spline� interpola�c ao por splines c�ubicos��nearest� interpola�c ao vizinho mais pr�oximo�

Quando o m�etodo n ao for especi�cado ser�a assumida uma interpola�c ao linear� Os valores dovetor x devem crescer ou decrescer monotonicamente� Por exemplo� sejam cinco pontos dafun�c ao y � x� para �� � x � � de�nidos por�� x � linspace�������� � abscissas dos pontos

�� y � x�"�� � ordenadas

Interpolando o valor z � � � usando os quatro m�etodos

�� interp�x�y������linear��

ans �

������

Page 84: Tutorial de matlab (em português)

�� Cap��tulo �� MATLAB para Computa�c�ao Cient��ca

�� interp�x�y������cubic��

ans �

���� �

�� interp�x�y������spline��

ans �

�� � �

�� interp�x�y������nearest��

ans �

���� �

Considerando que o valor exato �e � � � � ���� o m�etodo de interpola�c ao com splines

c�ubicos produziu o melhor resultado para este caso�

As aproxima�c oes da fun�c ao y � x por tr�es fun�c oes interpoladoras de interp� podem servisualizadas pelos comandos

x� � linspace��������� � abscissas para a interpolacao

y� � x��"�� � ordenadas da curva real

c � interp�x�y�x���cubic��� � interpolacao cubica

s � interp�x�y�x���spline��� � interpolacao por splines

plotx�y��o��x�y������x��y������x��c������x��s������ grid on

xlabel�x��� ylabel�y��� title��M��setstr �����todos de interp����

legend�pontos���linear���y�x"����cubica���splines���� � coloca legenda

A partir dos � pontos em x� foram criados os vetores c e s que cont�em as ordenadas obtidaspor interpola�c ao usando polin�omios c�ubicos e splines� respectivamente� A �gura ��� mostragra�camente os resultados da fun�c ao interp�� Os cinco pontos iniciais est ao representadospor o� Uma interpola�c ao linear �e feita implicitamente desde que o comando plot interligaos pontos por retas� O gr�a�co da fun�c ao y � x est�a representado por uma linha s�olida�a aproxima�c ao por polin�omios c�ubicos por uma linha tracejada e os splines por uma linhapontilhada� Usualmente os splines produzem uma aproxima�c ao mais suave da fun�c ao comopode ser observado neste caso� Deve ser mencionado que a fun�c ao interp pode ser usadapara se obter uma interpola�c ao bidimensional�

����� Ajuste polinomial

O comando c � polyfitx�y�n� atribui ao vetor c os valores dos coe�cientes do polin�omiode quadrados m��nimos de grau n que melhor se ajusta aos pontos �xi� yi� de�nidos nos vetoresx e y� O polin�omio �e na forma

Pn�x� � c�xn c�x

n�� c�xn�� � � � cnx cn��

Para exempli�car o uso de polyfit� sejam os dados relacionando a temperatura em grausCelsius e Farenheit obtidos a partir de um term�ometro com pouca exatid ao

�� c � ��� �� �� � � � � � �� � ��

�� f � ��� �� � �� �� �� �� �� � ����

Para obter a reta de quadrados m��nimos �f � P��c� � b�c b� basta

Page 85: Tutorial de matlab (em português)

���� Interpola�c�ao e ajuste de curvas ��

−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1−0.2

0

0.2

0.4

0.6

0.8

1

1.2

x

y

Métodos de interp1

pontos linear y=x4 cubica splines

Figura ���� Aproxima�c ao de y � x pela fun�c ao interp��

�� b � polyfitc�f���

b �

��� � �������

Apesar da pouca exatid ao dos dados o resultado n ao foi muito diferente da rela�c ao exataque �e F � �

�C ��� Os pontos do polin�omio de regress ao de grau � avaliados para os valores

de c� isto �e� P �ci� s ao obtidos pelo comando

�� p � polyvalb�c��

os quais podem ser mostrados juntamente com os res��duos do ajuste ri � fi � P �ci�

�� �c�f�p�f�p��

ans �

������� ������� ���� � ���� �

������� ������� ��� ��� ��� ���

������� � ����� ������� ��� �

������ ������� � � ��� ������

������ ������� ������� �� ���

������ ������� ��� ��� �����

������ ������� ������� �������

������ ������� ���� �� �� ���

������� � ����� ��� ��� ����

� ����� ������� ���� � ���� �

O diagrama de dispers ao com os pares �ci� fi� representados por o� bem como a reta dequadrados m��nimos s ao produzidos pela seq�u�encia

�� plotc�f��o��c�p�� grid on

�� xlabel�Graus Celsius��� ylabel�Graus Farenheit���

�� title�Ajuste polinomial de grau ���

gerando o gr�a�co da �gura ���� Cumpre observar que uma regress ao linear m�ultipla podeser obtida usando as fun�c oes qr ou svd descritas na se�c ao ������

Page 86: Tutorial de matlab (em português)

� Cap��tulo �� MATLAB para Computa�c�ao Cient��ca

14 16 18 20 22 24 26 28 30 3240

42

44

46

48

50

52

Graus Celsius

Gra

us F

aren

heit

Ajuste polinomial de grau 1

Figura ���� Regress ao polinomial usando a fun�c ao polyfit�

�� Integra�cao num�erica

O MATLAB disp oe de algumas fun�c oes para calcular numericamente a integral de umafun�c ao de uma vari�avel�

Fun�c�ao trapz

A fun�c ao trapzx�y� calcula a integral de y � f�x�� com os pares �xi� yi� sendo de�nidosnos vetores x e y� respectivamente� usando a regra do trap�ezio� Se os valores xi tiverem umespa�camento unit�ario ent ao o par�ametro x poder�a ser omitido� Por exemplo� seja a fun�c aof�x� � cos��x ��x� x���� cujo esbo�co �e mostrado na �gura ���� Para calcular

1 2 3 4 5 6 7 8 9−60

−40

−20

0

20

40

60

80

100

x

f(x)

f(x)=cos(3x+1)x2+x1,5

Figura ���� Integra�c ao de f�x� � cos��x ��x� x����

Z �

cos��x ��x� x��� dx

usando trapz com espa�camento ��

Page 87: Tutorial de matlab (em português)

���� Integra�c�ao num�erica ��

�� x � ������ �

�� y � cos��x�����x�" �x�"����

�� area � trapzx�y�

area �

�� ���

A fun�c ao a ser integrada pode tamb�em estar de�nida em uma function

function y � gx�

y � cos��x�����x�" �x�"����

Assim� para calcular a integral acima com espa�camento ��

�� x � ������� �

�� y � gx��

�� area � trapzx�y�

area �

�� �����

Considerando que o resultado exato da integral �e � ������� quando se diminui o es�pa�camento o resultado da integra�c ao num�erica torna�se mais exato�

Fun�c�oes quad e quad�

Um modo mais e�ciente de calcular uma integral numericamente com o MATLAB �e pelasfun�c oes quad e quad�� A suas sintaxes s ao

quad�fun-c�ao���a�b�toler"ancia��tra-ca��

quad��fun-c�ao���a�b�toler"ancia��tra-ca��

onde a cadeia de caracteres �fun-c�ao�� �e o nome de uma function na qual a fun�c ao a serintegrada est�a de�nida� a e b s ao os limites inferior e superior de integra�c ao� respectivamente�toler"ancia� especi�ca a toler�ancia para o c�alculo �se n ao especi�cada ent ao �e assumidoo valor ���� e tra-ca� �e um par�ametro que se tiver um valor n ao�nulo faz com que sejamostrado um esbo�co da integra�c ao� Tanto toler"ancia� quanto tra-ca� s ao par�ametrosopcionais� A fun�c ao quad� produz resultados mais exatos do que quad� Para calcular aintegral mostrada na se�c ao anterior

�� area � quad�g���� �

area �

�� �����

�� area � quad��g���� �

area �

�� �����

Uma integra�c ao mais exata pode ser obtida por

�� area � quad��g���� ��e����

area �

�� �����

Deve ser lembrado que as f�ormulas de Simpson produzem resultados mais exatos do que aregra do trap�ezio quando o mesmo n�umero de pontos s ao usados�