|
|
Linha 1 419: |
Linha 1 419: |
| | | |
| Aula dedicada ao projeto. | | Aula dedicada ao projeto. |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Vetores e matrizes ===
| |
− | {{collapse top| bg=lightblue | 13/Set}}
| |
− |
| |
− | * Definições de vetores;
| |
− |
| |
− | * Definições de matrizes;
| |
− |
| |
− | * Comandos ''length'' e ''size'';
| |
− |
| |
− | * Arranjo de vetores:
| |
− | :* Utilizando dois pontos (:);
| |
− | ::* Definição de passo;
| |
− | :* Comandos ''linspace'' e ''logspace'';
| |
− |
| |
− |
| |
− | * '''Exercícios:'''
| |
− |
| |
− | :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 3'''x''' e segunda linha contenha os valores 5'''x''' - 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 (');
| |
− |
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-2|Códigos executados na aula]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Operações com matrizes; Plots ===
| |
− | {{collapse top| bg=lightblue | 18/Set}}
| |
− |
| |
− | * Operações;
| |
− | :* Soma e diferença;
| |
− | :* Produto matricial;
| |
− | :* Produto e divisão elemento a elemento;
| |
− | :* Potenciação;
| |
− | :* Funções (''sin'', ''log'', etc) aplicadas a matrizes;
| |
− | :* Operações entre matrizes e escalares;
| |
− | :* Comandos ''sum'' e ''prod'';
| |
− | :* Mínimo (''min''), máximo (''max''), média (''mean'') e norma (''norm'');
| |
− | :* Determinante (''det'') e inversa (''inv'') de uma matriz;
| |
− |
| |
− |
| |
− | * '''Exercícios:'''
| |
− |
| |
− | :1. Defina as matrizes abaixo:
| |
− |
| |
− | :::<math>
| |
− |
| |
− | A = \begin{bmatrix}
| |
− | 1 & 2 & 3 & 4 & 5\\
| |
− | 6 & 7 & 8 & 9 & 10\\
| |
− | 11 & 12 & 13 & 14 & 15\\
| |
− | 16 & 17 & 18 & 19 & 20
| |
− | \end{bmatrix}
| |
− |
| |
− | \qquad
| |
− |
| |
− | B = \begin{bmatrix}
| |
− | 1/2 & 1/3\\
| |
− | 1/4 & 1/5\\
| |
− | 1/6 & 1/7\\
| |
− | 1/8 & 1/9
| |
− | \end{bmatrix}
| |
− |
| |
− | \qquad
| |
− |
| |
− | C = \begin{bmatrix}
| |
− | -1/12 & 1/{-3}\\
| |
− | 0 & 0\\
| |
− | 1 & 17\\
| |
− | 2 & 19
| |
− | \end{bmatrix}
| |
− |
| |
− | \qquad
| |
− |
| |
− | D = \begin{bmatrix}
| |
− | \sqrt 2\\
| |
− | \pi\\
| |
− | e\\
| |
− | \sqrt 3\\
| |
− | 42
| |
− | \end{bmatrix}
| |
− |
| |
− | </math>
| |
− |
| |
− | :2. Para as matrizes acima, realize as operações abaixo:
| |
− | ::a) B + C
| |
− | ::b) A D (multiplicação matricial)
| |
− | ::c) C B<sup>T</sup> A
| |
− | ::d) X = B<sup>T</sup> C
| |
− | ::e) X<sup>2</sup>
| |
− | ::f) B C (multiplicação elemento a elemento)
| |
− |
| |
− |
| |
− | * Plots:
| |
− | :* Comandos ''plot'', ''stem'', ''bar'' e ''stairs'' de uma função
| |
− | ::* Uso de apenas um parâmetro
| |
− | :* 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:
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! '''Tipo de linha'''
| |
− | ! '''Símbolo'''
| |
− | |-
| |
− | | Sólida (padrão) || -
| |
− | |-
| |
− | | Tracejada || --
| |
− | |-
| |
− | | Tracejada com pontos || -.
| |
− | |-
| |
− | | Com pontos || :
| |
− | |}
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! '''Cores'''
| |
− | ! '''Símbolo'''
| |
− | |-
| |
− | | Preto || k
| |
− | |-
| |
− | | Azul || b
| |
− | |-
| |
− | | Ciano || c
| |
− | |-
| |
− | | Verde || g
| |
− | |-
| |
− | | Magenta || m
| |
− | |-
| |
− | | Vermelho || r
| |
− | |-
| |
− | | Branco || w
| |
− | |-
| |
− | | Amarelo || y
| |
− | |}
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! '''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
| |
− | |}
| |
− |
| |
− |
| |
− | * '''Exercícios'''
| |
− |
| |
− | :1. Faça o plot de algumas das funções matemáticas vistas na aula 1. Use cores, ''hold on'', etc
| |
− |
| |
− | :2. Plotar a função <math>f(x) = x^2 + x - 2 </math> de -4 até 4 e encontrar as raízes por Bhaskara
| |
− |
| |
− | :3. Utilize o MATLAB para plotar a função <math>T = 3 \ln (2 t) - 5 e^{0,5 t}</math> ao longo do intervalo <math>1 \leq t \leq 3</math>. 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 <math>u = 100 \log_{10} (60 x + 1)</math> e <math>v = 50 \cos(6 x) \mathrm{sen} (2 x) + 150 x</math> ao longo do intervalo <math>0 \leq x \leq 2</math>. 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:
| |
− | :: <math>\cos(x)</math>, para <math>0 \leq x \leq 2 \pi</math>
| |
− | :: <math>0,5 \sin(x)</math>, para <math>\pi \leq x \leq 3 \pi</math>
| |
− |
| |
− | :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
| |
− | :::::<math>f(x) =
| |
− | \begin{cases}
| |
− | -1, & -\pi \leq x \leq 0 \\
| |
− | 1, & 0 \leq x \leq \pi
| |
− | \end{cases}</math>
| |
− | ::é
| |
− | :::::<math>g(x) = \frac{4}{\pi} \left( \frac{\sin(x)}{1} + \frac{\sin(3x)}{3} + \frac{\sin(5x)}{5} + \frac{\sin(7x)}{7} + \cdots \right)</math>.
| |
− | ::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.
| |
− |
| |
− | :7. Fazer o ''plot'' de um sinal de tensão versus tempo, como da figura:
| |
− | :::::<math>f(t) =
| |
− | \begin{cases}
| |
− | \sin(2 \pi t / 63), & \text{de } t = 1s \text{ ate } t = 63s \\
| |
− | 0, & \text{de } t = 64s \text{ ate } t = 80s \\
| |
− | 1, & \text{de } t = 81s \text{ ate } t = 100s \\
| |
− | -1, & \text{de } t = 101s \text{ ate } t = 120s
| |
− | \end{cases}</math>
| |
− | :: Não esquecer de nomear os eixos.
| |
− | [[Image:Exercícios Aula 3 FIC Matlab.jpg|600px|center]]
| |
− |
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-3|Códigos executados na aula]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Números aleatórios; Endereçamento de vetores e matrizes ===
| |
− |
| |
− | {{collapse top| bg=lightblue | 20/Set}}
| |
− |
| |
− | * Outros comandos relacionados a plotagem:
| |
− | :* Comando ''figure''
| |
− | :* Comando ''subplot''
| |
− | :* Comando ''close all'' para fechar todas figuras
| |
− |
| |
− | * Números aleatórios
| |
− | :* Comando ''randi'' para valores inteiros uniformemente distribuídos
| |
− | :* Comando ''rand'' para valores uniformemente distribuídos
| |
− | :* Comando ''randn'' para valores normalmente distribuídos
| |
− | :* Comando ''hist'' e ''histogram'' para cálculo/visualização do histograma
| |
− |
| |
− | * Endereçamento de vetores e matrizes
| |
− | :* Indexação de um elemento
| |
− | ::* Índice
| |
− | ::* Subscrito
| |
− | :* Submatrizes
| |
− | ::* Índice
| |
− | ::* Subscrito
| |
− | :* Palavra-chave ''end''
| |
− | :* Indexação/submatrizes do lado esquerdo vs do lado direito
| |
− | :* Exclusão de linha ou coluna
| |
− |
| |
− |
| |
− | * '''Exercícios:'''
| |
− |
| |
− | :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.
| |
− |
| |
− | :::<math>
| |
− | C = \begin{bmatrix}
| |
− | 1{,}1 & -3{,}2 & 3{,}4 & 0{,}6 \\
| |
− | 0{,}6 & 1{,}1 & -0{,}6 & 3{,}1 \\
| |
− | 1{,}3 & 0{,}6 & 5{,}5 & 0{,}0
| |
− | \end{bmatrix}
| |
− | </math>
| |
− |
| |
− | ::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]);
| |
− |
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-4|Códigos executados na aula]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Aula de exercícios ===
| |
− |
| |
− | {{collapse top| bg=lightblue | 25/Set}}
| |
− |
| |
− | * '''Exercícios''':
| |
− |
| |
− | :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.
| |
− |
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! ''' '''
| |
− | ! '''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?
| |
− | :::c) Quantos dispositivos foram fabricados?
| |
− | :::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:
| |
− |
| |
− | :::<math>
| |
− | \sin(x^{\circ}) \approx \frac{4 x (180 - x)}{40500 - x (180 - x)} ~~~ \text{para } 0 \leq x \leq 180
| |
− | </math>
| |
− |
| |
− | ::Crie uma figura contendo 3 plots:
| |
− | ::* A função seno original
| |
− | ::* A aproximação de Bhaskara I
| |
− | ::* O erro da aproximação
| |
− |
| |
− | :3. Se uma bola estacionária é lançada da altura <math>h_0</math> acima da superfície da terra, com velocidade vertical <math>v_0</math>, a posição e a velocidade da bola como função no tempo serão dadas pelas equações
| |
− | :::<math>
| |
− | h(t) = \frac{1}{2} g t^2 + v_0 t + h_0
| |
− | </math>
| |
− | :::<math>
| |
− | v(t) = g t + v_0
| |
− | </math>
| |
− | ::onde ''g'' é a aceleração da gravidade (-9,81 m/s²). Escreva um programa de MATLAB que desenhe a altura e a velocidade como função do tempo. Faça com que <math>h_0</math> e <math>v_0</math> sejam parâmetros da script. Não deixe de incluir as legendas apropriadas.
| |
− |
| |
− | :4. Joãozinho depositou <math>v_p = \text{BRL } 1.000,00</math> num fundo de investimento com taxa de juros <math>j = 0{,}8 %</math> ao mês. Faça um gráfico do saldo do investimento. Em quanto tempo o valor depositado será dobrado? Dica: [https://pt.wikipedia.org/wiki/Juro#Juros_compostos (link)]
| |
− |
| |
− | * '''Desafio''':
| |
− |
| |
− | :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 3 (Fourier) para um número de termos genérico.
| |
− | :3. Plote o símbolo do Batman (para quem tem dúvida, [http://www.isrs2011.org/thumbnail/b/batman-symbol-coloring-pages-clipart-best-4.jpeg link]).
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Concatenação de matrizes; Polinômios; Conjuntos; Texto; Entrada e saída de dados ===
| |
− | {{collapse top| bg=lightblue | 27/Set}}
| |
− |
| |
− | * Concatenação de vetores e matrizes
| |
− | * Comandos ''repmat'' e ''reshape''
| |
− |
| |
− |
| |
− | * Comandos ''sort'', ''unique''
| |
− | * Comandos ''union'' (<math>A \cup B</math>), ''intersect'' (<math>A \cap B</math>), ''setdiff'' (<math>A \setminus B</math>), ''setxor'' (diferença simétrica)
| |
− |
| |
− |
| |
− | * '''Exercícios''':
| |
− | :1. Mostre todos os inteiros positivos múltiplos de 3 ou 5 menores que 100
| |
− | :2. Mostre todos os inteiros positivos múltiplos de 3 e 5 menores que 200
| |
− | :3. Mostre todos os inteiros positivos múltiplos de 3 ou 5 mas não de ambos menores que 125
| |
− |
| |
− |
| |
− | * Polinômios
| |
− | :* 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
| |
− |
| |
− |
| |
− | * '''Exercícios''':
| |
− |
| |
− | [[Imagem:Matlab_poly_EX1.jpg|thumb|600px|center]]
| |
− | [[Imagem:Matlab_poly_EX2.jpg|thumb|600px|center]]
| |
− | [[Imagem:Matlab_poly_EX3.jpg|thumb|600px|center]]
| |
− | [[Imagem:Matlab_poly_EX4.jpg|thumb|600px|center]]
| |
− | [[Imagem:Matlab_poly_EX5.jpg|thumb|600px|center]]
| |
− |
| |
− |
| |
− | * Trabalhando com texto (''string'')
| |
− |
| |
− |
| |
− | * Entrada/Saída de dados
| |
− | :* Comando ''input'' para entrada de dados
| |
− | :* Comando ''disp'' para saída de dados
| |
− | :* Comandos ''num2str'' e ''str2num''
| |
− | :* Entrada de dados sem a tecla ENTER
| |
− |
| |
− |
| |
− | * '''Exercício''':
| |
− |
| |
− | :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.
| |
− |
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-6|Códigos executados na aula]]
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Variáveis lógicas; Operadores; Controle de fluxo de dados - ''if'' ===
| |
− | {{collapse top| bg=lightblue | 02/Out}}
| |
− |
| |
− | * Variáveis lógicas:
| |
− | :* Comando ''logical''
| |
− |
| |
− | * Endereçamento lógico de vetores e matrizes
| |
− |
| |
− |
| |
− | * Operadores:
| |
− |
| |
− | :* Operadores relacionais:
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! '''Operador'''
| |
− | ! '''Significado'''
| |
− | |-
| |
− | | < || Menor que
| |
− | |-
| |
− | | <= || Menor ou igual a
| |
− | |-
| |
− | | > || Maior que
| |
− | |-
| |
− | | >= || Maior ou igual a
| |
− | |-
| |
− | | == || Igual a
| |
− | |-
| |
− | | ~= || Não é igual a
| |
− | |}
| |
− |
| |
− | :* Operadores lógicos (vetores):
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! '''Operador'''
| |
− | ! '''Nome'''
| |
− | |-
| |
− | | & || AND
| |
− | |-
| |
− | | ǀ || OR
| |
− | |-
| |
− | | ~ || NOT
| |
− | |-
| |
− | | xor(a,b) || XOR
| |
− | |}
| |
− |
| |
− | :* Operadores lógicos ''curto-circuito'':
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! '''Operador'''
| |
− | ! '''Nome'''
| |
− | |-
| |
− | | && || AND
| |
− | |-
| |
− | | ǀǀ || OR
| |
− | |}
| |
− |
| |
− | :* Comparação de ''strings'':
| |
− | ::* Comandos ''strcmp'' e ''strcmpi''
| |
− |
| |
− |
| |
− | * Comando ''find''
| |
− |
| |
− |
| |
− | * '''Exercícios''':
| |
− |
| |
− | :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.
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! '''Cidade \ Temperatura'''
| |
− | ! '''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 <math>v_0</math> e um ângulo com a horizontal <math>a</math> são dadas, em funcão do tempo ''t'', por
| |
− | :::<math>h(t) = v_0 \, t \, \mathrm{sen}(a) + \frac{1}{2} \, g \, t^2,</math>
| |
− | :::<math>v(t) = \sqrt{v_0^2 + 2 \, v_0 \, g \, t \, \mathrm{sen}(a) + g^2 \, t^2},</math>
| |
− | :respectivamente, em que ''g'' é a aceleração da gravidade. O projétil atinge o solo quando <math>h(t) = 0</math>, o que ocorre no tempo <math>t_\mathrm{hit} = -2 (v_0 / g) \mathrm{sen}(a)</math>. Suponha que <math>a = 30</math>°, <math>v_0 = 40</math> m/s e <math>g = -9{,}81</math> m/s².
| |
− | ::a) Plote os gráficos da altura e da velocidade do projétil, de <math>t = 0</math> até <math>t = t_\mathrm{hit}</math>.
| |
− | ::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.
| |
− | ::c) 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.
| |
− |
| |
− |
| |
− | * Controle de fluxo de dados:
| |
− |
| |
− | :* As sentenças ''if'', ''else'' e ''elseif''
| |
− |
| |
− |
| |
− | * '''Exercícios''':
| |
− |
| |
− | :1. 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.
| |
− |
| |
− | :2. 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).
| |
− |
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-7|Códigos executados em sala]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Controle de fluxo de dados - ''switch''; Structs; Cells ===
| |
− |
| |
− | {{collapse top| bg=lightblue | 04/Out}}
| |
− |
| |
− | * A sentença ''switch''
| |
− | :* Um único valor
| |
− | :* Múltiplos valores
| |
− |
| |
− |
| |
− | * '''Exercício''':
| |
− |
| |
− | :1. Reescreva o código da calculadora da aula anterior fazendo o uso da sentença ''switch''
| |
− |
| |
− |
| |
− | * Estruturas
| |
− | :* Criando estruturas com o operador "."
| |
− | :* Criando estruturas com o comando ''struct''
| |
− | :* Comando ''isfield'' para identificar se um campo existe ou não
| |
− | :* Comando ''rmfield'' para remover campo da estrutura
| |
− |
| |
− |
| |
− | * '''Exercícios:'''
| |
− |
| |
− | :1. 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:
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! style="font-weight: bold;" | Localização
| |
− | ! style="font-weight: bold;" | Carga máxima
| |
− | ! style="font-weight: bold;" | Ano de construção
| |
− | ! style="font-weight: bold;" | 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:
| |
− |
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! style="font-weight: bold;" | Localização
| |
− | ! style="font-weight: bold;" | Carga máxima
| |
− | ! style="font-weight: bold;" | Ano de construção
| |
− | ! style="font-weight: bold;" | Agendamento para a manutenção
| |
− | |-
| |
− | | Shore Rd.
| |
− | | 85
| |
− | | 1997
| |
− | | 2014
| |
− | |}
| |
− |
| |
− | :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.
| |
− |
| |
− |
| |
− | * Arranjo de células: texto e números
| |
− | :* Comando ''celldisp'' e ''cellplot''
| |
− |
| |
− |
| |
− | * '''Exercícios''':
| |
− |
| |
− | :1. Repita os exercícios anteriores de estruturas usando células
| |
− |
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-8|Códigos executados em sala]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Estruturas de repetição - ''for'' e ''while'' ===
| |
− | {{collapse top| bg=lightblue | 09/Out}}
| |
− |
| |
− | * Estruturas de repetição:
| |
− | :* Laços ''for''
| |
− | :* Laços ''while''
| |
− | :* Sentenças ''break'' e ''continue''
| |
− |
| |
− |
| |
− | * '''Exercícios:'''
| |
− |
| |
− | :1. Acrescente à calculadora 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:
| |
− |
| |
− | :::{| class="wikitable"
| |
− | ! style="font-weight: bold;" | Símbolo
| |
− | ! style="font-weight: bold;" | A
| |
− | ! style="font-weight: bold;" | B
| |
− | ! style="font-weight: bold;" | C
| |
− | ! style="font-weight: bold;" | D
| |
− | ! style="font-weight: bold;" | E
| |
− | ! style="font-weight: bold;" | F
| |
− | |-
| |
− | | style="font-weight: bold;" | Código 1
| |
− | | 000
| |
− | | 001
| |
− | | 010
| |
− | | 011
| |
− | | 100
| |
− | | 101
| |
− | |-
| |
− | | style="font-weight: bold;" | 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 [https://www.youtube.com/watch?v=8nOQ8mcOTLY 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
| |
− | :::::<math>f(x) =
| |
− | \begin{cases}
| |
− | -1, & -\pi \leq x \leq 0 \\
| |
− | 1, & 0 \leq x \leq \pi
| |
− | \end{cases}</math>
| |
− | ::é
| |
− | :::::<math>g(x) = \frac{4}{\pi} \left( \frac{\sin(x)}{1} + \frac{\sin(3x)}{3} + \frac{\sin(5x)}{5} + \frac{\sin(7x)}{7} + \cdots \right)</math>.
| |
− | ::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.
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-9|Códigos executados em sala]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Funções; Importação de dados; Solução de sistemas de equações ===
| |
− | {{collapse top| bg=lightblue | 11/Out}}
| |
− |
| |
− | * Funções definidas pelo usuário
| |
− | :* Único retorno
| |
− | :* Múltiplos retornos
| |
− | :* Comando ''return''
| |
− |
| |
− |
| |
− | *'''Exercícios:'''
| |
− |
| |
− | :1. Adapte os Exercícios 2 e 3 da Aula 9 de modo a utilizar funções.
| |
− |
| |
− | :2. Escreva uma função que retorna a média aritmética e a média geométrica de dois dados números.
| |
− |
| |
− | :3. 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%.
| |
− |
| |
− | :4. Fazer o ''plot'' de um sinal de tensão versus tempo, como da figura, usando os conceitos da aula de hoje.
| |
− | :::::<math>f(t) =
| |
− | \begin{cases}
| |
− | \sin(2 \pi t / 63), & \text{de } t = 1s \text{ ate } t = 63s \\
| |
− | 0, & \text{de } t = 64s \text{ ate } t = 80s \\
| |
− | 1, & \text{de } t = 81s \text{ ate } t = 100s \\
| |
− | -1, & \text{de } t = 101s \text{ ate } t = 120s
| |
− | \end{cases}</math>
| |
− | :: Não esquecer de nomear os eixos.
| |
− | [[Image:Exercícios Aula 3 FIC Matlab.jpg|400px|center]]
| |
− |
| |
− | :5. Escreva uma função que implementa a [https://pt.wikipedia.org/wiki/Cifra_de_C%C3%A9sar 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).
| |
− |
| |
− | :6. Escreva uma função que retorna todos os números primos menores ou iguais a um dado inteiro ''n''. Utilize o algoritmo do [https://pt.wikipedia.org/wiki/Crivo_de_Erat%C3%B3stenes Crivo de Erastótenes].
| |
− |
| |
− |
| |
− | * Importação de dados
| |
− | :* Comando ''uiimport''
| |
− | :* Formato do separador decimal (''.'' ou '','')
| |
− |
| |
− | : Exemplo: usar [https://wiki.sj.ifsc.edu.br/images/8/84/Celular4g.txt Celular4g.txt], importar e trabalhar com as funções de matrizes.
| |
− |
| |
− |
| |
− | *'''Exercícios''':
| |
− |
| |
− | :1. Com o arquivo [https://wiki.sj.ifsc.edu.br/images/f/fe/Add_user.txt Add_user.txt] (Adições Líquidas de Aparelhos 4G das Operadoras no período), calcular a soma dos anos 2014, 2015 e 2016 (até o momento) por operadora e a soma e a média por período.
| |
− |
| |
− |
| |
− | * Sistemas de equações lineares
| |
− | :* Encontrando a solução de ''Ax = b'' com ''A\b''
| |
− |
| |
− | <!-- Talvez falar sobre a função rref - forma escalonada reduzida de linha -->
| |
− |
| |
− | [[Image:MATLAB_Chem_Balance.jpg|300px|center]]
| |
− |
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-10|Códigos executados em sala]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Processamento de imagens ===
| |
− | {{collapse top| bg=lightblue | 16/Out}}
| |
− |
| |
− | '''Pro futuro:''' Usar ''im2double''!
| |
− |
| |
− |
| |
− | [[Curso Matlab aplicado ao processamento de imagens - Aula 3]]
| |
− |
| |
− |
| |
− | [[FIC_MATLAB_2018-2/Aula-11|Códigos executados em sala]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Gráficos em 2D e 3D ===
| |
− | {{collapse top| bg=lightblue | 18/Out}}
| |
− |
| |
− | * '''Gráficos em 2D'''
| |
− |
| |
− | :* Revisão: Comandos ''plot'', ''stem'', ''bars'' e ''stairs''
| |
− |
| |
− | :* Comandos ''semilogx'', ''semilogy'' e ''loglog''
| |
− |
| |
− | ::* Exemplo: Resposta em frequência de um [https://en.wikipedia.org/wiki/Low-pass_filter filtro passa-baixa] de segunda ordem:
| |
− |
| |
− | :::<math>H(\omega) = \dfrac{1}{\sqrt{1 + \omega^2}}</math>
| |
− |
| |
− | :* Comando ''polar''
| |
− |
| |
− | ::* Exemplo: [https://pt.wikipedia.org/wiki/Rosa_polar Rosas polares]:
| |
− | ::: <math>\rho = \mathrm{cos}(k \theta)</math>, onde ''k'' é um parâmetro.
| |
− |
| |
− | ::* Números complexos e funções ''abs'' e ''angle''
| |
− |
| |
− | :* Comando ''plotyy'' para plotar gráficos com dois eixos em '''y'''.
| |
− |
| |
− | :* Letras gregas nos gráficos:
| |
− | :::{| class="wikitable"
| |
− | ! '''Letra'''
| |
− | ! '''Representação'''
| |
− | |-
| |
− | | <math> \alpha </math> || \alpha
| |
− | |-
| |
− | | <math> \beta </math> || \beta
| |
− | |-
| |
− | | <math> \gamma </math> || \gamma
| |
− | |-
| |
− | | <math> \delta </math> || \delta
| |
− | |-
| |
− | | <math> \epsilon </math> || \epsilon
| |
− | |-
| |
− | | <math> \kappa </math> || \kappa
| |
− | |-
| |
− | | <math> \lambda </math> || \lambda
| |
− | |-
| |
− | | <math> \mu </math> || \mu
| |
− | |-
| |
− | | <math> \nu </math> || \nu
| |
− | |-
| |
− | | <math> \omega </math> || \omega
| |
− | |-
| |
− | | <math> \phi </math> || \phi
| |
− | |-
| |
− | | <math> \pi </math> || \pi
| |
− | |-
| |
− | | <math> \chi </math> || \chi
| |
− | |-
| |
− | | <math> \psi </math> || \psi
| |
− | |-
| |
− | | <math> \rho </math> || \rho
| |
− | |-
| |
− | | <math> \sigma </math> || \sigma
| |
− | |-
| |
− | | <math> \tau </math> || \tau
| |
− | |-
| |
− | | <math> \upsilon </math> || \upsilon
| |
− | |-
| |
− | | <math> \Sigma </math> || \Sigma
| |
− | |-
| |
− | | <math> \Pi </math> || \Pi
| |
− | |-
| |
− | | <math> \Lambda </math> || \Lambda
| |
− | |-
| |
− | | <math> \Omega </math> || \Omega
| |
− | |-
| |
− | | <math> \Gamma </math> || \Gamma
| |
− | |-
| |
− | |}
| |
− |
| |
− | <!--
| |
− | Exercício (livro - adaptado - 10 p.253): Muitas aplicações utilizam a seguinte aproximação de "ângulo pequeno" para o seno com a finalidade de se obter um modelo mais simples que seja fácil de ser entendido e analisado. A aproximação estabelece que ''sen(x)'' <math>\simeq x</math>, em que ''x'' deve ser em radianos. Investigue a precisão desta aproximação com dois plots. No primeiro, plote ''sen(x) versus x'' para <math>0 \leq x \leq 1</math>. No segundo, plote o erro da aproximação ''(sen(x) - x) versus x'' para <math>0 \leq x \leq 1</math>.
| |
− | -->
| |
− |
| |
− | * '''Exercícios''':
| |
− |
| |
− | :1. Plote '''em vermelho''' a função polar
| |
− | :::<math>\rho = \dfrac{\mathrm{sen}(\theta) \sqrt{|\cos(\theta)|}} {\mathrm{sen}(\theta) + 7/5} - 2 \mathrm{sen}(\theta) + 2</math>, de <math>-\pi \leq \theta \leq \pi</math>.
| |
− |
| |
− | :2. Plote o gráfico da função <math>\sqrt{x}</math> utilizando todos os quatro tipos de combinações de eixos (linear/logarítmico).
| |
− |
| |
− | :3. As seguintes funções descrevem as oscilações em circuitos elétricos e as vibrações de máquinas e estruturas. Sobreponha as plotagens dessas funções no mesmo eixo. Como elas são similares, defina qual é a melhor forma de plotá-las e de rotulá-las para evitar confusão.
| |
− | ::: <math>x(t) = 1000 e^{-0,5t} \mathrm{sen}(3t+2)</math>
| |
− | ::: <math>y(t) = 7 e^{-0,4t} \cos(5t-3)</math>
| |
− |
| |
− |
| |
− | * '''Gráficos em 3D'''
| |
− |
| |
− | :* Gráficos de linha em 3D
| |
− | ::* Comando ''plot3''
| |
− |
| |
− | :::* Exemplo: Equações paramétricas para uma [https://pt.wikipedia.org/wiki/H%C3%A9lice_(geometria) hélice circular]:
| |
− | ::::: <math>x = a \cos(t)</math>
| |
− | ::::: <math>y = a \sin(t)</math>
| |
− | ::::: <math>z = b t </math>
| |
− |
| |
− | ::* Comando ''view''
| |
− | ::* Rótulo no eixo z: ''zlabel''
| |
− |
| |
− | :* Gráficos de superfície
| |
− | ::* Comando ''meshgrid'' para criar uma malha 3D
| |
− | ::* Comando ''surf'' para plot de função de ''f(x,y)''
| |
− | :::* Comando ''shading'', com parâmetros ''flat'', ''faceted'' e ''interp''
| |
− | :::* Comando alternativo ''mesh''
| |
− |
| |
− | :::* Exemplo: Símbolo da Itapema FM incompleto:
| |
− | ::::: [X,Y] = meshgrid(-20:0.5:20);
| |
− | ::::: R = sqrt(X.^2 + Y.^2) + eps;
| |
− | ::::: Z = sin(R)./R;
| |
− | ::::: surf(X,Y,Z)
| |
− |
| |
− | :* Curva de níveis:
| |
− |
| |
− | ::* Comandos ''contour'', ''surfc'' e ''meshc''
| |
− |
| |
− |
| |
− | [[Arquivo:FIC_Matlab_Exercicios_plot.pdf|Exercícios]]
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-12|Códigos executados em sala]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Toolbox simbólico ===
| |
− | {{collapse top| bg=lightblue | 23/Out}}
| |
− |
| |
− | '''Básico'''
| |
− |
| |
− | * Comandos ''syms'' e ''sym''
| |
− | * Comandos ''pretty'' e ''latex''
| |
− | * Comando ''subs''
| |
− | :* Valores via argumento da função
| |
− | :* Valores retirados do workspace
| |
− | * Comandos ''factor'', ''expand'', ''collect'' e ''simplify''
| |
− |
| |
− | '''Cálculo'''
| |
− |
| |
− | * Comando ''limit'': Limites
| |
− | :* <math>\lim_{x \to 0} \frac{\sin(x)}{x}</math>
| |
− | :* <math>\lim_{x \to \infty} \left( 1 + \frac{1}{x} \right)^x</math>
| |
− | * Comando ''diff'': Derivada primeira, segunda, terceira, etc.
| |
− | : Comando ''int'': Integrais indefinidas e definidas
| |
− | :* <math>\int x^a dx</math>
| |
− |
| |
− | * Interlúdio: comandos ''assume'' e ''assumptions''
| |
− |
| |
− | * Comando ''taylor'': Séries de Taylor
| |
− | * Comando ''symsum'': Somatórios / séries
| |
− |
| |
− | * Outros: ''dsolve'', ''fourier'', ''laplace'', ''partfrac''
| |
− |
| |
− | '''Solução de equações'''
| |
− |
| |
− | * Comando ''solve''
| |
− |
| |
− |
| |
− | [[FIC_MATLAB_2018-2/Aula-13|Códigos executados em sala]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Interface gráfica ===
| |
− |
| |
− | {{collapse top| bg=lightblue | 25/Out}}
| |
− |
| |
− | [[Curso Matlab aplicado ao processamento de imagens - Aula 2|Aula]]
| |
− |
| |
− | {{collapse top| bg=lightblue | Proposta de Interface gráfica}}
| |
− | <code>
| |
− | function varargout = Interface(varargin)
| |
− | % INTERFACE MATLAB code for Interface.fig
| |
− | % INTERFACE, by itself, creates a new INTERFACE or raises the existing
| |
− | % singleton*.
| |
− | %
| |
− | % H = INTERFACE returns the handle to a new INTERFACE or the handle to
| |
− | % the existing singleton*.
| |
− | %
| |
− | % INTERFACE('CALLBACK',hObject,eventData,handles,...) calls the local
| |
− | % function named CALLBACK in INTERFACE.M with the given input arguments.
| |
− | %
| |
− | % INTERFACE('Property','Value',...) creates a new INTERFACE or raises the
| |
− | % existing singleton*. Starting from the left, property value pairs are
| |
− | % applied to the GUI before Interface_OpeningFcn gets called. An
| |
− | % unrecognized property name or invalid value makes property application
| |
− | % stop. All inputs are passed to Interface_OpeningFcn via varargin.
| |
− | %
| |
− | % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
| |
− | % instance to run (singleton)".
| |
− | %
| |
− | % See also: GUIDE, GUIDATA, GUIHANDLES
| |
− |
| |
− | % Edit the above text to modify the response to help Interface
| |
− |
| |
− | % Last Modified by GUIDE v2.5 19-Apr-2017 19:45:52
| |
− |
| |
− | % Begin initialization code - DO NOT EDIT
| |
− | gui_Singleton = 1;
| |
− | gui_State = struct('gui_Name', mfilename, ...
| |
− | 'gui_Singleton', gui_Singleton, ...
| |
− | 'gui_OpeningFcn', @Interface_OpeningFcn, ...
| |
− | 'gui_OutputFcn', @Interface_OutputFcn, ...
| |
− | 'gui_LayoutFcn', [] , ...
| |
− | 'gui_Callback', []);
| |
− | if nargin && ischar(varargin{1})
| |
− | gui_State.gui_Callback = str2func(varargin{1});
| |
− | end
| |
− |
| |
− | if nargout
| |
− | [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
| |
− | else
| |
− | gui_mainfcn(gui_State, varargin{:});
| |
− | end
| |
− | % End initialization code - DO NOT EDIT
| |
− |
| |
− | % --- Executes just before Interface is made visible.
| |
− | function Interface_OpeningFcn(hObject, eventdata, handles, varargin)
| |
− | % This function has no output args, see OutputFcn.
| |
− | % hObject handle to figure
| |
− | % eventdata reserved - to be defined in a future version of MATLAB
| |
− | % handles structure with handles and user data (see GUIDATA)
| |
− | % varargin command line arguments to Interface (see VARARGIN)
| |
− |
| |
− | handles.contador = 0;
| |
− | display(handles.contador)
| |
− | assignin('base','handles',handles)
| |
− |
| |
− | % Choose default command line output for Interface
| |
− | handles.output = hObject;
| |
− |
| |
− | % Update handles structure
| |
− | guidata(hObject, handles);
| |
− |
| |
− | % UIWAIT makes Interface wait for user response (see UIRESUME)
| |
− | % uiwait(handles.figure1);
| |
− |
| |
− |
| |
− | % --- Outputs from this function are returned to the command line.
| |
− | function varargout = Interface_OutputFcn(hObject, eventdata, handles)
| |
− | % varargout cell array for returning output args (see VARARGOUT);
| |
− | % hObject handle to figure
| |
− | % eventdata reserved - to be defined in a future version of MATLAB
| |
− | % handles structure with handles and user data (see GUIDATA)
| |
− |
| |
− | % Get default command line output from handles structure
| |
− | varargout{1} = handles.output;
| |
− |
| |
− |
| |
− | % --- Executes on button press in btnDesenhar.
| |
− | function btnDesenhar_Callback(hObject, eventdata, handles)
| |
− | % hObject handle to btnDesenhar (see GCBO)
| |
− | % eventdata reserved - to be defined in a future version of MATLAB
| |
− | % handles structure with handles and user data (see GUIDATA)
| |
− |
| |
− | %Incrementa o contador
| |
− | handles.contador = handles.contador + 1;
| |
− | display(handles.contador)
| |
− | %handles
| |
− |
| |
− | %Axis 1
| |
− | hold(handles.axes1,'off')
| |
− |
| |
− | amostras = [0:1:1000];
| |
− | if not(isempty(str2num(get(handles.edtFrequencias,'String'))))
| |
− | Freq = str2num(get(handles.edtFrequencias,'String'))
| |
− | onda = 2*pi*Freq*0.001*amostras;
| |
− | plot(handles.axes1,sin(onda))
| |
− | grid(handles.axes1,'on')
| |
− |
| |
− | assignin('base','contador',handles.contador);
| |
− | assignin('base','hObject',hObject)
| |
− |
| |
− | % Update handles structure
| |
− | guidata(hObject, handles);
| |
− |
| |
− | if (get(handles.rbtCosseno,'Value') == 1)
| |
− | %Axis 2
| |
− | plot(handles.axes2,cos(onda))
| |
− | grid(handles.axes2,'on')
| |
− | elseif (get(handles.rbtTangente,'Value') == 1)
| |
− | %Axis 2
| |
− | plot(handles.axes2,tan(onda))
| |
− | grid(handles.axes2,'on')
| |
− | ylim(handles.axes2,[-2,2])
| |
− | else
| |
− | errordlg('Selecione uma onda de saída!')
| |
− | end
| |
− | end
| |
− | % --- Executes on button press in rbtCosseno.
| |
− | function rbtCosseno_Callback(hObject, eventdata, handles)
| |
− | % hObject handle to rbtCosseno (see GCBO)
| |
− | % eventdata reserved - to be defined in a future version of MATLAB
| |
− | % handles structure with handles and user data (see GUIDATA)
| |
− |
| |
− | % Hint: get(hObject,'Value') returns toggle state of rbtCosseno
| |
− | set(hObject,'Value',1)
| |
− | set(handles.rbtTangente,'Value',0)
| |
− |
| |
− |
| |
− | % --- Executes on button press in rbtTangente.
| |
− | function rbtTangente_Callback(hObject, eventdata, handles)
| |
− | % hObject handle to rbtTangente (see GCBO)
| |
− | % eventdata reserved - to be defined in a future version of MATLAB
| |
− | % handles structure with handles and user data (see GUIDATA)
| |
− |
| |
− | % Hint: get(hObject,'Value') returns toggle state of rbtTangente
| |
− | set(hObject,'Value',1)
| |
− | set(handles.rbtCosseno,'Value',0)
| |
− |
| |
− |
| |
− |
| |
− | function edtFrequencias_Callback(hObject, eventdata, handles)
| |
− | % hObject handle to edtFrequencias (see GCBO)
| |
− | % eventdata reserved - to be defined in a future version of MATLAB
| |
− | % handles structure with handles and user data (see GUIDATA)
| |
− |
| |
− | % Hints: get(hObject,'String') returns contents of edtFrequencias as text
| |
− | % str2double(get(hObject,'String')) returns contents of edtFrequencias as a double
| |
− |
| |
− |
| |
− |
| |
− | % --- Executes during object creation, after setting all properties.
| |
− | function edtFrequencias_CreateFcn(hObject, eventdata, handles)
| |
− | % hObject handle to edtFrequencias (see GCBO)
| |
− | % eventdata reserved - to be defined in a future version of MATLAB
| |
− | % handles empty - handles not created until after all CreateFcns called
| |
− |
| |
− | % Hint: edit controls usually have a white background on Windows.
| |
− | % See ISPC and COMPUTER.
| |
− | if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
| |
− | set(hObject,'BackgroundColor','white');
| |
− | end
| |
− | </syntaxhighlight>
| |
− | {{collapse bottom}}
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Projeto ===
| |
− | {{collapse top| bg=lightblue | 30/Out}}
| |
− |
| |
− | Aula dedicada ao projeto.
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-15|Códigos executados em sala]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Projeto ===
| |
− | {{collapse top| bg=lightblue | 01/Nov}}
| |
− |
| |
− | Aula dedicada ao projeto.
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-16|Códigos executados em sala]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− | === Projeto ===
| |
− | {{collapse top| bg=lightblue | 06/Nov}}
| |
− |
| |
− | Aula dedicada ao projeto.
| |
− |
| |
− | * [[FIC_MATLAB_2018-2/Aula-17|Códigos executados em sala]]
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− |
| |
− | {{collapse top| bg=lightgreen | Próximos episódios}}
| |
− | <!--
| |
− |
| |
− | Exercício (livro - 30 p. 259): Obtenha as plotagens de superfície e de contorno para a função <math>z = x</math><sup>2</sup><math>- 2xy + 4y</math><sup>2</sup>, mostrando o mínimo em <math>x = y = 0 </math>.
| |
− |
| |
− | - Comando ''polyfit'', que ajusta o polinômio de grau ''n'' aos dados descritos por ''x'' e ''y'';
| |
− | - Comando ''polyval'', calcula a solução do polinômio a partir da escolha de um ponto;
| |
− |
| |
− | Exercício (livro - adaptado - Exemplo 6.2-1 p. 277): Os dados da tabela a seguir correspondem ao número de veículos (em milhões) que cruzam uma ponte a cada ano durante 10 anos. Ajuste um polinômio aos dados até a ordem 4, calcule o coeficiente de ajuste. Plote a "melhor" curva.
| |
− |
| |
− | {| class="wikitable"
| |
− | |-
| |
− | ! Ano
| |
− | | 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10
| |
− | |-
| |
− | ! Fluxo de veículos (milhões)
| |
− | | 2,1 || 3,4 || 4,5 || 5,3 || 6,2 || 6,6 || 6,8 || 7 || 7,4 || 7,8
| |
− | |}
| |
− |
| |
− | - Comando ''flip'', representa o vetor de trás pra frente;
| |
− |
| |
− | Exercício (livro - adaptado - exemplo 6.2-2 p. 278): A tabela a seguir fornece dados de crescimento de uma determinada população de bactérias com o tempo. Ajuste uma equação para esses dados, calcule o coeficiente de ajuste e estime o fluxo no tempo 18 min. Plote a curva escolhida.
| |
− |
| |
− | {| class="wikitable"
| |
− | |-
| |
− | ! Tempo (min)
| |
− | | 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15
| |
− | |-
| |
− | ! Bactérias (ppm)
| |
− | | 6 || 13 || 23 || 33 || 54 || 83 || 118 || 156 || 210 || 282 || 350 || 440 || 557 || 685 || 815 || 990
| |
− | |}
| |
− |
| |
− | - Plotar dados da tabela, menu ''Tools'' e depois ''Basic Fitting'', para escolher a melhor função que interpola os dados.
| |
− | - Comando ''rank'' saber a singularidade da matriz;
| |
− | - Função pseudoinversa (''pinv'') para resolver um sistema cuja solução garante a menor norma.
| |
− |
| |
− | Exercício (livro - 11 p. 363): Resolva as seguintes equações:
| |
− | :<math>\begin{alignat}{7}
| |
− | 7x &\; + &\; 9y &\; - &\; 9z &\; = &\; 22 \\
| |
− | 3x &\; + &\; 2y &\; - &\; 4z &\; = &\; 12 \\
| |
− | x &\; + &\; 5y &\; - &\; z &\; = &\; -2 \\
| |
− | \end{alignat}</math>
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− |
| |
− | === Aula 16 ===
| |
− | {{collapse top| bg=lightblue | 04/Out}}
| |
− |
| |
− | - Definição de Matriz Aumentada;
| |
− | - Comando ''rref'' para escalonar matriz;
| |
− |
| |
− | Exercício (livro - adaptado - T8.3-1 p. 343): Encontre duas soluções e o escalonamento para o seguinte conjunto:
| |
− | :<math>\begin{alignat}{7}
| |
− | x &\; + &\; 3y &\; + &\; 2z &\; = &\; 2 \\
| |
− | x &\; + &\; y &\; + &\; z &\; = &\; 4 \\
| |
− | \end{alignat}</math>
| |
− |
| |
− | Exercício (livro - adaptado - 12 p. 363): A tabela a seguir mostra quantas horas de processo são necessárias para que os reatores A e B produzam uma tonelada de cada um dos produtos químicos 1, 2 e 3. Os dois reatores são disponíveis por 35 e 40 horas por semana, respectivamente.
| |
− |
| |
− | {| border="4" cellpadding="2"
| |
− | ! '''Horas'''
| |
− | ! '''Produto 1'''
| |
− | ! '''Produto 2'''
| |
− | ! '''Produto 3'''
| |
− | |-
| |
− | | Reator A || 6 || 2 || 10
| |
− | |-
| |
− | | Reator B || 3 || 5 || 2
| |
− | |-
| |
− | |}
| |
− |
| |
− | Sejam ''x'', ''y'' e ''z'' o número de toneladas de cada um dos produtos 1, 2 e 3 que podem ser produzidos em uma semana.
| |
− | a) Utilize os dados na tabela para escrever duas equações em termos de ''x'', ''y'' e ''z''. Determine se existe um única solução. Encontre as relações entre ''x'', ''y'' e ''z''.
| |
− | b) Note que os valores negativos de ''x'', ''y'' e ''z'' não têm significado nesse caso. Encontre as faixas de valores possíveis para ''x'', ''y'' e ''z''.
| |
− | c) Suponha que os lucros sejam de $200, $300 e $100 para cada produto 1, 2 e 3, respectivamente. Encontre os valores de ''x'', ''y'' e ''z'' que maximizam os lucros.
| |
− | d) Suponha que os lucros sejam de $200, $500 e $100 para cada produto 1, 2 e 3, respectivamente. Encontre os valores de ''x'', ''y'' e ''z'' que maximizam os lucros.
| |
− | {{collapse bottom}}
| |
− |
| |
− |
| |
− | === Aula 17 ===
| |
− | {{collapse top| bg=lightblue | 06/Out}}
| |
− |
| |
− | Exercício (livro - adaptado - 13 p.364): Veja a figura abaixo. Suponha que os veículos não param dentro da rede. Um engenheiro de tráfego deseja saber se os fluxos de tráfego <math>f_1, f_2, ..., f_7</math> (em veículos por hora) podem ser calculados a partir dos fluxos medidos mostrados na figura. Se não, então determine quantos sensores de tráfego a mais precisam ser instalados e obtenha as expressões para os outros fluxos de tráfego em termos das quantidades medidas.
| |
− |
| |
− | [[Image:Exercícios 1 Aula 17 FIC Matlab.jpeg | 600px]]
| |
− |
| |
− | - Caracteres especiais:
| |
− | {| border="4" cellpadding="2"
| |
− | ! '''Símbolo'''
| |
− | ! '''Descrição'''
| |
− | |-
| |
− | | \b || ''Backspace''
| |
− | |-
| |
− | | \n || Mudança de linha
| |
− | |-
| |
− | | \r || ''Return''
| |
− | |-
| |
− | | \t || Tabulação horizontal
| |
− | |-
| |
− | | \\ || Escreve o caracter \
| |
− | |-
| |
− | | \ || Escreve o caracter '
| |
− | |-
| |
− | | %% || Escreve o caracter %
| |
− | |-
| |
− | |}
| |
− |
| |
− | - Descritores de formato:
| |
− | {| border="4" cellpadding="2"
| |
− | ! '''Símbolo'''
| |
− | ! '''Descrição'''
| |
− | |-
| |
− | | ''%c'' || Um único caracter
| |
− | |-
| |
− | | ''%d'' || Número inteiro
| |
− | |-
| |
− | | ''%e'' ou ''%E'' || Número real escrito em notação científica
| |
− | |-
| |
− | | ''%f'' || Número real com parte decimal
| |
− | |-
| |
− | | ''%g'' || Notação mais compacta de ''%e'' e ''%f''
| |
− | |-
| |
− | | ''%o'' || Número octal sem sinal
| |
− | |-
| |
− | | ''%s'' || ''String'' de caracteres
| |
− | |-
| |
− | | ''%u'' || Número inteiro sem sinal
| |
− | |-
| |
− | | ''%x'' ou ''%X'' || Hexadecimal (com letras minúsculas ou maiúsculas)
| |
− | |-
| |
− | |}
| |
− |
| |
− | Exercício: Fazer uma tabela com 3 colunas no Matlab que salve em um arquivo de texto externo, com o ângulo, seno e cosseno. Sendo o ângulo de <math>0 </math> a <math>2\pi</math>.
| |
− |
| |
− | - Comando ''msgbox'' para criar caixa de mensagem e opções extras como título, ícone pré-definido ou criado;
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− |
| |
− | === Aula 18 ===
| |
− | {{collapse top| bg=lightblue | 11/Out}}
| |
− |
| |
− | - Caixa de diálogo de mensagem de aviso (''warndlg'');
| |
− | - Caixa de diálogo de mensagem de erro (''errordlg'');
| |
− | - Caixa de diálogo de mensagem de interrogação com múltipla escolha (''questdlg'');
| |
− |
| |
− | Exercício: Criar uma caixa de interrogação com múltipla escolha com as opções: Candidato A, Candidato B e Branco. Após apresente a escolha.
| |
− |
| |
− | - Caixa de diálogo de mensagem de ajuda (''helpdlg'');
| |
− | - Caixa de diálogo de introdução de dados (''inputdlg'');
| |
− |
| |
− | Exercício: Criar um código Matlab para abrir uma janela com a mensagem "O que você deseja comprar?" com múltiplas escolhas: Arroz, Feijão e Macarrão, quando escolher deve aparecer uma janela com opção para completar com a quantidade. De acordo com a quantidade calcular o preço total considerando o preço unitário do Arroz $6, do Feijão $10 e do Macarrão $5,50. Após a escolha deve aparecer uma terceira janela com opção de "sim" ou "não" para repetir o procedimento. Caso aceite repetir o código deve-se atualizar o cálculo com a nova escolha do produto e da quantidade.
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− |
| |
− | === Aula 19 ===
| |
− | {{collapse top| bg=lightblue | 13/Out}}
| |
− |
| |
− | - Caixa de diálogo com lista de seleção de múltipla escolha (''listdlg'');
| |
− |
| |
− | Exercício: Criar um código com uma pergunta sobre preferência de filmes de acordo com o gênero, com múltiplas escolhas. Apresentar as opções escolhidas.
| |
− |
| |
− | - Caixa de diálogo com lista de seleção de escolha única também usando ''listdlg'';
| |
− | - Exemplo 1 do uso de ''Graphical User Interface'' (GUI);
| |
− |
| |
− | {{collapse bottom}}
| |
− |
| |
− |
| |
− | === Aula 20 ===
| |
− | {{collapse top| bg=lightblue | 18/Out}}
| |
− |
| |
− | - Término do Exemplo 1 do uso de ''Graphical User Interface'' (GUI);
| |
− | - Exemplo 2 do uso de ''Graphical User Interface'' (GUI);
| |
− |
| |
− | {{collapse bottom}}
| |
− | -->
| |
| | | |
| {{collapse bottom}} | | {{collapse bottom}} |