Você está na página 1de 6

Escola Superior Náutica Infante D.

Henrique
Computadores e Programação – LPIL – 2023/2024
Trabalho Computacional
Data de entrega: 21/jan/2024, até às 23h59m
Modo de entrega: via TEAMS

PROBLEMA 1

Escreva um script (programa), denominado contaPalavras.m, que peça ao utilizador uma frase e que devolva o
número de palavras que compõem a frase. (SUGESTÃO: Utilizar um ciclo FOR para percorrer a string e somar o
número de espaços em branco…). [EXEMPLO: Estudo na Escola Náutica Infante D. Henrique - resposta: 7]

PROBLEMA 2

Escreva um script (programa), denominado calculaVolume.m, que apresente ao utilizador um menu que permita
calcular: a) Volume de uma esfera; b) Volume de um cilindro; c) Volume de um cone; d) Terminar programa.
O programa deve pedir ao utilizador as dimensões caraterísticas do sólido, fazer o respetivo cálculo do volume e
tornar a apresentar novamente o menu. Caso a opção escolhida não seja válida, a mensagem respetiva deve ser
devolvida ao utilizador e o menu é novamente apresentado. O programa só deve terminar a sua execução quando a
opção d) for selecionada.

O cálculo de volume para os 3 sólidos deve ser implementado com 3 funções: volEsf.m, volCil.m e volCone.m.

PROBLEMA 3

a) Implemente uma função, denominada modeloLinearMMQ.m, que calcule o modelo de


regressão linear (método dos mínimos quadrados). A função deve receber como
parâmetros de entrada um vetor x (valores das abcissas) e um vetor y (valores das
ordenadas). A função deve possuir como parâmetros de saída um array com os
coeficientes do modelo ([a0 a1]) bem como o coeficiente de determinação r2 (i.e.
function [a,r_2]=modeloLinearMMQ(vec_x,vec_y) ).

b) Pretende-se determinar a população da Índia em 2050. Utilize os dados


disponibilizados à direita (fonte: www.worldometers.info) bem como a função que
implementou na alínea anterior para obter o valor pretendido. Apresente o modelo
obtido, o r2 e a estimativa associada. (SUGESTÃO: Escreva um pequeno scipt em que
se define os dados da evolução da população, desde 1955 até 2023, faz a chamada à
função modeloLinearMMQ.m, e apresenta os valores calculados).

1
PROBLEMA 4

a) Escreva uma função que implemente o método das diferenças finitas centradas para estimar a 1ª derivada de
uma função 𝑓𝑓(𝑥𝑥), utilizando uma aproximação de ordem 𝑂𝑂(ℎ2 ).
O cabeçalho da definição da função a implementar deve ser similar a:
[vec_diff_f] = metdfc1(vec_x_i,vec_y_i)
Parâmetros de entrada: um vetor com os vários valores 𝑥𝑥𝑖𝑖 (igualmente espaçados) e um vetor com os vários
valores 𝑦𝑦𝑖𝑖 = 𝑓𝑓(𝑥𝑥𝑖𝑖 ).
Parâmetro de saída: um vetor com a aproximação da derivada em cada ponto 𝑥𝑥𝑖𝑖 , i.e. o valor aproximado de
𝑓𝑓′(𝑥𝑥𝑖𝑖 ). (NOTA: para calcular a derivada nos pontos inicial e final do intervalo deve utilizar o método das
diferenças finitas progressivas e regressivas, respetivamente).

b) Para testar a função, escreva um pequeno script em que define os argumentos da função, faz a chamada à
função, apresenta o resultado da chamada à função e apresenta um gráfico dos valores aproximados de 𝑓𝑓′(𝑥𝑥𝑖𝑖 ).

c) Aplique o script e a função que implementou nas alíneas anteriores para determinar a aceleração, em função
do tempo, de uma moto GP, de que se apresentam os dados na figura seguinte. Utilize um passo no tempo de
1 segundo e apresente os resultados da aceleração em [m/s2], para tempo ∈ [0,20] segundos. Compare os
resultados obtidos com a aceleração gravítica!

Figura: Just how fast do MotoGP bikes actually accelerate..? | MCNews

2
PROBLEMA 5

a) Escreva uma função que implemente a regra trapezoidal para obter uma estimativa do integral de uma função
𝑓𝑓(𝑥𝑥) num dado intervalo [𝑎𝑎, 𝑏𝑏].
O cabeçalho da definição da função a implementar deve ser similar a:
[val_integral_est] = metintegtrap(intervalo,func_f,num_segm)
Os parâmetros de entrada devem ser: um array com os extremos do intervalo, um function handle para a
função 𝑓𝑓(𝑥𝑥) a integrar e o número de segmentos em que o intervalo [𝑎𝑎, 𝑏𝑏] deve ser subdividido.
𝑏𝑏
O parâmetro de saída deve ser: o valor estimado do integral ∫𝑎𝑎 𝑓𝑓(𝑥𝑥 )𝑑𝑑𝑑𝑑 .

b) Para testar a função, escreva um pequeno script em que define os argumentos da função, faz a chamada à
função e apresenta o resultado da chamada à função.

c) De modo a ser possível determinar os custos envolvidos na manutenção de um reservatório de água potável de
uma exploração rural, pretende-se estimar o volume de água necessário para o encher. O reservatório possui
uma altura de 3 metros e tem a forma apresentada na figura seguinte (vista superior do reservatório).

10

y1
9

5
y

1
y2

0
0 2 4 6 8 10 12 14 16 18 20
x

1 1
As curvas 𝑦𝑦1 e 𝑦𝑦2 são as seguintes: 𝑦𝑦1 = 5 + √20𝑥𝑥 − 𝑥𝑥 2 , 𝑦𝑦2 = 5 − √20𝑥𝑥 − 𝑥𝑥 2 .
2 2
As unidades das variáveis x e y são o metro.

Obtenha uma aproximação para a área do reservatório utilizando a regra de integração numérica do trapézio.
Utilize um passo ℎ1 = 0,1 m.

Qual o volume de água que espera ser necessário para encher o reservatório?

PROBLEMA 6

a) Escreva uma função que implemente o método da interpolação polinomial utilizando um polinómio na forma
de Newton.
O cabeçalho da definição da função deve ser similar a:
[coeficientes] = metinterpnewton(vec_x_i,vec_y_i)
Parâmetros de entrada: um vetor com os vários valores 𝑥𝑥𝑖𝑖 e um vetor com os vários valores 𝑦𝑦𝑖𝑖 = 𝑓𝑓(𝑥𝑥𝑖𝑖 ).
Parâmetro de saída: um vetor com os coeficientes do polinómio interpolador (de ordem crescente
relativamente à potência de x, i.e. 𝑑𝑑0 , 𝑑𝑑1 , … , 𝑑𝑑𝑛𝑛−1 , 𝑑𝑑𝑛𝑛 ). (SUGESTÃO: A função deve implementar a tabela
que permite calcular as várias diferenças divididas).

3
b) Para testar a função, escreva um pequeno script em que define os argumentos da função, faz a chamada à
função, apresenta o resultado da chamada à função e apresenta um gráfico do polinómio interpolador no
domínio considerado.

c) Pretende-se obter um modelo polinomial de grau 4, da evolução da velocidade com o tempo, da moto GP
apresentada no Problema 4.
Para obter o modelo polinomial utilize 5 pontos (t=0 s, t=5 s, t=10 s, t=15 s, t=20 s), bem como o script e a
função que implementou nas alíneas anteriores.

PROBLEMA 7

a) Escreva uma função que implemente o método da bissecção.


O cabeçalho da definição da função deve ser similar a:
function [xr,tabela,flagsaida] = metbisseccao(f,xl,xu,critparagem,tol)
Parâmetros de entrada: um function handle, para a função em estudo, os limites inferior e superior do intervalo
inicial, o critério de paragem e respetiva tolerância.
Parâmetros de saída: o valor estimado da raiz da função, a tabela (um array) com todos os dados necessários à
implementação do algoritmo, e um valor lógico que assinala a correta execução (valor 1), ou não (valor 0), do
algoritmo.
Utilize como critérios de paragem: erro absoluto máximo, erro relativo máximo e nº máximo de iterações.

b) Para testar a função, escreva um pequeno script em que define os argumentos de entrada da função, faz a
chamada à função e apresenta o valor da raiz, a tabela e um gráfico com a evolução da estimativa da raiz.

c) Considere um reservatório de gás natural liquefeito, como


apresentado nas figuras ao lado. O raio R, do depósito é igual a 6
metros. A relação entre o volume de gás liquefeito V e o nível h do
mesmo é dada por:
𝜋𝜋ℎ2 (3𝑅𝑅 − ℎ)
𝑉𝑉 =
3

Assuma que se pretende determinar a altura h, quando o volume de


gás liquefeito é aproximadamente um nono da capacidade máxima,
i.e.
1 4
𝑉𝑉 = � 𝜋𝜋𝑅𝑅3 � ≅ 100 𝑚𝑚3 .
9 3
A estimativa obtida deve possuir com um erro relativo aproximado
inferior a 0.5 × 10−6 .

Utilize o método da bissecção para obter a estimativa desejada.


Utilize como intervalo inicial 𝐼𝐼0 = [0 ; 2𝑅𝑅]. Quantas iterações foram
necessárias? Estão de acordo com o previsto analiticamente?
Justifique a sua resposta.

4
PROBLEMA 8

a) Escreva uma função que implemente o método de Newton-Raphason.


O cabeçalho da definição da função deve ser similar a:
[xr,tabela,flagsaida] = metnewtonraphson(f,df,xi,critparagem,tol)
Parâmetros de entrada: dois function handles, um para a função outro para a sua derivada, a estimativa inicial,
o critério de paragem e respetiva tolerância.
Parâmetros de saída: o valor estimado da raiz da função, a tabela (um array) com todos os dados necessários à
implementação do algoritmo, e um valor lógico que assinala a correta execução, ou não, do algoritmo.
Utilize como critérios de paragem: erro absoluto máximo, erro relativo máximo e nº máximo de iterações.

b) Para testar a função, escreva um pequeno script em que define os argumentos da função, faz a chamada à
função e apresenta o valor da raiz, a tabela e um gráfico com a evolução da estimativa da raiz.

c) Utilize o método de Newton-Raphson para resolver a questão apresentada no Problema 7. Utilize como
estimativa inicial ℎ0 = 𝑅𝑅 e como critério de paragem utilize o número máximo de iterações (k=12 iterações).
Comente o resultado obtido relativamente ao método da bissecção.

PROBLEMA 9

a) Escreva uma função que implemente o método do ponto fixo.


O cabeçalho da definição da função deve ser similar a:
function [xr,tabela,flagsaida] = metpontofixo(g,xi,critparagem,tol)
Parâmetros de entrada: um function handle, para a função iteradora de ponto fixo, a estimativa inicial, o
critério de paragem e respetiva tolerância.
Parâmetros de saída: o valor estimado da raiz da função, a tabela (um array) com todos os dados necessários à
implementação do algoritmo, e um valor lógico que assinala a correta execução, ou não, do algoritmo.
Utilize como critérios de paragem: erro absoluto máximo, erro relativo máximo e nº máximo de iterações.

b) Para testar a função, escreva um pequeno script em que define os argumentos de entrada da função, faz a
chamada à função e apresenta o valor da raiz, a tabela e um gráfico com a evolução da estimativa da raiz.

c) Utilize o método do ponto fixo para resolver a questão apresentada no Problema 7. Utilize como estimativa
inicial ℎ0 = 𝑅𝑅 e como critério de paragem utilize um erro relativo aproximado inferior a 0.5 × 10−6 . Comente
o resultado obtido relativamente aos métodos da bissecção e de Newton-Raphson.

_______________________________________________________________________________________________

Entrega do Trabalho

• O trabalho final deve ser entregue via TEAMS, até às 23h59m do dia 21/janeiro/2024.
• Todos os alunos de cada grupo devem entregar o trabalho no TEAMS.
• O trabalho deve conter todos scripts e funções necessárias ao seu funcionamento. Os ficheiros devem ser
organizados por pastas (e.g. Problema1, Problema2, …).
• O relatório deve ser constituído por um documento em .pdf com as respostas (sintéticas) a cada questão dos
problemas. Comentários, relativos a desempenho dos métodos, tais como majoração de erros, convergência,
etc., serão valorizados, mas devem ser sintéticos.
• Todos os ficheiros devem ser comprimidos num só ficheiro com extensão .zip ou similar.
• Não é necessário entregar o trabalho em papel.

5
Avaliação

A avaliação do trabalho computacional será baseada nos seguintes pontos:


1) Implementação dos vários métodos numéricos; [20%]
2) Capacidade de utilização dos métodos na resolução dos problemas propostos; [20%]
3) Discussão oral com os membros do grupo de trabalho (esta avaliação é individual, i.e. alunos do mesmo grupo
poderão ter classificações diferentes, caso o nível da discussão oral seja claramente discrepante entre os vários
alunos). [60%]

Você também pode gostar