Escolar Documentos
Profissional Documentos
Cultura Documentos
GUIA DA
DISCIPLINA
Universidade Santa Cecília - Educação a Distância
Objetivo
Introduzir a usabilidade de uma ferramenta computacional voltada para a área de
engenharia. Promover a dedução natural, bem como, a formalização de problemas. Criar
habilidade na resolução algorítmica de problemas, através de noções computacionais
simbólicas e numéricas.
Introdução
Você sabe dizer o que é Ciência da Computação?
A ciência da computação está diretamente ligada a resolução de problemas, essa
por sua vez consiste no processo de selecionar e tratar informações específicas de uma
determinada situação problema e gerar alguns resultados que representem a sua solução.
De uma maneira mais formal podemos dizer que é a ciência que estuda as técnicas,
as metodologias, os instrumentos computacionais e suas aplicações tecnológicas, com os
quais informatizam os processos buscando soluções de problemas. Por meio do estudo de
algoritmos, suas aplicações e implementação na forma de software, utilizando o
processamento de dados através da entrada e saída pautados no computador.
Para que tudo isso seja possível é necessário utilizarmos softwares, programas
elaborados para executar determinadas tarefas, os quais são escritos em uma linguagem
para programação dos computadores.
Objetivo
Conhecer o ambiente da ferramenta MATLAB.
Explorar as funcionalidades da ferramenta.
Aprender como números são atribuídos a variáveis.
Compreender o que são funções nativas e aprender mais sobre elas com os recursos
de Help (Ajuda) do MATLAB.
Aprender como usar comandos básicos do MATLAB.
Introdução
O MATLAB é fácil de aprender e, ao mesmo tempo, é uma linguagem de
programação extremamente versátil e útil em ambiente de programação.
Use o MATLAB on-line através do seu navegador da web padrão de qualquer lugar
com acesso à Internet.
Uma versão básica do MATLAB Online fornece 20 horas por mês de uso gratuito,
acesso a 10 caixas de ferramentas comumente usadas e disponibiliza 5 GB de espaço de
memória no MATLAB Drive (https://drive.matlab.com) onde é possível acessar, baixar e
compartilhar seus arquivos.
https://la.mathworks.com/
Clique em “Soluções”:
https://la.mathworks.com/solutions.html?s_tid=gn_sol#industries
Observe que na aba HOME, Figura 2, aparecem botões de atalhos: New Script; New
Live Script, New, etc. Esses botões de atalhos serão utilizados e explicados no decorrer do
curso. A guia Home é mais útil para fins de programação.
Quando quiser sair do MATLAB basta digitar quit logo após os dois sinais de >> e
pressionar enter, ele fechará todas as janelas abertas e sairá. Se você tiver arquivos
abertos, será perguntado sobre como salvá-los e terá a chance de salvá-los. Outra forma
de sair do MATLAB é clicando com o mouse no botão com X no canto superior direito da
janela do MATLAB no Windows.
Quando você tem sua conta, login e senha, no site da mathworks você recebe
espaço, instantaneamente, de memória com 5GB no MATLAB Drive e o acesso a ele é por
meio desta pasta. O nome da pasta pode ser encontrado na barra branca, abaixo das abas,
Figura 4, e acima das três janelas. É chamada de barra de ferramentas da pasta atual.
Vamos colocar pastas dentro da pasta atual, que é o MATLAB Drive. Inicialmente
vamos criar uma nova pasta chamada Teste.
Clicando no grande sinal de adição (+), amarelo, na aba HOME e vai aparecer uma
janela com várias opções. Role a barra desta janela até o final e vai encontrar a opção
Folder. Clique nessa opção e a seguir vai abrir a janela Current Folder onde deve digitar o
nome do seu arquivo, Teste, no lugar do New Folder, verifique na Figura 5.
Clicando duas vezes na nova pasta Teste, ela vai aparecer na barra de ferramentas
como sendo a nova pasta atual.
Caso você ache que o MATLAB está demorando muito para executar um comando,
você pode parar a execução do comando, pressionando as teclas Ctrl e C simultaneamente
para abortar o comando.
Observe que usamos uma letra maiúscula para a variável Bola. As variáveis podem
ter mais de uma letra e, como veremos em outros exemplos, podem até incluir dígitos, mas
as letras e os dígitos não podem ter espaços entre si. Importante lembrar que o MATLAB
faz distinção entre letras maiúsculas e minúsculas. Por exemplo, a variável Bola é para o
MATLAB diferente de bola, BOLA, BoLa, boLA, etc.
1.1.9. Digitando %
Caso você deseje escrever um comentário na janela de comandos, Figura 11, basta
digitar o símbolo de porcentagem logo após o prompt de comando (>>) e a seguir o texto
desejado.
Figura 11 - Comentário %
Observação: não é possível utilizar acentuação nas palavras que indicam variável.
Outra alternativa é utilizar uma janela de ajuda do próprio site, bastando para tal
escrever o comando >>helpwin
A divisão a esquerda se aplica à álgebra matricial, mas também pode ser utilizada
como operação inversa da divisão à direita, ver Figura 13.
variáveis e funções a qualquer momento, não é recomendado que se faça isso, porque
muitas aplicações do MATLAB fazem uso delas. Veja os exemplos na Figura 14.
x2 + 5x + 4 = 0
Figura 16 - equação do 2º grau
No exemplo da Figura 16, as variáveis a, b e c foram separados por (,) e por essa
razão os seus valores foram impressos na janela de comando. É importante lembrar que
utilizamos o valor de Delta calculado no exemplo anterior.
Observe na Figura 18 o valor de pi é exibido com quatro casas decimais, mas quando
digitamos o comando format Long o resultado é exibido com 15 algarismos significativos.
1.2.8. Exercícios
Resolva os problemas abaixo utilizando a janela de comandos do MATLAB.
1. Calcule:
23
a) (2 − √9)5 +
10
5𝜋 7𝜋
b) )𝑠𝑒𝑛2 ( )
6 8
8. Integrar as funções:
2𝑥4 −3𝑥3 +5
a) ∫ 7𝑥2
𝑑𝑥 b) ∫ (5 𝑐𝑜𝑠 𝑥 − 4 𝑠𝑖𝑛 𝑥)𝑑𝑥
Objetivo
Criar e formatar gráficos bidimensionais com o MATLAB.
Introdução
Interface Gráfica do Usuário (GUI) é a ferramenta de interação do usuário de um
programa por meio de imagens, toques na tela e cliques do mouse. Os programas devem
possuir excelentes interfaces gráficas de usuário (GUIs) para permitir que a sua usabilidade
favoreça a interação com o software de maneira natural. As GUIs mais tradicionais utilizam
entrada de mouse e teclado para permitir que você interaja com botões, menus e outros
recursos da própria GUI.
Na Figura 22 foi criado um vetor x, contendo os valores das abscissas dos pares
ordenados (x,y) que compõem a linha do gráfico.
Importante observar também que foi acrescentado à frente do acento circunflexo (^)
um ponto (.). Sempre que a variável for elevada a um expoente esse ponto deve ser
colocado para que o MATLAB ajuste o tamanho da variável de saída y. Caso contrário o
programa acusa um erro referente aos tamanhos diferentes entre os vetores x e y, Figura
24.
Vamos refazer nosso último gráfico da parábola y = x2 + 2x – 15, veja a Figura 25.
No gráfico da Figura 25 foi utilizado o estilo de linha traço ponto (-.) com a cor verde.
Em função da versão do MATLAB nem todas as opções de estilo da tabela 1 estão
disponibilizadas. Utilizando o comando help plot é possível obter mais detalhes da função.
Figura 26 - Rótulos
Figura 32 - Exemplo 02
Figura 33 - Exemplo 03
Figura 34 - Exemplo 04
Figura 35 - Exemplo 05
Figura 36 - Exemplo 06
2.5. Exercícios
1) Trace o gráfico das funções indicadas abaixo.
a)
b)
3) Utilize o comando hold para plotar na mesma figura as funções indicadas abaixo:
f(x) = ex cox(x) e f(x) = log (2 + sen x)
5) Construir dois gráficos em um mesmo quadro, com dois espaços na janela, para
a função
f(x)= 0,6x5 – 5x3 +9x +2
No primeiro gráfico use o intervalo -4 < x < 4, e no segundo gráfico, use o intervalo
de
- 2,7 < x < 2.7
6) Use a função linspace para criar vetores idênticos aos vetores criados com a
notação (:) nos itens abaixo:
a) t = 4:3:25 b) x = -4:4 c) z = 2:0.1:10
Use o comando subplot para incluir os três gráficos em uma mesma janela, com o
gráfico de posição em cima, o de velocidade no meio e o de aceleração em baixo. Rotule
os eixos adequadamente incluindo as unidades das grandezas. O tempo é dado em
segundos e a distância em metros.
Nunca use uma variável com nome igual ao de uma função ou comando
MATLAB. Se fizer isso, aquela função do comando ficará inacessível.
Objetivo
Conhecer e aprender uma forma mais eficiente de escrever e executar os comandos
no MATLAB, através de scripts. Aprenderemos como os scripts funcionam como uma
coleção de comandos que são executados como se fossem digitados na janela de
comando.
Introdução
Aprendemos que a Janela de Comando funciona como uma calculadora muito
poderosa. Você digita um comando e o MATLAB o interpreta, ou executa, e mostra o
resultado imediatamente. É uma ótima maneira de trabalhar com comandos simples, mas
é uma maneira ruim de fazer qualquer coisa que envolva mais do que, meia dúzia de
etapas. Para realizar tarefas mais complicadas, você deve escrever seus comandos em um
arquivo. Isso é feito usando uma janela de edição (script), onde é possível corrigir e refazer
seus códigos de programa.
Após abrir a janela de edição, você pode digitar nela um texto, ele vai aparecer ao
lado esquerdo do número 1, o qual indica o número das suas linhas de códigos de seu
programa. Porém nada vai acontecer na sua janela de comando, quando você pressiona
enter uma nova linha surge na janela de edição. Nada mais acontece porque o MATLAB
não executa comandos conforme você os digita no editor.
Neste caso, foi escolhida a mesma pasta que criamos no início do curso, com o nome
Teste. O nome do arquivo digitado para esse documento é “Primeira_nota”, Figura 38.
CUIDADO
Figura 38 - Primeira_nota
Ao clicar em Salvar nesta janela, você terá criado um arquivo M. O “M” significa
MATLAB, e a extensão de arquivo usada pelo editor MATLAB é sempre (.m). É por causa
dessa extensão que o arquivo é chamado de M-file.
Devemos fazer esse procedimento, arquivo script, sempre que tiver um grupo de
comandos muito grande e for preciso reeditar ou executar várias vezes. A Janela de Edição
é essencialmente um editor de texto de programação, com recursos da linguagem
MATLAB.
Para esclarecer a maior parte das dúvidas acerca da utilização de uma dada
função do Matlab o comando help é de grande utilidade. Exemplo: help sin.
3.2. Funções
As funções ou function files são arquivos-M que começam com a palavra function.
Ao contrário dos scripts, as funções podem aceitar argumentos de entrada e retornar
saídas.
3.3. Exercícios
1) Escrever um script pra desenhar a curva f(t) = t sem(t), da Figura 33 no tópico “2.4.
Exemplos de construções de gráficos e comandos”.
4) Escreva a função para calcular a soma (utilizar o comando sum) de uma série
geométrica (1; q; q2; q3; q4; . . . ; qn) para um dado q e n. A entrada da function deve ser q
e n e a saída deve ser a soma da série. (pesquise na internet soma de Progressão
Geométrica - PG).
5) Gere um vector com um milhão de amostras obtidas com a função rand. Escreva
um arquivo .m (function) para calcular a média, o desvio padrão e desenhar o histograma
da amostra.
Objetivo
Neste tópico introduziremos algumas das funções embutidas no MATLAB e suas
capacidades, com exemplos de computação interativa através de rotinas.
Introdução
O Matlab possui um conjunto de instruções que permitem a construção de
programas, também chamados de rotinas, que na verdade são uma sequência de
comandos encadeados entre si de uma maneira lógica.
4.1.1. Etapa 1
Estabeleça claramente o problema que se pretende resolver. O programador da
rotina precisa conversar com o usuário que a solicitou, é primordial que os dois estabeleçam
claramente e com exatidão os objetivos do problema a ser resolvido pelo programa. O claro
estabelecimento do problema evita mal-entendidos e ajuda o projetista do programa a
organizar adequadamente o seu raciocínio.
4.1.2. Etapa 2
Defina os dados de entrada do programa e os dados de saída produzidos por ele.
As entradas para o programa e as saídas produzidas por ele precisam ser devidamente
especificadas quanto ao seu tipo e a ordem em que serão informadas no programa.
4.1.3. Etapa 3
Projete o algoritmo que vai ser implementado no programa, o qual representa o
procedimento passo a passo para encontrar a solução de um problema. O programador
estabelece divisões lógicas no problema, e o divide em subtarefas de acordo com essas
divisões. Caso as subtarefas sozinhas sejam grandes, o programador pode outra vez
subdividi-las em subtarefas ainda menores. O processo se repete até que a subtarefa seja
simples e de fácil solução. Esse processo é chamado decomposição.
4.1.4. Etapa 4
Transforme o algoritmo em expressões da linguagem de programação MATLAB. Se
o processo de decomposição e refinamento foi executado adequadamente, este etapa do
processo será simples.
4.1.5. Etapa 5
Teste o programa MATLAB resultante.
Este passo é muito importante. Cada uma das partes do programa, sub-rotinas,
devem ser testadas primeiro individualmente, se possível, para depois testar o programa
por inteiro. Se o algoritmo implementado em um programa inclui ramificações diferentes,
precisamos testar todas as possíveis ramificações para garantir que o programa opere
corretamente sob qualquer circunstância possível. Esse teste exaustivo é também chamado
de teste de mesa, onde simulamos a entrada de dados conhecidos e verificamos se as
respostas estão corretas. Em programas realmente grandes, pode ser quase impossível
detectar todas as falhas da rotina, de modo que os bugs podem ser descobertos depois
que o programa tiver ficado em uso regular por um certo tempo.
Operador Descrição
< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
== Igual a (no sentido de condição)
~= Não igual a
Quando duas expressões são unidas por e; o resultado será 1 (verdadeiro) se ambas
expressões forem verdadeiras, para expressões unidas por ou, o resultado será 1
(verdadeiro) se uma ou ambas expressões forem verdadeiras. Assim, para a seguinte
expressão lógica: a < b & b < c
O resultado será 1 (verdadeiro) somente se a < b < c; e falso (0) para todos
resultados diferentes. Além disso, a operação só será válida se as matrizes resultantes (a
< b e b < c) tiverem o mesmo tamanho.
4.2.2. A estrutura if
Esta instrução permite a execução condicional de um código tendo em conta uma
dada condição lógica. A estrutura é a seguinte:
if condição,
instrução 1
instrução 2
...
else
instrução 3
instrução 4
...
end
if condição1
instruções1
elseif condição2
instruções 2
elseif condição3
instruções 3
.
.
.
else
instruções _ else
end
Exemplo: Para um escalar, desenvolva uma função no MATLAB que retorne o sinal
de seu argumento (-1,0,1), observe a Figura 45.
O laço for funciona da seguinte forma: o índice é uma variável definida com um valor
inicial, início; o programa, então, compara a variável índice com o valor final desejado, fim.
Se o índice for menor ou igual à variável fim, o programa executará as instruções. Quando
ele chega à linha end, que caracteriza o fim do laço, a variável índice é incrementada pelo
valor da variável passo e o programa retorna à declaração for. O processo continua até o
índice tornar-se maior que o valor de fim; neste ponto, o laço é encerrado e o programa
salta para a linha imediatamente após a instrução end.
Exemplo: Desenvolva uma função no MATLAB para calcular o fatorial, Figura 46.
Para o fatorial de 10, o laço executará 10 vezes (de 1 a 10). No fim do processo, a
variável x terá o valor de 10! = 1x2x3x4x5x6x7x8x9x10 = 3628800.
Por exemplo, suponha que a matriz x seja definida como x =[1.23 3.14 6.28; -5.1
7.00 0];
Então, o comando “save x.dat x -ascii” produzirá um arquivo denominado x.dat que
contém os dados a seguir:
1.2300000e+000 3.1400000e+000 6.2800000e+000
-5.1000000e+000 7.0000000e+000 0.0000000e+000
Esses dados estão em um formato que pode ser lido por planilhas ou programas
escritos em outras linguagens, o que facilita o compartilhamento de dados entre programas
MATLAB e outras aplicações.
A expressão load pode ser forçada a tratar um arquivo como arquivo MAT,
especificando a opção -mat. Por exemplo, a expressão:
A função trataria o arquivo x.dat como arquivo MAT, apesar de a extensão não ser
.mat. De forma similar, a expressão load pode ser forçada a tratar um arquivo como ASCII
especificando a opção -ascii. Essas opções permitem que o usuário carregue um arquivo
adequadamente mesmo se sua extensão de arquivo não corresponder às convenções
MATLAB.
Lembrem que:
Para esclarecer a maior parte das dúvidas acerca da utilização de uma dada
função do Matlab o comando help é de grande utilidade.
Um exemplo seriam as notas dos alunos de uma das provas deste curso. Cada nota
seria uma medida de quanto um estudante em particular aprendeu no curso até o momento.
Nosso proposito e realizar uma análise sobre o desempenho de uma forma geral da
turma.
Duas medidas estatísticas importantes e fundamentais são: a nota média dos alunos
e a variabilidade dessas notas obtida através do desvio padrão do conjunto de dados.
∑𝑛 (𝑥𝑖 )2 −(∑𝑛 𝑥𝑖 )2
𝑆 = √ 𝑖=1 𝑖=1
𝑛−1
Solução: Esse programa precisa ser capaz de ler uma quantidade arbitrária de
medidas e calcular a média e o desvio padrão delas. Vamos utilizar um laço while para
acumular as medidas de entrada antes de efetuar os cálculos.
Depois que todas as medidas forem lidas, será necessário informar, de alguma
maneira, ao programa que não há mais dados a serem fornecidos. Vamos assumir que
todas as medidas de entrada sejam positivas ou zero, e utilizar um valor de entrada negativo
como indicador de que não há mais dados a serem lidos. Se um valor negativo for fornecido,
o programa interromperá a leitura dos valores de entrada e calculará a média e o desvio
padrão do conjunto de dados.
Etapas:
1. Estabeleça o problema.
Como assumiremos que os números de entrada precisam ser positivos ou zero, uma
apresentação apropriada do problema seria: calcule a média e o desvio padrão de um
conjunto de medidas, assumindo que todas elas são positivas ou zero e que não sabemos
quantas estão incluídas no conjunto de dados. Um valor negativo indica o final do conjunto
de medidas.
pontos fornecidos ao programa, uma vez que essa é uma verificação útil da correção dos
dados de entrada.
3. Projete o algoritmo.
Esse programa pode ser subdividido em três passos principais:
Acumule os dados de entrada
Calcule a média e o desvio padrão
Escreva a média, o desvio padrão e o número de pontos
n ← n + 1
sum_x ← sum_x + x
% Informação insuficiente
disp ('Pelo menos 2 valores devem ser inseridos!');
else
% Há informações suficientes, então
% calcule a média e o desvio padrão
x_bar = sum_x / n;
std_dev = sqrt((sum_x2 - sum_xˆ2)/((n-1)));
% Informe o usuário.
fprintf('A média deste conjunto de dados é: %f\n', x_bar);
fprintf('O desvio padrão é: %f\n', std_dev);
fprintf('O número de pontos de dados é: %f\n', n);
end
Importante observar que a média e o desvio padrão poderiam serem calculados com
as funções integradas mean e std do MATLAB se os valores de entrada fossem
armazenados em um vetor.
5. Teste o programa.
Para testar esse programa, vamos calcular à mão as respostas para um conjunto
simples de dados, e então compará-las com os resultados do programa. Se utilizarmos três
valores de entrada: 3, 4 e 5, a média e o desvio padrão seriam:
4.5. Exercícios
1) Escreva um arquivo M para avaliar a equação y(x) = x2 - 3x + 2 para todos os
valores de x entre -1 e 3, em etapas de 0,1. Faça isso duas vezes, uma com laços for e
uma com vetores. Desenhe a função resultante utilizando uma linha vermelha espessa e
tracejada de três pontos.
2) Examine os seguintes laços for e determine o valor de ires no fim de cada laço e
também o número de vezes em que cada laço é executado.
a) ires = 0;
for index = -10:10
ires = ires + 1;
end
b) ires = 0;
for index = 10:-2:4
if index == 6
continue;
end
ires = ires + index;
end
c) ires = 0;
for index = 10:-2:4
if index == 6
break;
end
ires = ires + index;
end
d) ires = 0;
for index1 = 10:-2:4
for index2 = 2:2:index1
if index2 == 6
break
end
ires = ires + index2;
end
end
3) Examine as seguintes expressões for e determine quantas vezes cada laço será
executado.
(a) for ii = -32768:32767
(b) for ii = 32768:32767
(c) for kk = 2:4:3
Objetivo
Aprender a criar e a manipular matrizes com o MATLAB.
Aprender como atribuir valores a vetores e matrizes utilizando a atribuição simples.
Realizar operações com matrizes.
Introdução
A visualização dos dados é um fator importante na solução de problemas de
engenharia. Podemos representar conjunto de dados usando um tipo especial de estrutura
de dados
denominada matriz.
A matriz é a unidade fundamental de dados em qualquer programa MATLAB. Ela é
uma coleção de valores de dados distribuídos em um certo número de linhas e colunas e
conhecidos por um único nome. Uma matriz é uma estrutura de dados bidimensional que
permite guardar números de uma forma ordenada e indexável.
Podem ser de dois tipos: arranjos unidimensionais são chamados vetores e arranjos
bidimensionais são chamados matrizes. Os vetores, coluna e linha, são casos particulares
de matrizes e são criados utilizando a mesma notação de matriz.
Não há nenhuma garantia de que o último ponto, o valor 10, especificado estará na
matriz, porque o incremento poderia exceder esse ponto.
O MATLAB possui duas funções para gerar uma matriz de pontos em que o usuário
possui controle total dos limites exatos da matriz e da quantidade de pontos na matriz.
Essas duas funções são linspace, que gera um espaçamento linear entre as
amostras e, que produz um espaçamento logarítmico entre as amostras. Ele tem a forma:
linspace (x1, x2, n) Onde x1 é o primeiro ponto da sequência o x2 o último ponto
e n é a quantidade total de ponto.
a = zeros (2);
b = zeros (2,3);
c = [1 2; 3 4];
d = zeros (size (c));
Obs.: A função size retorna dois valores com o número de linhas e colunas de uma
matriz.
De maneira similar, a função ones pode ser utilizada para gerar matrizes que contêm
somente números um. A função eye para gerar matrizes contendo matrizes de identidade,
nas quais todos os elementos da diagonal principal são iguais a um e os outros elementos,
zero. Exemplos:
A1 = ones (3,2) [1 1 1 1 1 1 ] A2 = eye(3) [1 0 0 0 1 0 0 0 1 ]
O último exemplo mostra que as variáveis também podem ser inicializadas com
matrizes de dados. Essas matrizes são construídas usando colchetes ([ ]) e o ponto com a
vírgula. Todos os elementos de uma matriz são listados por linha.
5.2.2. Multiplicação
O cálculo para multiplicação de matizes deve obedecer às regras da álgebra linear.
O produto de duas matrizes é representado por [C] = [A][B], em que os elementos
de [C] são definidos como
De acordo com essa definição, a multiplicação de matrizes pode ser efetuada apenas
quando a primeira matriz tem tantas colunas quanto o número de linhas da segunda matriz.
Exemplo:
5.2.3. Divisão
Em álgebra linear só é possível efetuar a operação de divisão entre matrizes se uma
das matrizes tiver inversa. Quando uma matriz possui matriz inversa o produto entre elas e
igual a matriz identidade, e a comutativa também é válida.
O operador de divisão a esquerda é usado, entre outras coisas, para resolver a equação
matricial AX = B, onde X e B são vetores colunas.
Exemplo:
A = [1 2 3 4 ] X= [𝑥 𝑦 ] B= [5 11 ] se AxA-1 = A-1x A = I então A-1 é a inversa
de A
Fazendo as devidas verificações encontramos a inversa de A igual a A-1 =
[−2 1 3/2 − 1/2 ]
A partir dessa certeza podemos resolver a seguinte equação matricial
🡪 [𝑥 𝑦 ] = [1 2 ]
O MATLAB utiliza o operador divisão a esquerda (\) para chegar nessa mesma
solução, a qual é obtida pelo método de Gauss, considerado mais preciso, principalmente
quando as dimensões das matrizes são maiores, observe a Figura 50.
5.2.6. Determinantes
O Determinante é um número associado a uma matriz quadrada, ou seja, uma matriz
que apresenta o mesmo número de linhas e de colunas. O algoritmo para calcular um
determinante de ordem 2, de uma matriz com 2 linhas e duas colunas é definido pela
expressão: det(A) = a11 a22 – a21 a12, é a diferença entre o produto dos elementos da
diagonal principal e o produto dos elementos da diagonal secundária. Existem formas
diferentes de resolução, a regra de Sarrus por exemplo é uma técnica de resolução.
Exemplos: A = [1 2 3 4 ] o valor do seu determinante é 1*4 -2*3 🡪 det(A) = -2
5.3. Exercícios
Utilizando o MATLAB, resolva os exercícios a seguir.
1) Dada uma matriz quadrada A, escreva uma única linha de comando do MATLAB que
cria uma nova matriz A que consista na matriz original A aumentada por sua matriz
identidade.
a) result = a + b; b) result = a * d;
c) result = a .* d; d) result = a * c;
e) result = a .* c; f) result = a \ b;
g) result = a .\ b; h) result = a .ˆ b;
4) A distância entre dois pontos (x1, y1, z1) e (x2, y2, z2) em um sistema de coordenadas
tridimensional cartesiano é fornecida pela equação:
Escreva um programa para calcular a distância entre dois pontos quaisquer (x1, y1, z1) e
(x2, y2, z2) especificado pelo usuário. Use o programa para calcular a distância entre os
pontos (-3, 2, 5) e (3,-6,-5).
6) Crie uma matriz com dimensão 4 × 4 em que cada coluna seja o vector v = [1, 2, 3, 4].
Objetivo
Utilizar o algoritmo da eliminação de Gauss para resolver equações algébricas
lineares.
Resolver sistemas de equações lineares utilizando os métodos diretos.
Introdução
A técnica de eliminação de Gauss, envolve combinar equações para eliminar
variáveis. Apesar de ser um dos métodos mais antigos para resolver equações simultâneas,
é ainda um dos algoritmos mais importantes em uso até a data atual, e é a base da
resolução de equações lineares em muitos pacotes de software populares, incluindo o
MATLAB.
Para três equações simultâneas, cada equação seria representada por um plano em
um sistema de coordenadas tridimensional. O ponto no qual os planos se interceptam irá
representar a solução, verifique o ponto da intersecção dos planos na cor amarela,
vermelha e verde, na Figura 54. Uma visualização difícil.
6.1.3.
Figura SEQ Figura \* ARABIC 54 - Plano 3D
Há, ainda, sistemas que estão muito próximos de serem singulares os chamados
mal condicionados, que também podem causar problemas. Em termos gráficos, isso
significa que é difícil identificar o ponto exato no qual as retas se interceptam, e que também
causarão problemas quando forem encontrados durante as soluções numéricas de
equações lineares, porque são extremamente sensíveis a erros de arredondamento.
Onde Mi é a matriz obtida de A pela substituição da i-ésima coluna pelo vetor coluna
b.
O exemplo a seguir pode ilustrar melhor o método. Dado o sistema de equações:
A=
Todos esses cálculos podem ser feitos utilizando o MATLAB, ver Figura 55, porém
para sistemas com mais de três equações, a regra de Cramer torna-se impraticável. À
medida que o número de equações cresce, os determinantes demoram mais para ser
calculados à mão, ou pelo computador. Por essa razão, são usadas alternativas mais
eficientes, algumas baseadas na eliminação de variáveis, método de Gauss.
A estratégia básica é multiplicar as equações por constantes de modo que uma das
variáveis seja eliminada quando as duas equações são combinadas. O resultado é uma
única equação, que pode ser resolvida determinando a variável restante. Então, esse valor
pode ser substituído em qualquer uma das equações originais para calcular a outra variável.
Por exemplo, a Equação (1) pode ser multiplicada por a21, e a Equação (2) por a11.
a21a11x1 + a21a12x2 = a21b1 (3)
a11a21x1 + a11a22x2 = a11b2 (4)
Subtrair a Equação (3) da Equação (4) irá, portanto, eliminar o termo x1 da equação,
que pode ser resolvida por:
Esse método pode ser estendido a sistemas com mais do que duas ou três
equações, mas os numerosos cálculos necessários para sistemas maiores tornam o
método extremamente moroso para ser implementado à mão. Porem a técnica pode ser
formalizada e rapidamente programada para o computador com a linguagem MATLAB.
Solução.
por 0,1/3 e subtraia o resultado da Equação (6) para obter 7,00333x2 − 0,293333x3 =
−19,5617
Então, multiplique a Equação (5) por 0,3/3 e subtraia da Equação (7) para eliminar x
Depois dessas operações, o conjunto de equações é
Agora, é possível resolver essas equações por substituição regressiva. Primeiro, a Equação
end
% substituição regressiva
x = zeros(n,1);
x(n) = Aum(n,nb)/Aum(n,n);
for i = n-1:-1:1
x(i) = (Aum(i,nb)-Aum(i,i+1:n)*x(i+1:n))/Aum(i,i);
end
6.2. Exercícios
Resolva os problemas a seguir utilizando o MATLAB.
20 = 2x3 − 6x2
2x2 + 4x3 + 30 = 0
Use o MATLAB para calcular o valor das incógnitas e também a sua transposta.
5) Três massas estão suspensas verticalmente por uma série de molas idênticas,
onde a massa 1 está na parte superior e a massa 3, na inferior.
Dica: A posição das três massas pode ser modelada pelos seguintes equilíbrios de
força em estado estacionário.
6.2.1. 7) No tópico 6.1.1.2. Método - Regra de Cramer foi calculado somente uma das
raízes do polinômio. Complete a rotina de tal forma que sejam calculadas as três raízes.
Objetivo
Aprender como manipular e determinar raízes de polinômios com o MATLAB.
Vamos discutir meios de avaliar os polinômios e como trabalhar o seu
comportamento.
Introdução
Os polinômios têm muitas aplicações na engenharia e na ciência: uma delas é o uso
no ajuste de curvas. Entretanto, uma de suas aplicações mais interessantes e poderosas é
na caracterização de sistemas dinâmicos, em particular, de sistemas lineares, como
reatores, dispositivos mecânicos, estruturas e circuitos elétricos.
7.1. Polinômios
Os polinômios são um tipo especial de equação algébrica não linear da forma geral
O tamanho de f terá que ser igual ao tamanho de x, seja ele um escalar, vetor ou
matriz.
Exemplo: Use a seguinte equação para verificar como o MATLAB pode ser
empregado para manipular polinômios f(x) = x5 − 3,5x4 + 2,75x3 + 2,125x2 − 3,875x + 1,25.
O polinômio tem três raízes reais: 0,5, –1,0 e 2; e duas raízes complexas: 1 ± 0,5i. Os
Figura 59.
Existe uma função inversa da roots, chamada de poly, que, quando passados os
valores das raízes, retorna os coeficientes do polinômio. Sua sintaxe é c = poly(r) onde r é
um vetor coluna que contém as raízes e c é um vetor linha que contém os coeficientes do
polinômio.
7.3. Exercícios
1) Determine as raízes dos seguintes polinômios e plote seu gráfico, com seu eixo
apropriado, com o objetivo de verificar se o polinômio atravessa o eixo x bem nos locais
das raízes.
a) f(x) = x3 - 5x2 + 2x + 8
b) g(x) = x2 + 4x + 4
c) i(x) = x5 - 3x3 + 4x2 -1
4) Calcule o valor da função sin (x + pi/10) ∗ cos(x) em 100 pontos do intervalo [−π .
Objetivo
Introdução
Os métodos abertos descritos neste tópico são baseados em fórmulas que exigem
apenas um único valor inicial de x ou dois valores iniciais que não delimitam
necessariamente a raiz. Algumas vezes divergem ou se afastam da raiz verdadeira à
medida que os cálculos prosseguem. Entretanto, quando os métodos abertos convergem,
em geral o fazem muito mais rapidamente do que os métodos intervalares. Iniciaremos
nossa discussão sobre as técnicas abertas com uma versão simples, que será útil para
ilustrar sua forma geral e também o conceito de convergência.
série de Taylor. Para isso, dada uma função f tal que f(x∗) = 0 e seja x0 uma
aproximação de x∗ de modo que |x0 − x∗| seja “pequeno”. O primeiro polinômio de Taylor
onde δ está entre x e x0. Substituindo x = x∗ e junto com f(x∗) = 0 na equação, obtêm-
se
Se |x0 − x∗| é “pequeno”, então (x0 − x∗)2 será “pequeno” em comparação com a soma
dos primeiros dois termos no lado direito da igualdade, podemos desprezar o resto da
equação, ((x*-x0)2/2)f’’(δ). Deste modo, de temos:
Queremos calcular x1 em função de x0, sabendo que x1 será a cota no eixo das
abcissas interceptado pela reta tangente à curva, originada por x0.
A equação da reta tangente ao gráfico da função f(x) no ponto (x0, f(x0)) tem
inclinação m = f’(x0) e é dada por y – f(x0) = f’(x0)(x-x0).
Sabendo que essa reta passa por (x1, 0), temos que 0 – f(x0) = f’(x0)(x1 – x0)
Portanto genericamente
Nosso valor para x0 = 0,5 como estimativa inicial, baseado na análise do gráfico da
função na Figura 65, e utilizaremos como critério de parada |xn+1 - xn)| <= 0,001.
A seguir substituímos em
𝑓(𝑥𝑛 )
𝑥𝑛+1 = 𝑥𝑛 −
𝑓′(𝑥𝑛 )
2𝑥 3 +3𝑥 2 −2
𝑥𝑛+1 = 𝑥𝑛 −
6𝑥 2 +6𝑥
Substituindo xn pelo valor inicial de x0=0,5, encontramos nosso primeiro resultado
para x
2∗0.53 +3∗0.52 −2
𝑥1 = 0.5 − 🡪 x1 = 0.7222
6∗0.52 +6∗0.5
Replicando os cálculos vamos obter os próximos valores de x, observe a Tabela 2.
Xn+1 = Xn -
X Xn f(x) f'(x) Erro
(f(x)/f'(x))
0 0,5 -1 4,5 0,7222 𝒙𝒏 - 𝒙𝒏+𝟏
1 0,7222 0,0426 0,3181 7,4626 0,6796
2 0,6796 0,0133 6,8487 0,6777 0,0019
3 0,6774 0,0003 0,3181 0,6777 0,0000
Logo, uma aproximação da raiz de f(x) = 2x³ + 3x² - 2 é x = 0,6777 admitindo um erro
menor que 0.001. Assim, a aproximação converge rapidamente para a raiz verdadeira.
Observe que o erro relativo percentual verdadeiro em cada iteração diminui.
Observe que duas aproximações que delimitam a raiz podem ser passadas como
um vetor:
fzero(funcao, [x0 x1])
onde x0 e x1 são aproximações que delimitam um intervalo onde ocorre mudança de
sinal.
A função fzero funciona como descrito a seguir. Se uma única aproximação inicial é
passada, ela primeiro efetua uma busca para identificar uma mudança de sinal. Essa busca
implementada na função fzero começa na aproximação inicial e, então, dá passos cada vez
maiores tanto na direção positiva quanto na direção negativa até uma mudança de sinal ser
detectada.
Uma representação mais completa da sintaxe da função fzero pode ser escrita como
[x,fx] = fzero(funcao,x0,opcoes,p1,p2,...) onde opcoes, é uma estrutura de dados criada
pela função optimset e p1, p2,... são quaisquer parâmetros que a função requer.
Uma lista completa de todos os parâmetros possíveis pode ser obtida ao digitar
optimset no prompt de comando do MATLAB ou na ajuda utilizando o comando help.
Exemplo: encontrar a raiz positiva de f (x) = x10 – 1 com uma aproximação inicial de
0,5. Resolva o problema com as funções optimset e fzero, Figura 67.
8.3. Exercícios
Objetivo
Saber como efetuar uma interpolação utilizando polinômios de Lagrange.
Introdução
A densidade e viscosidade do ar são frequentemente apresentadas na forma de
tabelas como uma função da temperatura. Considere que deseje obter a densidade em
uma temperatura que não está incluída na tabela. Nesse caso, você terá que interpolar, ou
seja, estimar o valor na temperatura desejada com base nas densidades que a delimitam.
A abordagem mais simples é determinar a equação para a reta conectando os dois valores
adjacentes e utilizar essa equação para estimar a densidade na temperatura desejada.
Essa interpolação linear é perfeitamente adequada em muitos casos, mas um erro pode ser
introduzido quando os dados exibem curvatura significativa. Neste tópico, será explorada
uma abordagem chamada de polinômio interpolador de Lagrange.
em um ponto não tabelado. Outra situação onde se pode também utilizar a interpolação é
quando a função em estudo tem uma expressão tal que operações como a diferenciação e
a integração são difíceis, ou mesmo impossíveis, de serem realizadas.
conhecidos os pontos (x0, f(x0)), (x1, f(x1)), ..., (xn, f(xn)), com xi < xi+1, i=0, ..., n-1 sendo x0=a
e xn=b. Pretende-se aproximar f(x), x ∈ [x0, xn], por um polinômio
Pn(x) = anxn+an-1xn-1+...+a2x2+a1x+a0 (1)
tal que nos pontos conhecidos Pn(x) coincida com a função f(x), i.é., que satisfaça:
Pn(xi) = f(xi) i=0, ..., n (2)
Diremos que Pn(x) é um polinômio interpolador para f nos pontos dados, (xi, f(xi)) i=0,
..., n, que serão o suporte da interpolação.
Assim, dados (n+1) pontos (xi, f(xi)), i=0, ..., n, a existência de um polinômio que
satisfaça (2) e acerca da unicidade e do grau do polinómio temos informação através do
seguinte teorema:
Teorema: Sejam dados (n+1) pontos distintos x0, x1, ..., xn, (xi≠ xj), e os valores de
f(x) nesses pontos f(x0), f(x1), ..., f(xn). Então existe um único polinômio Pn(x) de grau inferior
ou igual a n que satisfaz a f(xi)=Pn(xi), i=0, ..., n.
em que Lk(x) tem grau n. Para cada i devemos satisfazer Pn(xi) = yi, ou seja,
Como a função Lk(x) é o produto de n fatores lineares, então Lk(x) tem grau n e Pn(x)
Onde
P2(x) =
9.2. Exercícios
Resolva utilizando o MATLAB
1) A população em milhões dos Estados Unidos de 1920 a 2000 pode ser tabulada
como:
Ajuste um polinômio sétimo grau aos 8 primeiros pontos (1920 a 1990). Use-o para
calcular a população em 2000 por extrapolação e compare sua previsão com o resultado
real.
2) A corrente em um fio é medida com grande precisão como uma função do tempo:
t 0 0,1250 0,2500 0,3750 0,5000
i 0 6,24 7,75 4,85 0,0000
Determine i em t = 0,23.
3) Seja a tabela:
HAHN, Brian H.; VALENTINE, Daniel T. Essential MATLAB for Engineers and
Scientists, Published by Elsevier Ltd., ISBN: 978-0081008775, 2013.
BIBLIOGRAFIA COMPLEMENTAR
BANSAL, Raj K.; GOEL Ashok, SHARMA, Manoj Kumar. Matlab and Its Applications in
Engineering, Prentice Hal, ISBN: 9788131716816, 2009
HANSELMAN, Duane C.; LITTLEFIELD, Bruce. Mastering Matlab 7, Prentice Hall, ISBN:
9780131430181, 2004
JOE, King. Matlab para Engenheiros, Prentice Hall, ISBN-10: 0201350947, 1997.
PALM III, Wilian, Introduction to Matlab 7 for Engineers, McGraw-Hill, ISBN: 978-
0072922424,2010