De MediaWiki do Campus São José
Ir para navegação
Ir para pesquisar
Informações Básicas
- Código: MLB16470
- Professora: Ana Paula Rosa Negri
- Início: 27/08/2019
- Término: 31/10/2019
- Horário: Terças e quintas, das 19h às 22h
- Referência Básica: PALM, William J. Introdução ao MATLAB para engenheiros. Tradução de Tales Argolo Jesus. 3. ed. Porto Alegre: AMGH, 2013. xiv, 562, il. ISBN 9788580552041
- Referência Complementar: MORAIS, V.. VIEIRA, C. MATLAB Curso Completo. FCA, 2013. 644. ISBN 9727227058
- Tutorial: Bernardo Severo da Silva Filho, Curso de MATLAB 5.1
Conteúdos Abordados
Apresentação da disciplina; Interface do MATLAB; Operadores; Funções; Constantes especiais; Formatos de exibição
Aula 1 - 27 de agosto
|
- Command Window;
- Workspace;
- Current Folder;
- Command History;
- Editor;
- Utilização do ponto (.) no lugar de vírgula (,) para números decimais (1,33 -> 1.33);
Operação
|
Notação matemática
|
Sintaxe no MATLAB
|
Adição |
|
a+b
|
Subtração |
|
a-b
|
Multiplicação |
|
a*b
|
Divisão à direita |
|
a/b
|
Exponenciação: |
|
a^b
|
- ans: Variável temporária que contém a resposta mais recente.
Função
|
Sintaxe no MATLAB
|
|
exp(x)
|
|
sqrt(x)
|
|
abs(x)
|
|
log(x)
|
|
log10(x)
|
|
log2(x)
|
|
cos(x)
|
|
sin(x)
|
|
tan(x)
|
|
acos(x)
|
|
asin(x)
|
|
atan(x)
|
(maior inteiro ) |
floor(x)
|
(menor inteiro ) |
ceil(x)
|
(arredondamento para o inteiro maior próximo) |
round(x)
|
(sinal de ) |
sign(x)
|
Observações:
- Utilizando d após as funções sin, cos e tan e suas inversas, faz o cálculo em graus;
- Utilizando h após as funções sin, cos e tan e suas inversas, tem-se suas versões hiperbólicas;
- 1. Calcule no Matlab:
- a)
- b)
- c)
- d) arredonde o item a.
- e)
- 2. Supondo e , calcule:
- Comandos help, doc e lookfor;
- Utilizando scripts (arquivo .m);
- Limpeza:
- Utilização do ponto e vírgula (;) para não aparecer na Command Window;
- Comando clear para apagar variáveis;
- Comando clc para apagar texto na Command Window;
Comandos
|
Descrições
|
pi |
O número .
|
1i,1j |
A unidade imaginária .
|
Inf |
Infinito.
|
NaN |
Indica um resultado numérico indefinido.
|
- 1. Supondo e , calcule:
Comando
|
Descrição e exemplo
|
format short |
Quatro dígitos decimais (padrão); 13.6745
|
format long |
16 dígitos; 17.27484029463547
|
format short e |
Cinco dígitos (quatro decimais) mais o expoente; 6.3792e+03
|
format long e |
16 dígitos (15 decimais) mais o expoente; 6.379243784781294e-04
|
format bank |
Dois dígitos decimais; 126.73
|
format + |
Positivo, negativo ou zero; +
|
format rat |
Aproximação racional; 43/7
|
format compact |
Suprime algumas linhas em branco
|
format loose |
Restabelece o modo de exibição menos compacto
|
|
Vetores e matrizes
Aula 2 - 29 de agosto
|
- Utilizando dois pontos (:);
- Comandos linspace e logspace;
- 1. Crie os vetores descritos abaixo usando dois métodos diferentes:
- a) Início: 5, Fim: 28, com 100 elementos regularmente espaçados.
- b) Início: 5, Fim: 14, com passo de 0,2.
- c) Início: -2, Fim: 5, com 50 elementos regularmente espaçados.
- d) Início: 100, Fim: 12, com 100 elementos regularmente espaçados.
- 2. Crie os vetores descritos abaixo:
- a) Início: 10, Fim: 1000, com 50 elementos logaritmicamente espaçados.
- b) Início: 0,01, Fim: 1, com 20 elementos logaritmicamente espaçados.
- 3. Crie um vetor x que tenha 6 valores entre 0 e 10. Em seguida, crie uma matriz A cuja primeira linha contenha os valores 3x e segunda linha contenha os valores 5x - 20.
- 4. Repita o exercício anterior, substituindo a palavra linha por coluna.
- 5. Crie o vetor v = [2 4 8 16 32 ... 512 1024] utilizando o comando logspace.
- Definições de matrizes eye, zeros e ones;
- Usando length e size na criação de matrizes;
- Matriz transposta ( .' ) e matriz Hermitiana (');
|
Operações com matrizes
Plots
Aula 4 - 5 de setembro
|
- Comandos plot, stem, bar e stairs de uma função
- Uso de apenas um parâmetro
- Comando subplot
- Comando hold para manter a curva no gráfico
- Comando grid para mostrar linhas em forma de grade
- Nomes aos eixos com xlabel e ylabel
- Comando title
- Comandos axis, xlim e ylim para ajuste de eixos
- Comando legend
- Especificadores de linha, cores e marcadores:
Tipo de linha
|
Símbolo
|
Sólida (padrão) |
-
|
Tracejada |
--
|
Tracejada com pontos |
-.
|
Com pontos |
:
|
Cores
|
Símbolo
|
Preto |
k
|
Azul |
b
|
Ciano |
c
|
Verde |
g
|
Magenta |
m
|
Vermelho |
r
|
Branco |
w
|
Amarelo |
y
|
Marcadores de dados
|
Símbolo
|
Ponto |
.
|
Asterisco |
*
|
Cruz |
x
|
Círculo |
o
|
Adição |
+
|
Quadrado |
s
|
Losango |
d
|
Triângulo apontando pra cima |
^
|
Triângulo apontando pra baixo |
v
|
Triângulo apontando pra direita |
>
|
Triângulo apontando pra esquerda |
<
|
Estrela de 5 pontas |
p
|
Estrela de 6 pontas |
h
|
- Outros comandos relacionados a plotagem:
- Comando figure
- Comando subplot
- Comando close all para fechar todas figuras
- 1. Plote, em um mesmo gráfico, as funções
- e
- para .
- 2. Plote a função de -4 até 4. Para certificar que o plot está correto, calcule na mão as raízes da função, e compare com os pontos onde a curva cruza o eixo horizontal (onde )
- 3. Utilize o MATLAB para plotar a função ao longo do intervalo . Insira um título na plotagem e rotule adequadamente os eixos. A variável T representa a temperatura em graus Celsius; a variável t representa o tempo em minutos.
- 4. Plote as funções e ao longo do intervalo . Rotule adequadamente a plotagem e cada uma das curvas, utilizando legend. A variável u representa a velocidade de uma Ferrari em km/h. A variável v representa a velocidade de um Fusca.
- 5. Use a função stem para plotar os sinais abaixo na mesma figura:
- , para
- , para
- 6. A série de Fourier é uma representação em série de funções periódicas em termos de senos e cossenos. A representação em série de Fourier da função
- é
- .
- Plote, em um mesmo gráfico, a função f(x) e sua representação em série g(x), utilizando os quatro termos explicitados. Considere x na faixa de até .
- 7. Fazer o plot de um sinal de tensão versus tempo, como da figura:
- Não esquecer de nomear os eixos.
- 8. Desafio: Resolva a questão 6, apresentando a resposta para um número genérico "N" de termos.
|
Endereçamento de vetores e matrizes
Aula 5 - 10 de setembro
|
- Endereçamento de vetores e matrizes
-
- Palavra-chave end
- Indexação/submatrizes do lado esquerdo vs do lado direito
- Exclusão de linha ou coluna
- 1. Crie uma matriz A de tamanho 15 x 15 de inteiros.
- a) Extraia o elemento da segunda linha e quarta coluna de A, armazenando na variável u
- b) Crie um vetor v formado pelos elementos da segunda coluna de A
- c) Crie um vetor w formado pelos elementos da última linha de A
- d) Crie uma matriz B formada pelos elementos da segunda até a décima coluna de A
- e) Crie uma matriz C formada pelos elementos da quinta até a penúltima linha de A
- f) Crie uma matriz D formada pelos elementos da sétima até a penúltima linha e das 3 últimas colunas de A
- g) Crie uma matriz E formada pelas linhas pares e colunas múltiplas de 3 de A
- h) Crie uma matriz F formada pelas linhas 1 a 7 e mais a 13 e pelas colunas 4, 5 e 1 de A
- 2. Assuma que a matriz C seja definida como abaixo e determine o conteúdo das seguintes submatrizes. Descubra a saída dos comandos antes de executá-los.
- a) C(2, :)
- b) C(:, end)
- c) C(1:2, 2:end)
- d) C(6)
- e) C(4:end)
- f) C(1:2, 2:4)
- g) C([1 3], 2)
- h) C([2 2], [3 3])
- 3. Determine a saída no command window após a execução dos comandos abaixo. Descubra a saída dos comandos antes de executá-los.
- A = [1 2 3; 4 5 6; 7 8 9]
- A([3 1], :) = A([1 3], :)
- A([1 3], :) = A([2 2], :)
- A = A(:, [2 2])
- 4. Determine o conteúdo da matriz A após a execução das seguintes declarações. Descubra a saída dos comandos antes de executá-los.
- a) A = eye(3,3);
- b = [1 2 3];
- A(2, :) = b;
- b) A = eye(3,3);
- b = [4 5 6];
- A(:, 3) = b';
- c) A = eye(3,3);
- b = [7 8 9];
- A(3, :) = b([3 1 2]);
Códigos executados em sala
|
Concatenação de matrizes; Texto; Entrada e saída de dados
Aula 6 - 12 de setembro
|
- Concatenação de vetores e matrizes
- Comandos repmat, reshape, fliplr e flipud
- Trabalhando com texto (string)
- Conversão de dados (comandos double() e char())
- Comando input para entrada de dados
- Comando disp para saída de dados
- Comandos num2str e str2num
- Entrada de dados sem a tecla ENTER
- 1. Criar uma calculadora de IMC com perguntas (input) para massa e altura. Use o disp para exibir o resultado de forma agradável ao usuário.
- Comandos sort, unique
- Comandos union (), intersect (), setdiff (), setxor (diferença simétrica)
- Representação de polinômios a partir de vetores
- Comandos polyval, poly e roots
- Comandos conv e deconv para multiplicação e divisão de polinômios
- Comandos polyder e polyint para derivada e integral de polinômios
- Comando randi para valores inteiros uniformemente distribuídos
- Comando rand para valores uniformemente distribuídos
- Comando randn para valores normalmente distribuídos
- Comando hist para cálculo/visualização do histograma
- 1. Mostre todos os inteiros positivos
- a) menores que 100 que são múltiplos de 3 ou de 5.
- b) menores que 200 que são múltiplos de 3 e 5.
- c) menores que 125 que são múltiplos de 3 ou de 5, mas não de ambos.
- 2. Utilize o MATLAB para obter as raízes do polinômio
- .
- Utilize a função poly para confirmar sua resposta.
- 3. Utilize o MATLAB para confirmar que
- 4. Utilize o MATLAB para confirmar que
- com resto de .
- 5. Utilize o MATLAB para confirmar que
- quando .
- 6. Plote o polinômio
- ao longo da faixa .
Códigos executados em sala
|
Revisão de conceitos e exercícios
Aula 7 - 17 de setembro
|
- 1. A tabela a seguir mostra o salário por hora, as horas de trabalho e a produção (número de dispositivos produzidos) em uma semana para cinco fabricantes de dispositivos.
|
Trabalhador 1
|
Trabalhador 2
|
Trabalhador 3
|
Trabalhador 4
|
Trabalhador 5
|
Salário por hora ($) |
5,00 |
5,50 |
6,50 |
6,00 |
6,25
|
Horas de trabalho (h) |
40 |
43 |
37 |
50 |
45
|
Produção (dispositivos) |
1000 |
1100 |
1000 |
1200 |
1100
|
- Utilize o MATLAB para responder essas questões:
- a) Quanto cada trabalhador recebeu na semana?
- b) Qual foi o salário total pago na semana?
- c) Quantos dispositivos foram fabricados na semana?
- d) Qual é o custo médio para se produzir um dispositivo?
- e) Quantas horas são necessárias, em média, para se produzir um dispositivo?
- f) Assumindo que a produção de cada trabalhador tenha a mesma qualidade, qual trabalhador é o mais eficiente? Qual é o menos eficiente?
- 2. A aproximação de Bhaskara I para a função seno em graus é dada por:
- Crie uma figura contendo 3 plots:
- A função seno verdadeira
- A aproximação de Bhaskara I
- O erro da aproximação
- 3. Se uma bola é lançada da altura m acima da superfície da terra, com velocidade vertical m/s, a posição e a velocidade da bola como função no tempo serão dadas pelas equações
- onde g é a aceleração da gravidade (-9,81 m/s²). A bola atingirá o solo em
- Escreva um programa de MATLAB que desenhe a altura e a velocidade como função do tempo, para utilizando o comando subplot. Faça com que e sejam parâmetros da script. Não deixe de incluir as legendas apropriadas.
- 4. Joãozinho depositou num fundo de investimento com taxa de juros ao mês. Faça um gráfico do saldo do investimento. Em quanto tempo o valor depositado será dobrado? Dica: (link)
- 1. Plote um círculo com raio 2 e centrado no ponto (4,3). Dica: use equações paramétricas.
- 2. Repita o Exercício 6 da Aula 4 com um número genérico de termos somados em .
- 3. Plote o símbolo do Batman (para quem tem dúvida, link).
Códigos executados em sala
|
Variáveis lógicas; Operadores relacionais e lógicos
Aula 8 - 19 de setembro
|
- Variáveis lógicas (booleanas):
- Endereçamento lógico de vetores e matrizes
Operador
|
Significado
|
< |
Menor que
|
<= |
Menor ou igual a
|
> |
Maior que
|
>= |
Maior ou igual a
|
== |
Igual a
|
~= |
Não é igual a
|
Operador
|
Nome
|
& |
AND
|
ǀ |
OR
|
~ |
NOT
|
xor(a,b) |
XOR
|
- Comparação de vetores ou matrizes:
-
- Comandos strcmp e strcmpi
- 1. Sejam x = [1 7 5 3 8 2] e y = [1 8 2 3 9 1]. Encontre os resultados dos seguintes comandos antes de executá-los:
- a) z = x < 6
- b) z = x <= y
- c) z = x == y
- d) z = x ~= y
- 2. A tabela abaixo mostra as temperaturas diárias (em Celsius) em três cidades diferentes.
Temperatura
|
Cidade
|
Dia 1
|
Dia 2
|
Dia 3
|
Dia 4
|
Dia 5
|
Dia 6
|
Dia 7
|
Palhoça |
10 |
13 |
6 |
5 |
-1 |
10 |
4
|
São José |
19 |
13 |
3 |
5 |
1 |
22 |
14
|
Biguaçu |
30 |
2 |
3 |
-1 |
10 |
-2 |
40
|
- Determine em quais dias:
- a) A temperatura na Palhoça é maior que 8 °C.
- b) A temperatura em São José se encontra entre 1 °C e 15 °C (incluindo ambos os extremos).
- c) Fez mais frio na Palhoça que em São José.
- d) Biguaçu foi a cidade mais quente de todas.
- 3. A altura e a velocidade de um projétil lançado com uma velocidade e um ângulo com a horizontal são dadas, em funcão do tempo t, por
- respectivamente, em que g é a aceleração da gravidade. O projétil atinge o solo quando , o que ocorre no tempo . Suponha que °, m/s e m/s².
- a) Plote os gráficos da altura e da velocidade do projétil, de até .
- b) Determine os instantes de tempo em que a altura é de no mínimo 15 m.
- c) Determine os instantes de tempo em que a altura é de no mínimo 15 m e, ao mesmo tempo, a velocidade é de no máximo 36 m/s.
- d) Determine os instantes de tempo em que a altura é de no mínimo 15 m ou a velocidade é de no máximo 36 m/s.
- e) Destaque as figuras anteriores com os intervalos calculados na letra c).
Comandos executados em sala de aula
|
Controle de fluxo de dados - if e switch
Aula 9 - 24 de setembro
|
- Editor de texto (Editor)
- Seções (%%)
- Controle de fluxo de dados:
- As sentenças if, else e elseif
- 1. Crie um programa que recebe do usuário um número X. Se este número for maior que 10, então, o programa deve mostrar o quadrado do número X. Caso contrário, o número X deve ser exibido junto com uma mensagem de boa noite.
- 2. Escreva um programa no qual o usuário irá entrar com uma string, que irá informar o assunto de uma discussão em um bate-papo da UOL. O programa deverá mostrar uma mensagem de boas vindas relacionada ao tema nos casos em que o tema seja cinema, moda ou gastronomia. Se o assunto for politica, futebol ou religiao, o programa deverá informar que estes assuntos estão proibidos. Qualquer outro assunto é inválido, e deverá receber uma mensagem crítica.
- 3. Escreva um programa no qual o usuário fornece três valores: o valor inicial, o valor final e o passo de um intervalo. Crie proteções para que o intervalo seja consistente. Por exemplo, se o valor final for menor que o valor inicial, então o passo deve ser negativo. Ao fim do programa, exiba , onde x é o intervalo.
- 4. Crie um código que calcula o valor gasto total (em R$) e o peso total (em kg) da compra de algumas unidades de arroz (5 kg), feijão (1 kg) e café (500 g).
- O usuário deve fornecer quantas unidades quer comprar de cada produto (comando input).
- Os dados devem ser validados: verificar se o usuário forneceu alguma quantidade negativa.
- Condições de compra:
- O preço unitário do arroz é R$15,00. Se comprar 3 ou mais, o preço cai para R$14,00 cada.
- O preço unitário do feijão é R$12,00. Se comprar 4 ou mais, o preço cai para R$11,50 cada.
- O preço unitário do café é R$10,00. Se comprar 3 ou mais, o preço cai para R$9,25 cada.
- 5. Implemente uma calculadora com as quatro operações básicas, recebendo a escolha de operação e números com o comando input. Não se esqueça de implementar proteções para as entradas de dados (divisão por zero, vetores, etc).
- 6. Modifique o programa do cálculo do IMC (Aula 6) de modo a informar ao usuário o grau de magreza/obesidade do indivíduo (veja aqui).
- Um único valor
- Múltiplos valores
- 1. Reescreva o código da questão 2 anterior (bate-papo da UOL) fazendo o uso da sentença switch.
- 2. Reescreva o código da questão 5 anterior (calculadora) fazendo o uso da sentença switch.
Códigos executados em sala de aula
|
Struct
Aula 10 - 26 de setembro
|
- Criando estruturas com o comando struct
- Criando estruturas com o operador "."
- Comando isfield para identificar se um campo existe ou não
- Comando rmfield para remover campo da estrutura
- 1. Crie um programa que utiliza duas estruturas: ponto e reta.
- A estrutura ponto deve ter como campos as coordenadas do ponto.
- A estrutura reta tem como campos os coeficientes angular e linear da reta.
- O seu programa deve requisitar do usuário as coordenadas do ponto e os coeficientes da reta. Como saída, seu programa deve
- a) Plotar na tela (plot) uma figura contendo o ponto e a reta.
- b) Imprimir na tela (disp) distância do ponto até a origem.
- c) Imprimir na tela (disp) se o ponto pertence à reta.
- Para testar seu programa: o ponto (3, 4) dista da origem de 5 unidades e pertence à reta y = 2x - 2.
- 2. Crie uma estrutura que contenha todas as informações necessárias para construir um diagrama de um conjunto de dados. No mínimo, a estrutura deve conter os seguintes campos:
- x_data: dado referente ao eixo "x"
- y_data: dado referente ao eixo "y"
- title: título do diagrama
- x_label: rótulo do eixo "x"
- y_label: rótulo do eixo "y"
- x_range: faixa de valores exibidos no eixo "x"
- y_range: faixa de valores exibidos no eixo "y"
- Você pode adicionar outros campos que aumentem seu controle sobre o diagrama final.
- Depois de criar essa estrutura, escreva um programa no MATLAB que use a estrutura para gerar um gráfico. O programa deve aplicar características iniciais inteligentes se alguns campos de dados estiverem faltando.
- 3. Crie um arranjo de estruturas que contenha os os seguintes campos de informação concernentes a pontes rodoviárias em uma cidade: localização da ponte, carga máxima (toneladas), ano de construção, ano agendado para a manutenção.
- a) Insira os dados abaixo na estrutura:
Localização
|
Carga máxima
|
Ano de construção
|
Agendamento para a manutenção
|
Smith St.
|
80
|
1928
|
2011
|
Hope Ave.
|
90
|
1950
|
2013
|
Clark St.
|
85
|
1933
|
2012
|
North Rd.
|
100
|
1960
|
2012
|
- b) Edite o arranjo de estruturas para mudar de 2012 para 2018 o ano agendado para a manutenção da ponte Clark St.
- c) Adicione a seguinte ponte ao arranjo de estruturas:
Localização
|
Carga máxima
|
Ano de construção
|
Agendamento para a manutenção
|
Shore Rd.
|
85
|
1997
|
2014
|
Códigos executados em sala
|
Cell
Aula 11 - 01 de Outubro
|
- Arranjo de células: texto e números
- Comando celldisp e cellplot
- 1. Repita os exercícios da Aula 10 usando células
|
Estruturas de repetição - for e while
Aula 12 - 3 de outubro
|
- Laços for
- Laços while
- Sentenças break e continue
- 1. Acrescente à calculadora (Aula 9) a possibilidade de continuar realizando cálculos até que o usuário solicite a saída digitando 's'.
- 2. Escreva um programa que calcule o fatorial de um número, utilizando for e while.
- 3. Escreva um programa que calcule os n primeiros termos da sequência de Fibonacci, dispondo-os num vetor.
- 4. Considere os códigos abaixo:
Símbolo
|
A
|
B
|
C
|
D
|
E
|
F
|
Código 1
|
000
|
001
|
010
|
011
|
100
|
101
|
Código 2
|
00
|
10
|
11
|
010
|
0110
|
0111
|
- a) Escreva um programa que codifique uma sequência de símbolos, gerando a sequência de bits correspondente. Seu programa deverá funcionar tanto para o código 1 quanto para o código 2. Teste seu programa com a seguinte string: F A D A B A B A C A.
- b) Escreva um programa que decodifique uma string recuperando a sequência de símbolos original. Teste seu programa com a seguinte sequência de bits:
- Código 1: 001000001000101100011100
- Código 2: 10001000011101100100110
- c) Junte os dois códigos anteriores num único programa, onde o usuário seleciona a operação (codificação ou decodificação), o código (1 ou 2), e entra com o dado a ser operado.
- 5. Escreva um programa que implementa o jogo Genius®. O programa deverá gerar uma sequência aleatória de letras e/ou números e exibir um por um na tela, limpando-a em seguida. Após isso, aguardará o usuário entrar com a sequência.
- 6. A série de Fourier é uma representação em série de funções periódicas em termos de senos e cossenos. A representação em série de Fourier da função
- é
- .
- Plote em um mesmo gráfico a função f(x) e sua representação em série g(x), utilizando um número de termos definido pelo usuário.
|
Funções
Aula 13 - 8 de outubro
|
- Funções definidas pelo usuário
- Único retorno
- Múltiplos retornos
- Comando return
- 1. Escreva as seguintes funções:
- a) Uma função que retorna a média aritmética e a média geométrica de dois dados números.
- b) Modifique o programa do IMC (Aula 9) para que ele seja calculado a partir da chamada de uma função.
- c) Uma função que retira um caracter (passado no primeiro argumento da função) de uma string (passada no segundo argumento da função)
- 2. Escreva uma função que determina o tempo (em anos) necessário para que você acumule pelo menos VF (em dólares) em uma conta bancária se você depositar inicialmente V0 (em dólares) e mais P (em dólares) ao final de cada ano, com um rendimento anual de R%.
- 3. Escreva as seguintes funções:
- a) Uma função que calcule o fatorial de um número;
- b) Uma função que calcule os n primeiros termos da sequência de Fibonacci, dispondo-os num vetor;
- c) Inclua proteções para usuário (para o caso em que o usuário tenha passado algo diferente do esperado como argumento) nas duas funções anteriores.
- 4. Escreva uma função que implementa a Cifra de César. A entrada da função deve ser:
- O string a ser codificado/decodificado;
- O deslocamento a ser aplicado em cada letra do string, podendo ser um inteiro positivo (deslocamento para a direita) ou negativo (deslocamento para a esquerda).
- 5. Escreva uma função que retorna todos os números primos menores ou iguais a um dado inteiro n. Utilize o algoritmo do Crivo de Eratóstenes.
|