Aula 10 Modelagem

Embed Size (px)

Citation preview

Comando de formataoO comando format controla como o s nmeros aparecem na tela. O formato de exibio padro do MATLAB o formato short, que utiliza quatro dgitos decimais. Voc pode exibir mais digitando format long, o que resulta na exibio de 16 dgitos. Para retornar ao modo padro, digite format short.Plotando com o MATLABO MATLAB possui muitas funes poderosas e fceis de serem utilizadas para a criao de plotagens retilneas, logartmicas, de superfcie e de contornos. Como um exemplo simples, plotemos a funo y=3cos(2x) para 0x7. A funo plot(x,y) gera um grfico com o s valores de x no eixo horizontal (as abcissas) e com o s valores de y no eixo vertical (as ordenadas). A sesso >>x=0:0.01:7;>>y=3*cos(2*x);>>plot(x,y),xlabel(x),ylabel(y)Alguns comandos de plotagem do MATLABComando descrio

[x,y]=ginput(n)Habilita o mouse a capturar n pontos de um plotagem, e retorna as coordenadas x e y no vetores x e y, ambos com o tamanho n.

GridInsere linhas de grid na plotagem

plot(x,y)Habilita a insero e o posicionamento de texto com o mouse

Title(text)Insere texto de ttulo na parte superior da plotagem

Xlabel(text)Adiciona um rtulo ao eixo horizontal (as abcissas)

Ylabel(text)Adiciona um rtulo ao eixo vertical (as ordenadas)

Criando vetores no MATLABO conceito de um vetor pode ser generalizado para qualquer nmero de componentes. No MATLAB um vetor simplesmente uma lista de escalares, cuja ordem de aparecimento na lista pode ser significativa, assim como quando especificamos as coordenadas xyz.Para criar um vetor linha no MATLAB , voc simplesmente digita os elementos dentro de um par de colchetes, separando os elementos com um espao ou uma vrgula. Os colchetes so necessrios para arranjos exceto nos casos em que voc utiliza o operador dois pontos para criar um arranjo. Nesse caso, voc no deve utilizar colchetes, mas pode utilizar parnteses opcionalmente. A escolha entre espao ou vrgula uma questo de preferncia pessoal, embora a chance de erro seja menor se voc utilizar vrgula.Para criar um vetor coluna, voc pode separar os elementos utilizando ponto e vrgula; alternativamente, voc pode criar um vetor linha e ento utilizar a notao de transposio(), que converte um vetor linha em um vetor coluna, ou vice-versa. Por exemplo:>>g=[3;7;9]g=379Voc pode criar vetores anexando um vetor ao outro. Por exemplo, para criar o vetor linha u cujas primeiras trs colunas contm os valores de r=[2,4,20] e cujas quarta, quinta e sexta colunas contm valores de w=[9,-6,3], digite u =[r,w]. O resultado o vetor u=[2,4,20,9,-6,3].O operador dois pontos(:) facilmente gera um vetor grande de elementos regularmente espaados. Ao digitar>>x=m:q:nUm vetor x de valores com espaamento q criado. O primeiro valor m. o ltimo valor n se m n for um mltiplo inteiro de q. se no, o ltimo valor menor do que n. Por exemplo, ao se digitar x=0:2:8, o vetor x=[0,2,4,6,8] criado, ao passo que ao se digitar x=0:2:7 o vetor x=[0,2,4,6] criado. Para criar um vetor linha z que consiste nos valores de 5 a 8 em passos de 0,1, digite z=5:0.1:8. Se o incremento q for omitido, presume-se que ele 1. Assim, y=-3:2 produz o vetor y=[-3,-2,1,0,1,2].O incremento q pode ser negativo. Nesse caso, m deve ser maior do que n. Por exemplo, u=10:-2:4 produz o vetor u=[10,8,6,4].o comando linspace tambm cria um vetor linha com espaamento linear, mas em vez de especificar o incremento, voc especifica o nmero de valores. A sintaxe linspace (x1,x2,n), em que x1 e x2 so os limites inferior e superior e n o nmero de pontos. Por exemplo linspace(5,8,31) equivalente a 5:0.1:8. Se n for omitido, o espaamento igual a 1.O comando logspace cria um arranjo de elementos espaados logaritmicamente. Sua sintaxe logspace (a,b,n), em que n o nmero de pontos entre 10a e 10b. por exemplo, x=logspace (-1,1,4) produz o vetor x=[0.1000, 0.4642, 2.1544, 10.000]. se n for omitido, o nmero de pontos padro 50.Plotando polinmiosA funo polyval (a,x) avalia um polinmio em valores de sua varivel independente x, que pode ser uma matriz ou um vetor. O arranjo de coeficientes do polinmio a. o resultado do mesmo tamanho que x. por exemplo, para avaliar o polinmio f(x)= 9x3-5x2+3x+7 nos pontos x = 0,2,4,...,10: digite:>>f=polyval([9,-5,3,7],[0:2:10]);O vetor resultante f contm seis valores correspondentes a f(0),f(2),f(4),...,f(10).Para plotar esse polinmio para -2x5, voc deve digitar:>>x=-2:0.01:5;>>polyval([9,-5,3,7],x);>>plot (x,f),xlabel(x),ylabel(f(x)),gridAs razes de um polinmio podem ser encontradas com a funo roots(a), em que o arranjo que contm os coeficientes do polinmio. Por exemplo, para obter as razes de x3+12x2+45x+50=0, voc deve digitar y=roots([1,12,45,50]). A resposta (y) um arranjo coluna que contm os valores -2,-5,-5.Funes definidas pelo usurioO arquivo de funo o tipo arquivo M. diferentemente de um arquivo de script, todas as variveis em um arquivo de funo so variveis locais, o que significa que seus valores esto disponveis apenas dentro da funo.Para criar um arquivo de funo, abra o Editor. A primeira linha em um arquivo de funo deve ser uma linha de definio de funo que apresenta uma lista de entradas e sadas. Essa linha distingue um arquivo de funo de um arquivo de script. Sua sintaxe a seguinte:Function[variveis de sada]=nome_da_funcao(variveis de entrada)As variveis de sada so aquelas cujos valores so calculados pela funo, utilizando os valores dados das variveis de entrada. Note que as variveis de sada devem estar entre colchetes(que so opcionais se houver apenas uma sada), enquanto que as variveis de entrada devem estar entre parnteses . o nome_da_funcao deve ser igual ao nome do arquivo em que ela salva (com a extenso.m). isto , se o nome da funo for drop, ela deve ser salva no arquivo drop.m. a funo chamada quando digitamos o seu nome (por exemplo, drop) na linha de comando.As funes operam variveis dentro do seu prprio espao de trabalho (chamado de variveis locais), que separado do espao de trabalho (workspace) que voc acessa no prompt de comando do MATLAB. Considere a seguinte funo fun definida pelo usurioFunction z =fun (x,y)u=3*x;z= u+6*y.^2;

Funo handle (descritores de funes)um function fandle uma forma de referenciar uma dada funo. Voc pode criar um handle para qualquer funo utilizando o sinal @ antes do nome da funo. Voc pode ento dar um nome ao handle e utiliz-lo para referenciar a funo.Por exemplo, considere a seguinte funo definida pelo usurio, que calcula y=x+2e-x-3.Function y= f1(x)Y=x+2*exp(-x)-3;Para criar um handle com nome fh1, voc deve digitar [email protected] de funesSe a funo sobre a qual se atua no uma funo simples, mais conveniente definir a funo em um arquivo M. Voc pode passar a funo para a funo principal utilizando um handle.Encontrando os zeros de uma funo. Voc pode utilizar a funo fzero pra encontrar o zero de uma funo de uma nica varivel, que indicado por x. sua sintaxe bsica fzero(@function, x0)em que @function um function handle e x0 uma estimativa inicial do zero fornecida pelo usurio. A funo fzero I retorna um valor de x que prximo de x0.Ela identifica apenas os pontos em que a funo cruza o eixo x, no apenas pontos em que a funo apenas toca o eixo.Minimizando uma funo de uma varivel a funo fminbnd encontr a o mnimo de uma funo de uma nica varivel, que indicado por x. Sua sintaxe bsica fminbnd (@function,x1,x2)em que @function um handle da funo. A funo retorna um valor de x que minimiza a funo no intervalo x1xx2. Por exemplo , fminbnd (@cos, 0,4) retorna o valor x = 3,1416.Entretanto, para utilizar essa funo a fim de encontrar o mnimo de funes mais complicadas, mais conveniente definir a funo em um arquivo de funo. Por exemplo, se y=1-ze-x, defina o seguinte arquivo de funo:function y=f2(x)Y=1-x.exp(-x);Para encontrar o valor de x em 0x5 que define o mnimo de y, digite x=fminbnd(@f2,0,5). A resposta x=1. Para encontrar o valor mnimo de y, digite y=f2(x). a resposta y=0.6321.

Minimizando uma funo de vrias variveis Para encontrar o mnimo de uma funo de mais de uma varivel, utilize a funo fminsearch. Sua sintaxe bsica fminsearch(@function, x0)em que @function um handle da funo. O vetor x0 uma estimativa inicial que deve ser fornecida pelo usurio. Por exemplo, para utilizar a funo f=xe-x2-y2, primeiro defina-a em um arquivo M utilizando o vetor x cujos elementos so x(1) = x e x(2) = y.function f =f4(x)f=x(1).*exp(-x(1).^2-x(2).^2);suponha que uma boa estimative seja em torno de x=y=0. A sesso >>fminsearch(@f4,[0,0])ans=-0.7071 0.000Portanto, o mnimo ocorre em x=-0,7071, y=0.Funes annimasAs funes annimas permitem criar uma funo simples sem a necessidade de criar um arquivo M para ela. Voc pode construir uma funo annima tanto na linha de comando do MATLAB quanto dentro de outra funo ou script. A sintaxe para criar uma funo annima a partir de uma expresso fhandle=@(arglist) exprem que arglist uma lista de argumentos de entrada separados por vrgulas a ser passada para a funo e expr uma expresso qualquer vlida do MATLAB. Essa sintaxe cria o function handle fhandle, que permite chamar a funo. O handle tambm til para passar a funo annima em uma chamada de alguma outra funo, da mesma forma que qualquer outro function handle.Por exemplo, para criar uma simples funo sq para calcular o quadrado de um nmero digiteSq=@(x) x,^2;Para melhorar a legibilidade, voc pode escrever entre parnteses, como sq=@(x) (x.^2);. Para executar a funo, digite o handle da funo, seguido pelos argumentos de entrada entre parnteses. Por exemplo,>>sq(5)ans= 25>>sq=(5,7])ans= 2549