Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Exercícios de Matlab, Esquemas de Algoritmos e Programação

Uma série de exercícios relacionados à utilização do matlab, uma ferramenta de computação matemática e científica. Os exercícios abrangem várias áreas, como cálculos matemáticos, gráficos, manipulação de matrizes e vetores, entre outras. O documento fornece instruções detalhadas para cada exercício, incluindo funções matlab e códigos de exemplo.

Tipologia: Esquemas

2024

Compartilhado em 02/04/2024

simao-cardoso-2
simao-cardoso-2 🇵🇹

1 documento

1 / 29

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
2023-2024
Problemas para as aulas práticas de ACE
Aula nª 0
Garantir que os estudantes têm acesso ao Matlab licença Campus UA
- versão local: instalada no portátil pessoal ou num PC do laboratório
- versão online: https://matlab.mathworks.com
Explorar o Matlab com Calculadora (versão local e versão online)
Calcular usando a janela de comandos
2 x 3
6561
eπ
sen()
Criar na conta da OneDrive da Universidade, usando a conta da UA um diretório onde
cada estudante passa gravar o material produzido em ACE.
Calcular usando um script
tan⁡(e12)
21×10123
cos⁡(eπ)
arctan(1)
arcsen(1)
Sincronizar a Onedrive com a máquina (portátil ou PC) que o aluno estiver a usar
Explorar o sistema de ajuda do Matlab (help local e online)
Explorar as demos do Matlab
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d

Pré-visualização parcial do texto

Baixe Exercícios de Matlab e outras Esquemas em PDF para Algoritmos e Programação, somente na Docsity!

Problemas para as aulas práticas de ACE

Aula nª 0

Garantir que os estudantes têm acesso ao Matlab – licença Campus UA

  • versão local: instalada no portátil pessoal ou num PC do laboratório
  • versão online: https://matlab.mathworks.com

Explorar o Matlab com Calculadora (versão local e versão online)

Calcular usando a janela de comandos

2 x 3

e

π

sen(2π)

Criar na conta da OneDrive da Universidade, usando a conta da UA um diretório onde

cada estudante passa gravar o material produzido em ACE.

Calcular usando um script

tan (e

12

√ 21 × 10

123

cos (e

π

arctan( 1 )

arcsen

Sincronizar a Onedrive com a máquina (portátil ou PC) que o aluno estiver a usar

Explorar o sistema de ajuda do Matlab (help local e online)

Explorar as demos do Matlab

Aula nª 1

  • Vetores linha
  • Operadores :
  • Função linspace( )
  • Overloading (operadores e funções) / Múltiplos interfaces
  • Matrizes
  • Indexação indexação linha-coluna e indexação sequencial

Elabore um “script” Matlab que resolva os seguintes problemas:

  1. Gere um vetor linha de números pares com início em 4 e a terminar no número 100.
  2. Gere um vetor linha contendo uma sequência numérica decrescente com início em 5 e

a terminar em - 5.

  1. Gere um vetor linha contendo uma sequência a começar em π e a acabar em −π com

um passo de −π/15.

  1. Gere uma sequência numérica com 10 elementos uniformemente distribuídos

pertencentes ao intervalo [0, 1].

  1. Gere uma sequência numérica com 100 elementos uniformemente distribuídos

pertencentes ao intervalo [0, 1].

  1. Gere um vetor coluna, x , com os múltiplos de 5 entre 10 e 70. A partir de x , crie um

vetor y com os múltiplos de 10 entre 10 e 70.

  1. Gere um vetor linha, x , com os 10 primeiros múltiplos de 3. A partir de x crie uma

matriz, A , com 6 linhas: a 3 primeiras iguais a x e as 3 seguintes contendo x ordenado de

forma decrescente.

  1. Crie um vetor S com os primeiros 15 inteiros pares. De seguida crie uma matriz M

com colunas de acordo com as seguintes especificações: 1ª coluna deve ser igual a S ,

coluna deve conter os elementos de S por ordem decrescente e a 3ª coluna deverá conter

a diferença das duas primeiras.

  1. Crie uma matriz M , quadrada 10x10, usando o comando magic(10). Dessa matriz

extraia o elemento que está na linha 2 coluna 3, e o elemento que está na linha 10 e coluna

  1. Crie os seguintes vetores / matrizes.

a) a =[10] e b =[1 4 7 10]

b) c e D conforme a figura abaixo:

c) Usando o vetor b :

i.Visualize o segundo elemento

ii.Substitua este elemento pelo valor 20

iii.Elimine o 1º elemento e observe a matriz obtida.

d) Usando o vetor c :

i.Visualize o segundo elemento

ii.Visualize o último elemento usando um método que não dependa das dimensões

do vetor.

e) Usando a matriz D :

i.Visualize o elemento na segunda linha da terceira coluna (use o índices da linha e

da coluna)

ii.Substitua o valor na segunda linha e segunda coluna por 0 (zero) (use os índices

da linha e da coluna)

iii.Visualize o elemento na segunda linha e terceira coluna usando indexação

sequencial (apenas um índice)

iv.Elimine este valor da matriz. Observe o resultado e comente.

Aula nª 2

  • Os operadores.  (transposta) e  (transposta hermitiana)
  • Matrizes
  • Vetores coluna
  • Números complexos
  • As função ones( ), eye( ), repmat( ), reshape( ), sum( )
  • Operações elementos a elemento, operador .^
  • A palavra reservada end
  • Indexação linha-coluna e sequencial

Elabore um “script” Matlab que resolva os seguintes problemas:

a) Crie uma matriz 4 × 4 em que todos os elementos são iguais a 1+ 2i.

b) Com a função eye crie uma matriz diagonal 4 × 4 em que todos os elementos da

diagonal são iguais a 3.

c) Construa um vetor com 128 elementos com a seguinte sequência:

 

  1. Considere o vetor  

x = 1 2 3 4 e as matrizes

A

B

A partir do vetor x e das matrizes A e B construa a matriz C seguinte.

C

  1. Crie uma matriz M, com 3 linhas e 4 colunas. Todos os valores da primeira linha têm

o valor 0. A segunda linha tem os valores 1, 2, 3, 4. Todos os valores da terceira linha

têm o valor - 1. Aceda o valor que está na segunda linha e na quarta coluna, usando

indexação linha-coluna e usando indexação sequencial.

  1. Gere um vetor coluna, x , com os 10 primeiros termos da sequência

2

2 2 , 0,1,...

n

u = nn =

A partir de x crie uma matriz, A , com 6 linhas: as três primeiras iguais a x e as três

seguintes contendo x apresentado de forma inversa.

e) Crie a matriz Meio com os valores da matriz Magica entre a 2ª e a 4ª linha e a 2ª e a

4ª coluna.

f) Crie a matriz Canto com os valores compreendidos entre a 3ª e a última linha e a 3ª e

a última coluna. Nota: a sua solução deve ser independente do número de linhas e colunas

da matriz.

g) Crie um vetor com todos valores da matriz Magica.

  1. Algumas matrizes particulares criadas automaticamente pelo MatLab

O Matlab pode criar automaticamente matrizes com determinadas caraterísticas as quais

são úteis para muitas tarefas de análise de dados ou simulação de sistemas em várias

áreas da ciência.

a) Crie a matriz Uns de dimensão 5x5 com os valores todos unitários usando a função

ones().

b) Crie a matriz Olho de dimensão 5x5 contendo na diagonal valores unitários e os

restantes nulos usando a função eye().

c) Combine as duas matrizes anteriores de forma a obter uma matriz com os elementos

todos unitários excepto os da diagonal que deverão conter 7.

Aula nª 3

  • Indexação lógica
  • As função rem( ), round( )
  • Operadores lógicos == e &
  • Operador multiplicação elemento a elemento .*
  • Gráficos simples e funções associadas: plot( ), axis( ), xlabel( ), ylabel( ), title( ), grid

on, hold on, hold off

  • Polinómios e funções associadas: roots( ), poly(), polyval( )

Elabore um “script” Matlab que resolva os seguintes problemas:

  1. A indexação lógica permite endereçar os elementos da matriz alvo com base numa

matriz de valores lógicos (true ou false) que resulta de uma condição lógica imposta. A

obtenção dos índices dos elementos que satisfazem a condição lógica, usando a função

find(), é também frequentemente usada.

a) Cria a matriz A = magic(5)

b) Obtenha uma matriz lógica cond que permita indexar os valores superiores a 15 na

matriz A. Compare as duas matrizes elemento a elemento.

c) Construa um vetor com todos os elementos superiores a 15 da matriz A.

d) Construa um vetor com todos os elementos maiores que 10 e menores que 15 da matriz

A.

e) Obtenha, usando a função find(), os indexes dos valores menores que 5 de A , e usando

indexação sequencial extraia esses valores da matriz A.

  1. Gere de forma eficiente uma matriz A (4×4) com os.16 primeiros inteiros pares.

Extraia dessa matriz e de forma eficiente um vector v com os números múltiplos de 4.

3. Comece por calcular os parâmetros e  de tal forma que

 = 1 + 5 / 2e

a) Para n=1,…20 calcule a sequência Fibonacci dada pelo arredondamento às unidades

de,

n n

n

F

b) Comprove numericamente que a soma dos 10 últimos termos é múltipla de 11

c) Comprove numericamente que,

10

12

1

n

n

F F

=

b) Crie, a partir de a e b , o vetor c

c) Crie a matriz D a partir de c

d) Crie a matriz E a partir de D usando ainda a função ones() e zeros()

e) Crie, com a função repmat(), a matriz F que consiste na repetição da matriz E duas

vezes em coluna e três vezes em linha.

  1. Operações com matrizes

a) Crie uma matriz A de dimensão 4x4 com todos os elementos unitários.

b) Usando a matriz A e uma operação de soma com uma constante crie a matriz B cujos

elementos tenham todos o valor 4. Verifique o resultado.

c) Obtenha a matriz D resultante da soma da matriz mágica C de dimensão 4x4 (use a

função magic()) e some-a à matriz A multiplicada por 2. Verifique o resultado.

d) Divida, numa operação elemento a elemento, a matriz A pela matriz B. Verifique o

resultado.

e) Multiplique, numa operação elemento a elemento, a matriz B pela matriz D.

  1. Crie um vetor Fase com 91 valores linearmente espaçados entre 0 e 2π. Calcule agora

o vetor Seno com o seno do vetor da fase.

Efetue o gráfico do Seno em função da Fase usando uma linha contínua de cor azul.

Ative a grelha.

Dê ao eixo dos xx o nome “x (rad)” e ao eixo dos yy “y=sin(x)”.

Adicione uma legenda: “sin(x)”.

Dê um título ao gráfico: “Gráfico do Seno”.

Adicione à figura o gráfico da tg(x) – não esqueça de executar antes o hold on para

manter o 1º gráfico – com uma linha de cor vermelha dashed line e usando o “.” como

Marker. De seguida faça:

Um ajuste à gama de valores para os eixos dos xx e yy: o eixo dos xx deve ser ajustado

para a gama [0 2π] e o dos yy para a gama [- 3 3].

Renove agora a legenda para mencionar os dois gráficos.

Guardar o gráfico num ficheiro para inserir num documento é uma necessidade

frequente. Execute a instrução >> saveas(gcf,'MinhaFigura.emf') que obtém a figura ativa

(get current figure) e guarda-a com o nome MinhaFigura no formato emf. Nota:

Recomenda-se a consulta da função saveas() para guardar a figura noutros formatos.

  1. O Matlab pode efetuar vários gráficos numa só instrução plot(). Basta Y ser uma

matriz de dimensão compatível com x.

Feche todas as figuras existentes e crie o vetor coluna Offset=[0; 2π/3;4π/3] e obtenha

a matriz Tres_Fases que será a soma de Offset com o vetor Fase. Examine as dimensões

da matriz obtida.

Efetue o gráfico do seno de Tres_Fases em função de Fase. Dê nomes aos eixos, ative

a grelha e crie uma legenda.

  1. Considere a função complexa

2

𝑖𝑥

a) Calcule a função Z(x) com 200 pontos no intervalo x[-,].

b) Crie uma figura com 2 gráficos dispostos verticalmente. Em cima deverá apresentar o

gráfico de Z(x). Em baixo deve apresentar de forma sobreposta as partes real e imaginária

de Z(x). Legende adequadamente os gráficos.

c) Calcule o número de pontos de Z(x) com parte imaginária superior a - 3. Nos gráficos

anteriores, vez sobreponha-lhe os pontos onde Z(x) tem parte imaginária superior a - 3.

Use o marcador ‘.’ preto. Coloque uma grelha nos gráficos.

Problemas complementares

1. Gráfico com valores complexos

O Matlab faz gráficos de valores complexos: usa para o eixo dos x a parte real e para o

eixo dos y a parte imaginária.

a) Limpe o WorkSpace e crie um vetor teta (ou seja ) com 361 pontos entre [0 2 𝜋].

b) Calcule a seguinte função 𝑧

. Nota: lembre que 𝑒

𝑖𝜃

em que 𝑖 é

a unidade imaginária (𝑖 = √

𝑖𝜃

c) Faça o gráfico de 𝑧(𝜃) com traço preto e force a mesma escala em x e em y (comando

axis equal). Apresente a grelha e dê ao eixo dos xx o nome “Parte real de z” e ao eixo dos

yy o nome “Parte Imaginária de Z”.

d) No gráfico da alínea c) assinale a vermelho os valores de 𝑧(𝜃) cuja fase 𝜃 pertencente

ao intervalo [−𝜋 –

𝜋

2

]. Sugestão: Use o endereçamento lógico com base na fase de 𝑧

para adicionar um novo gráfico à figura.

e) Numa nova figura, com três sub-gráficos em coluna, coloque: no superior o módulo

de 𝑧

; no central a parte real e no inferior a parte imaginária. Legende as figuras, dê

nomes aos eixos e ative as grelhas.

f) O gráfico polar, que permite ler a fase facilmente, é muito útil para a análise de alguns

fenómenos físicos: por exemplo a direção do vento num local, alvos num radar,

sensibilidade de um microfone com a direção do som, etc. Realize um gráfico polar,

polarplot(), de 𝑧(𝜃).

2. Considere a função complexa ( ) ( )

( )

2

1 2 1

jx

z x = + j e x − , em que xϵ[-, ] com 150

pontos.

a) Calcule Z e apresente o seu gráfico (parte imaginária versus parte real) com linha cheia

vermelha. Acrescente uma grelha e etiquetas nos eixos.

b) Determine e sobreponha ao gráfico anterior com “+” azul os pontos de Z que

pertencem ao 3º quadrante e tais que |Z|>4.

Exercícios Complementares

  1. Em engenharia a resolução de alguns problemas complexos passam por usar o

desenvolvimento de funções em séries de Taylor.

Considere o desenvolvimento em série de potências da exponencial:

𝑥

𝑥

𝑛

𝑛!

𝑁

𝑛= 0

𝑥

2

2!

𝑥

3

3!

𝑥

4

4!

onde! significa fatorial (ex. 3!=3x2x1) que pode ser calculado pela função factorial().

Ainda importa afirmar que fatorial de 0 vale 1.

a) Usando N=4 crie de forma automática e numa única instrução, um vetor com os

coeficientes do polinómio pexp que permite aproximar a exponencial.

b) Crie um vetor x de 100 pontos linearmente espaçados entre 𝑥

𝑚𝑖𝑛

=0 e 𝑥

𝑚𝑎𝑥

c) Efetue um gráfico da exponencial e da respetiva aproximação polinomial calculada.

Dê nomes aos eixos, ative a grelha e coloque a legenda.

  1. Gráfico com valores complexos

a) Crie um vetor teta (ou seja ) com 361 pontos entre [0 2 𝜋].

b) Calcule a seguinte função 𝑧(𝜃) = 𝑐𝑜𝑠( 2 𝜋 𝑐𝑜𝑠(𝜃) + 𝜋) 𝑒

𝑖𝜃

c) Faça o gráfico de 𝑧(𝜃) com traço preto e force a mesma escala em x e em y (comando

axis equal). Apresente a grelha e dê ao eixo dos xx o nome “Parte real de z” e ao eixo dos

yy o nome “Parte Imaginária de Z”.

d) No gráfico da alínea c) assinale a vermelho os valores de 𝑧

cuja fase 𝜃 pertencente

ao intervalo [−𝜋 –

𝜋

2

].

e) Numa nova figura, com três sub-gráficos em coluna, coloque: no superior o módulo

de 𝑧

; no central a parte real e no inferior a parte imaginária. Legende as figuras, dê

nomes aos eixos e ative as grelhas.

f) O gráfico polar, que permite ler a fase facilmente, é muito útil para a análise de alguns

fenómenos físicos: por exemplo a direção do vento num local, alvos num radar,

sensibilidade de um microfone com a direção do som, etc. Realize um gráfico polar,

polarplot(), de 𝑧

Aula nª 6

  • A função load() e save(), para ficheiros *.txt e *.mat
  • Regressões polinomiais
  1. O ficheiro geoq.txt , em formato ASCII, contém dados reais obtidos a partir da análise

química de 82 amostras de rochas recolhidas na região de Lamego (Portugal). Os dados

estão organizados segundo uma matriz 82× 4 , correspondendo cada linha a uma amostra

efetuada. As duas primeiras colunas (1 e 2) apresentam as coordenadas X e Y da

localização das amostras no mapa, e as restantes colunas (3 e 4) têm os resultados das

análises químicas relativas aos seguintes compostos químicos:

% SiO2 óxido de silício (sílica)

% CaO óxido de cálcio

O ficheiro labels.mat contém textos de identificação das 4 colunas, incluindo as unidades

físicas em que se expressam os valores de geoq.txt. Deverá usar os dados deste ficheiro

para as legendas.

Calcule os parâmetros a e b da respectiva equação y=ax+b , que melhor se ajusta aos

pontos experimentais SiO2 vs. CaO , o que pode ser feito recorrendo a métodos numéricos

(chamados “de regressão linear”) frequentemente implementados em ferramentas

computacionais, como é o caso do Matlab. A recta deve ter cor vermelha tal como mostra

a figura.

  1. O ficheiro dados.mat contém as coordenadas (x,y) de uma curva no plano cartesiano.

Carregue o ficheiro para o MATLAB e observe as varáveis carregadas no worksapce.

a) Trace a curva (x,y) no plano cartesiano usando cor vermelha. Determine os

coeficientes de um polinómio de grau 3 que melhor aproxima o conjunto de pontos (x,y).

Adicione ao gráfico anterior a curva do polinómio a azul.

60 62 64 66 68 70 72 74

1

2

3

4

SiO2 (%)

CaO (%)

Problemas complementares

  1. Numa figura com duas áreas gráficas dispostas verticalmente, faça na área gráfica

superior um gráfico da função y=x

3

, no domínio - 2 a 2 com 1 milhão de pontos. Na área

gráfica inferior faça um gráfico da mesma função com ruído aditivo gaussiano com média

nula e desvio padrão unitário, use a função randn(1,N). Grave os valores do x e da função

sem e com ruído no ficheiro ‘sinal_ruido.mat’. Limpe todas as variáveis da área de

trabalho, e importe para a área de trabalho a informação gravada no ficheiro

‘sinal_ruido.mat’. Tente recuperar a função original da função com ruído para isso

aproxime os dados por um polinómio de 1, 2, 3, 4 e 5 ordem, e veja como evolui o

somatório do erro quadrático. Trace um gráfico do somatório do erro quadrático usando

uma linha a vermelho e marcadores para os valores do tipo quadrado. O que pode

concluir?

  1. O ficheiro notas.txt contém as notas obtidas pelos alunos de uma dada disciplina nos

4 testes realizados. As notas de cada teste estão numa escala de 0 a 100. Leia com um

comando Matlab o ficheiro notas.txt. Considerando que o peso dos dois primeiros testes

é de 20% e dos dois últimos é de 30%, calcule um vetor com as notas finais (0 a 20) de

cada aluno arredondados às unidades.

  1. A escrita de dados em ficheiros preserva resultados para análise futura. A leitura de

ficheiros facilita a introdução de dados. Nas diversas áreas da ciência e da engenharia

podemos encontrar um vasto conjunto de valores que podemos tratar no Matlab, de uma

forma gratuita. Por outro lado, muitos equipamentos de laboratório guardam

automaticamente medições em ficheiros que também podem ser importados facilmente

pelo Matlab.

a) Limpe o WorkSpace e crie uma string nome com o seu primeiro nome, idade com a

sua idade e um vetor primos com os números primos até 100 (use a função prime()).

Guarde os dados no ficheiro Matlab: Minhasessao.mat e verifique que foi criado na sua

pasta de trabalho.

b) Limpe o WorkSpace. Carregue o ficheiro anterior e examine novamente o WorkSpace.

Que conclui?

c) Apague as variáveis nome e idade e guarde a variável primos num ficheiro de texto

MinhaSessao.txt. Verifique que o ficheiro foi criado, abra-o com um editor de texto e

comente.

d) Limpe o Workspace e carregue o ficheiro de texto. Comente.

Aula nª 7

  • Gráficos 3D de Superfícies
  • Comandos mesh e surf
  • Números complexos

Elabore um “script” Matlab que resolva os seguintes problemas:

  1. Considere a seguinte função f(x,y) definida no domínio x[-1,1]  y[-1,1]:

2

2

))𝑠𝑖𝑛 ( 4 π√𝑥

2

2

Calcule a função numa grelha de 5151 pontos e elabore um gráfico de superfície

utilizando sombreado interpolado. Acrescente as legendas necessárias para aumentar a

legibilidade do gráfico.

  1. Considere a seguinte função de duas variáveis, x e y:

𝑓(𝑥, 𝑦) = 5 𝑠𝑖𝑛( 2 π(𝑥 − 𝑦)) + 3 𝑠𝑖𝑛( 6 π(𝑥 + 𝑦)) + 𝑠𝑖𝑛( 10 π(𝑥 − 𝑦))

Construa um gráfico planar de pseudo-côr de f(x,y) para x[-1,1]  y[-1,1] numa grelha

de 7171 pontos. Aplique sombreado interpolado. Sobreponha nesse gráfico 8 curvas de

nível de f(x,y) a preto. Rotule devidamente os eixos e apresente também a barra de cores.

  1. Represente por um gráfico de superfície a função:

2

3

Sendo x e y ambos definidos por 51 pontos no intervalo [-1,1]. Assinale no mesmo gráfico

a origem dos eixos coordenados com um asterisco vermelho. Sobreponha ao gráfico de

z(x,y) os gráficos dos planos z=0 e x=0. Acrescente os títulos e legendas adequados à boa

compreensão do gráfico. Aumente os limites dos eixos de forma a deixar uma margem de

10% em relação aos limites do gráfico.

  1. Considere a seguinte função de variável complexa:

4

4

definida na grelha x[-1.5,1.5]  y[-1.5,1.5] e com z=x+iy. Considere 61 pontos tanto

para x como para y. Elabore um gráfico de superfície para o valor absoluto desta função.

Apresente a barra de cores e acrescente as legendas adequadas.