0% acharam este documento útil (0 voto)
5 visualizações19 páginas

Programação em MATLAB: Scripts e Funções

O documento aborda a programação em MATLAB, incluindo a criação e execução de arquivos de script e função. Exemplos práticos são fornecidos para calcular a velocidade de um saltador de bungee jumping, além de explicações sobre operadores lógicos, condicionais e laços de repetição. Também são apresentados exercícios para aplicar os conceitos aprendidos, como a simulação de drenagem de um reservatório e a estimativa de temperatura do solo.

Enviado por

Fabio Braga
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações19 páginas

Programação em MATLAB: Scripts e Funções

O documento aborda a programação em MATLAB, incluindo a criação e execução de arquivos de script e função. Exemplos práticos são fornecidos para calcular a velocidade de um saltador de bungee jumping, além de explicações sobre operadores lógicos, condicionais e laços de repetição. Também são apresentados exercícios para aplicar os conceitos aprendidos, como a simulação de drenagem de um reservatório e a estimativa de temperatura do solo.

Enviado por

Fabio Braga
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Programação com MATLAB

Professores Anderson Tres


e Alexsandro M Carvalho
Arquivos –M
Uma maneira comum de operar com o MATLAB é inserir um comando por vez na janela de comandos. Uma
forma alternativa e mais dinâmica é feita utilizando programas de MATLAB ou arquivos-M para efetuar uma
série de operações.
Um script file (“programa” ou “rotina”) trata-se de uma série de comandos no MATLAB que são salvos em
um arquivo e podem ser executados em mais de uma ocasião.

Criando e salvando um arquivo de programa:


• Arquivos de programa são criados e editados na janela de edição e verificação de erros (Editor/Debugger
Window).
• Antes de se executar um arquivo de programa, ele deve ser salvo. Isso é feito com a seleção da opção
Save As... no menu File, com a determinação de uma localização (pasta) e finalmente com a escolha de
um nome para o arquivo.
• Um arquivo de programa pode ser executado digitando-se o seu nome na janela de comandos e
pressionando-se a tecla Enter, ou diretamente a partir da janela de edição clicando-se no ícone Run.
Exemplo: A função que descreve a velocidade de um saltador de bungee jumping em queda
livre (inicialmente em repouso) em um instante de tempo específico é dada por

𝑔𝑚 𝑔𝑐𝑑
𝑣 𝑡 = tanh 𝑡
𝑐𝑑 𝑚
onde 𝑣 𝑡 é a variável dependente, t é a variável independente tempo (s), 𝑐𝑑 é o coeficiente
de arraste concentrado (kg/m), m é a massa (kg) e g é a aceleração da gravidade (9,81 m/s²).
Desenvolva um programa para calcular a velocidade do saltador de bungee jumping em queda livre para os 12 segundos
iniciais da queda, dado que o saltador tem uma massa de 68,1 kg. Use um coeficiente de arraste de 0,25 kg/m. Ainda
plote o gráfico da função.
Na janela de edição digite:
g=9.81; m=68.1; t=1:12; cd=0.25;
v=sqrt(g.*m./cd).*tanh(sqrt(g.*cd./m).*t)
plot(t,v)
Salve o arquivo como scriptdemo.m. Retorne para a janela de comandos e digite:
>>scriptdemo
para rodar o programa, ou apenas clique diretamente em Run na janela de edição.
Obs: Para mostrar o vetor velocidade como um vetor coluna, basta digita na janela de comandos v’.
Arquivos de função (function files)
Um arquivo de função é um programa de MATLAB usado como uma função. Ele possui argumentos de entrada e saída que
podem conter uma ou muitas variáveis, e cada uma delas pode ser um escalar, um vetor, ou um arranjo de qualquer tamanho.
Esquematicamente, um arquivo de função pode ser ilustrado como:

Arquivos de função são criados e editados, como os arquivos de programa, na janela de edição e verificação de erros. Ao
contrário dos scripts, as funções podem aceitar argumentos de entrada e retornar saídas. A primeira linha executável de um
arquivo de função deve ser a linha de definição da função, de maneira que a sintaxe seja representada genericamente como:

%Comentários_de_ajuda
Declarações
Argumentos_de_saída = valor;
Exemplo: Calcule a velocidade do saltador de bungee jumping em queda livre do exemplo anterior em um
instante de tempo qualquer, mas agora use uma função para essa tarefa.
Digite na janela de edição:
function [v] = queda_livre(t,m,cd)
% queda_livre: velocidade do saltador com arraste de segunda ordem
% v=queda_livre(t,m,cd) calcula a velocidade de queda livre de um corpo com arraste de segunda ordem
% entrada:
% t = tempo (s)
% m = massa (kg)
% cd = coeficiente de arraste (kg/m)
% saída:
% v = velocidade para baixo (m/s)
g = 9.81; % aceleração da gravidade
v=sqrt(g.*m./cd).*tanh(sqrt(g.*cd./m).*t);
Salve o arquivo como queda_livre.m. Para chamar a função, retorne à janela de comandos e digite
>>queda_livre(12,68.1,0.25)
O resultado será exibido como
ans = 50.6175
Exemplo: Calcule a velocidade de um saltador de 100kg após 8 s.

Exemplo: Calcule a velocidade de um saltador de 100kg nos 14 primeiros segundos. Obs: modifique a função para
function [v] = queda_livre(ti,tf,m,cd) onde ti é o tempo inicial e tf o tempo final.
Operadores lógicos e relacionais
Operadores lógicos e relacionais são usados em combinação com outros comandos para permitir a tomada de decisões
que controlem o fluxo de um programa de computador. Operadores relacionais utilizados pelo MATLAB são fornecidos na
tabela a seguir.

Um operador lógico examina declarações verdadeiro/falso e produz um resultado verdadeiro (1) ou falso (0) de acordo
com o operador específico. Operadores lógicos utilizados no MATLAB são:
Declarações Condicionais
Declaração condicional é o comando que permite ao MATLAB escolher entre a execução de um grupo de comandos logo
após a declaração ou saltar esses comandos. Essa declaração envolve uma expressão condicional. Se a expressão for
verdadeira, executa-se um grupo de comandos logo após a declaração. Se a expressão for falsa, o computador salta essa
grupo de comandos. Exemplo: Dada a função
𝑥 2 + 1, 𝑠𝑒 𝑥 > 0
Estrutura if-else-end 𝑓 𝑥 =ቊ
−2𝑥 + 3, 𝑠𝑒 𝑥 ≤ 0
Use o condicional do MATLAB para determinar f(-
3), f(0) e f(3).

Na janela de edição digite:


x=input('valor domínio:');
if x>0
y=x.^2+1
else
y=-2.*x+3
end

Salve o script como if_else_end. Agora rode o


script e digite as entradas na janela de comando.
Exemplo: Um veículo que circula em área urbana, é multado se a velocidade for superior a 60 km/h. Escreva um
programa que decide, dada a velocidade, se o motorista deve ou não ser multado.

Na janela de edição digite:


v=input('velocidade de entrada:');
if v>60
disp('acima da velocidade');
else
disp('abaixo da velocidade');
end

Obs: O comando disp é usado para mostrar os elementos de uma variável sem mostrar o nome dessa variável, e
para exibir mensagens de texto. O formato do comando disp é:

Exercício: Se um aluno tiver a soma de suas notas GA e GB inferior a 6,0 ele estará reprovado na atividade
acadêmica de Métodos Numéricos. Escreva um programa que decide, dada a nota do aluno, se o aluno será ou
não aprovado na disciplina.
Estrutura if-elseif-else-end
Exemplo: A idade mínima para votar é 16 anos e
para beber é 18 anos. Escreva um programa que
decide, dada a idade, se a pessoa pode votar e
beber.

Na janela de edição digite:


x=input('digite sua idade:');
if x<16
disp('você não pode beber e não pode votar!');
elseif x>=16 & x<18
disp('você não pode beber mas pode votar! ');
else x>18
disp('você pode beber e pode votar! ');
end

Exercício: Se um aluno tiver a soma de suas notas superior a 6,0 ele estará aprovado na disciplina, se a soma
estiver entre 5,0 e 6,0 o aluno estará em recuperação, e se a soma das notas forem inferiores a 5,0 o aluno estará
reprovado. Escreva um programa que decide, dada a nota do aluno, se o aluno está reprovado, em recuperação
ou aprovado na disciplina.
Laços de repetição
Um laço de repetição, ou loop, permite a alteração do fluxo de um programa de computador. Em um laço de repetição, a
execução de um comando, ou de um grupo de comandos, é repetida várias vezes de forma consecutiva. Cada rodada de
execução é chamada de passo. Em cada passo, pelo menos uma variável definida no interior do laço de repetição recebe um
novo valor.

Laços for-end
Exemplo: Desenvolva um programa para representar os
termos da sequência
𝑛 20
1
1+
𝑛 𝑛=1

Na janela de edição digite:


for n=1:20
a(n)=(1+1./n).^n
end
a'
Obs: Definida uma variável qualquer em um dado intervalo,
o MATLAB não entende a posição ≤ 0, ou seja, não existe Salve o script como for_end e rode-o.
a(n) com n ≤ 0.
Exercício 1) Desenvolva um programa para determinar os 10 primeiros termos das sequências recursivas abaixo

𝑎1 = 1
𝑎 =2
a) ቊ 1 b) ൝ 𝑎2 = 1
𝑎𝑛+1 = 3𝑎𝑛
𝑎𝑛+2 = 𝑎𝑛+1 + 𝑎𝑛

Exercício 2) Escreva um programa no MATLAB para calcular a soma das séries para n=10, n=100 e n=1000. Com os
resultados obtidos, conclua se as séries convergem ou divergem.

𝑛 2𝑘+4 𝑛 cos(𝑘𝜋)
a) σ𝑘=1 b) σ𝑘=0
3 5𝑘

Exercício 3) Uma bola e largada de uma altura de 16 metros. Cada vez que bate no chão, ela retorna verticalmente
ate uma altura que é de ¾ da altura precedente. A distância total que a bola percorre, supondo que retorne
indeterminadamente é obtida pela soma
∞ 𝑘
3
𝑆 = 16 + 2 ෍ 16
4
𝑘=1
Escreva um programa que estima a distância total que a bola percorre.
Loop +Condicional (while -end)

A estrutura while é utilizada quando queremos repetir uma condição lógica enquanto for verdadeira, e apresenta a
seguinte sintaxe genérica:
while condição
declarações
end

Exemplo: Escreva um programa que determina o valor de 10!


Na janela de edição digite:
p=1
while n<10
n=n+1;
p=p.*n;
end
p
Salve o script como while_end e rode-o.
Exemplo: Vovó irá fazer uma aplicação de R$10000,00 que rende a juros
compostos de 0,5% ao mês. Além disso Vovó irá depositar mensalmente R$
1200,00. Se Vovó deseja resgatar o montante quando o mesmo for igual ou
superior a R$150000,00. Desenvolva um programa que represente o problema
e indique quantos meses o dinheiro deve ficar aplicado.
Na janela de edição digite:
M=10000
i=0.005;
mes=0;
while M<150000
M=M.*(1+i)+1200;
mes=mes+1;
disp(M)
end
mês
Salve o script como aplicacao_fin e rode-o
Aplicação: Um reservatório de água é drenado por um tubo, conforme a figura.

Sob diversas hipóteses simplificadas, a profundidade h é governada pela


sequência recursiva
ℎ1 = ℎ(0)
𝜋𝑑 2 𝑒
ℎ𝑗+1 = ℎ𝑗 − Δ𝑡 2𝑔 1 +
4 ℎ𝑗

onde d=0.25 m é o diâmetro do tubo, e = 1 m é a profundidade do tubo abaixo do nível do reservatório, g=9.81 m/s² é a
aceleração da gravidade, h(0) = 6 m é a profundidade antes de iniciar a drenagem e Δ𝑡 = 10−2 s é o passo de tempo.

a) Escreva um programa na linguagem do MATLAB para resolver a sequência acima;


b) Estime a profundidade no instante t = 10 s;
c) Determine o tempo necessário para drenar toda a água do reservatório.
Aplicação: No projeto de tubulações subterrâneas, é necessário estimar a temperatura do solo. A temperatura do solo
pode ser estimada em várias profundidades a partir da modelagem do solo semi-infinito com temperatura inicial
constante.
A temperatura em uma profundidade x no tempo t pode ser calculada aproximadamente por
𝑥
2Δ𝑥 𝛼𝑡
2 𝑇𝑖 − 𝑇𝑠 − 𝑘Δ𝑥 2
𝑇 𝑥, 𝑡 ≅ 𝑇𝑠 + ෍ Δ𝑥𝑒
𝜋
𝑘=0
onde 𝑇𝑠 = -15°C é a temperatura da superfície, 𝑇𝑖 = 12°C é a temperatura inicial do solo, 𝛼 = 0.138 × 10−6 m²/s é a
difusividade térmica do solo e Δ𝑥 = 10−2 m é o passo do intervalo.

a) Escreve um programa em MATLAB para determinar a


temperatura do solo em uma dada profundidade x no tempo t.
b) Utilize o programa do item anterior para estimar a temperatura
na profundidade x = 2 m no tempo t = 30 dias (2.592 × 106 s).
Soluções
Exercício 1) página 11 letra a) Exercício 1) página 11 letra b) Exercício 2) página 11 letra a)
Na janela de edição: Na janela de edição: Na janela de edição:
a(1)=2 a(1)=1; s=0;
for n=2:10 a(2)=1; n=input('valor de n:')
a(n)=3.*a(n-1); for n=3:10 for k=1:n
end a(n)=a(n-1)+a(n-2); s=s+(2.*k+4)./3;
a' end end
a' s
ans = Para n=10 -> s = 50
2 ans = Para n=100 -> s =3500
6 1 Para n=1000 -> s = 335000
18 1 Logo a série diverge
54 2
162 3
486 5
1458 8
4374 13
13122 21
39366 34
55
Soluções
Exercício 2) página 11 letra b) Exercício 3) página 11
Na janela de edição: Na janela de edição:
s=0; s=0;
n=input('valor de n:') for k=1:1000
for k=0:n s=s+16.*(3./4).^k;
s=s+cos(k.*pi)./(5.^k); end
end S=16+2.*s
s
Para n=10 -> s = 0.8333 Logo S = 112
Para n=100 -> s =0.8333
Para n=1000 -> s = 0.8333
Logo a série converge
Soluções
Exercício aplicação página 14. Exercício aplicação página 15.
Na janela de edição: Na janela de edição:
%Aplicação reservatório de água % Aplicação Projeto de tubulações
h(1)=6; %altura inicial Ts=-15; %temperatura da superfície
d=0.25; %diâmetro do tubo Ti=12; %temperatura inicial
e=1; %profundidade do tubo a=0.138.*10.^(-6); %difusividade térmica
g=9.81; %aceleração da gravidade dx=0.01; %passo do intervalo
t(1)=0; %tempo inicial x=input('valor de x:') %entrada da profundidade x
dt=0.01; %passo de tempo t=input('valor de t:') %entrada do tempo t
%Criando a sequência recursiva %Obtendo o valor do somatório
for j=1:5000 s=0;
c=h(j); for k=0:x./(2.*dx.*sqrt(a.*t))
if c<=0 s=s+dx.*exp(-(k.*dx).^2);
break end
else %saída temperatura
h(j+1)=h(j)-pi.*(d.^2).*dt./4.*sqrt(2.*g.*(1+(e./h(j)))); Temp=Ts+(2.*(Ti-Ts))./sqrt(pi).*s
t(j+1)=t(j)+dt;
end Na janela de comandos:
end valor de x:2
plot(t,h) valor de t:2.592.*10.^6
>>Temp =11.6705
b) h(1001)=3.6063 metors c) Aproximadamente 22.33 seg
Exercícios para praticar
Exercício 1: Em ecologia um modelo discreto (chamado logístico) é útil para descrever a dinâmica de uma população
de insetos, dado por
𝑝0 = 𝑝𝑖
ቊ𝑝
𝑛+1 = 𝑘𝑝𝑛 1 − 𝑝𝑛 , 𝑛 ≥ 0
onde 𝑝𝑛 é a fração da população (0 ≤ 𝑝𝑛 ≤ 1) na n-ésima geração de uma espécie e 𝑘 é um parâmetro típico da
interação dos insetos. Dado 𝑘 = 4 e 𝑝𝑖 = 0.01, determine 𝑝10 e 𝑝100 . R: 𝑝10 = 0.7951 e 𝑝100 = 0.2241.

Exercício 2: Os circuitos 𝐿𝐶 comportam-se como ressonadores eletrônicos, sendo componente chave em muitas
aplicações, tais como osciladores, filtros e misturadores de frequência. Assim, considere um circuito de malha simples
mostrado na figura, contendo: um indutor (𝐿), um capacitor (𝐶) e uma fonte (𝐸).
É possível demonstrar que um comportamento da carga, em particular, é dado
aproximadamente por
4𝐸0 𝑡𝑓2 𝐶 1 𝑛𝜋𝑡
𝑞𝑝 𝑡 ≈ ෍ 𝑠𝑒𝑛
𝜋 𝑛 𝑡𝑓2 − 𝐿𝐶𝜋 2 𝑛2 𝑡𝑓
𝑛=1,3,5,…,99

Dado 𝐿 = 2, 𝐶 = 1, 𝐸0 = 10 𝑒 𝑡𝑓 = 5. Estime 𝑞𝑝 2 .

𝑞𝑝 2 ≈ 57.93

Você também pode gostar