SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
CÁLCULO NUMÉRICO
Profa. Dra. Yara de Souza Tadano yaratadano@utfpr.edu.br
Aula 10
Matlab – Métodos para zeros reais de funções
04/2014
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 3/47
Algoritmo do Método da Bissecção
¨ Seja f (x) contínua em [a, b] e tal que f (a) e f (b) têm sinais
opostos:
ENTRADA: função f, extremidades a, b; precisão ‘erro’, número
máximo de iterações ‘max’.
SAÍDA: solução aproximada ou mensagem de erro.
Passo 1: Faça i = 1;
Passo 2: Enquanto i < max, execute os passos 3 a 6.
Passo 3: Faça p = (a + b) / 2; ( )
x
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 4/47
Algoritmo do Método da Bissecção
Passo 4: Se f (p) = 0 ou |b – a| < erro, então:
SAÍDA (x); ( ).
PARE.
Passo 5: Faça i = i + 1.
Passo 6: Se f (a) * f (p) > 0, então faça a = p; ( ).
senão faça b = p.
SAÍDA (‘ ’, max);
( ).
PARE.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 5/47
INTRODUÇÃO
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 6/47
LAYOUT DO MATLAB
Command
History
Window
Workspace
Window
Command Window
Current
Folder
Window
Local onde as
operações podem ser
diretamente feitas
Espaço destinado às
variáveis que estão salvas
na memória, onde é
possível visualizar o nome,
valor e classe da mesma
Lista de comandos
realizados, organizados
por data de execução,
permitindo o comando ser
realizado novamente com
duplo clique
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 7/47
Editor – Script File
¨ M-file
¨ File > New > M-file
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 8/47
COMANDOS
BÁSICOS
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 9/47
COMENTÁRIO
¨ Para incluir uma linha com comentários:
% no MATLAB
// no SCILAB.
¨ Assim, a linha não será executada.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 10/47
LIMPAR MEMÓRIA E COMANDOS
¨ Comando clc:
¤ Limpa os últimos resultados exibidos na janela de comandos.
¨ Comando clear:
¤ Limpa a memória.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 11/47
Símbolos Aritméticos
Operação Símbolo Exemplo
Adição + 5 + 3
Subtração – 5 – 3
Multiplicação * 5 * 3
Divisão / 5 / 3
Exponenciação ^ 5 ^ 3 (significa 53 = 125)
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 12/47
Símbolos Lógicos
Operação Símbolo
Igualdade ==
Desigualdade ~=
Maior ou igual >=
Menor ou igual <=
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 13/47
¨ Ordem em que o MATLAB faz as operações:
Ordem Operação Matemática
Primeiro Parênteses. Para vários parênteses, o que estiver
por dentro é executado primeiro
Segundo Exponenciação
Terceiro Multiplicação, divisão (mesma ordem)
Quarto Adição e subtração
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 14/47
Funções matemáticas elementares
¨ sqrt(x) – raiz quadrada
¨ nthroot(x,n) – n-ésima raiz real
¨ exp(x) – ex
¨ abs(x) – valor absoluto
¨ log(x) – logaritmo natural (base e)
¨ log10(x) – logaritmo na base 10
¨ factorial(x) – x!
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 15/47
Funções Trigonométricas
¨ sin(x) – seno (x em radianos)
¨ sind(x) – sine (x em graus)
¨ cos(x) – cosine (x em radianos)
¨ cosd(x) – cosine (x em graus)
¨ tan(x) – tangent (x em radianos)
¨ tand(x) – tangent (x em graus)
¨ cot(x) – cotangent (x em radianos)
¨ cotd(x)- cotangent (x em graus)
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 16/47
Variável Simbólica
¨ Em alguns casos precisamos utilizar uma variável simbólica,
chamemos, para definir como sendo qualquer variável do
domínio, isto é, uma variável contínua. Para isso temos o
comando syms.
>> syms x
>> syms a, b, c
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 17/47
Derivada
¨ Para calcularmos derivadas utiliza-se o comando:
>> diff(f(x),x,n)
>> Derivative(f(x),x,n) SCILAB
¨ onde n indica a ordem da derivação.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 18/47
Plotar gráficos
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 19/47
Plotar gráficos
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 20/47
Plotar gráficos
¨ Podemos utilizar alguns comandos para melhorar a aparência
de nosso gráfico:
¨ title (‘título’);
¨ xlabel (‘x’);
¨ ylabel (‘y’).
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 21/47
Plotar gráficos
¨ É possível desenhar mais que uma função no mesmo gráfico.
¨ Existem dois modos:
¤ um através do comando plot;
¤ outro através do comando hold.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 22/47
¨ Além do comando plot podemos graficar uma função
através do comando fplot.
¨ Basicamente, você deve fornecer como primeiro argumento
a função que pretende usar entre apostrofes e como segundo,
o intervalo sobre o qual a função será graficada.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 23/47
Exemplo 1
¨
¨ Uso do comando plot para construir o gráfico de uma
função.
¨ Função: x3 - 9 x + 3
>> x = -5:0.5:5;
>> y = x.^3 – 9 * x + 3;
>> plot(x,y);
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 24/47
Exemplo 2
Construção do gráfico de duas funções (log x e 1/x)
x=0.5:0.1:6
y1=log10(x)
y2=1./x
hold on
plot(x,y1)
plot(x,y2)
hold off
OU plot(x,y1,x,y2)
title('gráfico da função x^3-9x+3')
title('gráfico das funções log(x) e 1/x')
xlabel('x')
ylabel('y')
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 25/47
Exemplo 3
¨ Construção do gráfico de uma e duas funções usando o
comando fplot
>> fplot (‘x^3-9*x+3’, [-5,5])
>> hold on
>> fplot(‘log10(x)’, [0.1,6]
>> fplot(‘1/x’, [0.1,6])
>> hold off
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 26/47
break Interrompe a execução de laços for e while
clc Limpa a tela (command window)
disp Exibe o conteúdo de uma variável, sem mostrar o seu nome
input Permite ao usuário inserir variáveis, textos, valores, etc
sign Função sinal: retorna o sinal de um argumento
if Condiciona execução de comandos
else Usado com o comando if
elseif Usado com o comando if
end Usado para terminar a execução dos comandos if,for,while
while Repete comandos enquanto condição especificada for verdadeira
fprintf Grava dados em arquivo formatado
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 27/47
Comando disp e input
¨ Para os métodos que iremos implementar, é necessário que o
programa conheça a função. Mas, para cada função
diferente teremos que mudar o código-fonte do programa?
¨ Não, esse problema é resolvido pelo comando input.
¨ A cada vez que o programa for rodado ele mesmo pedirá as
variáveis, logo não será necessário mudar o código
original do programa e haverá uma maior interação entre o
programa e o usuário (não necessariamente um
programador).
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 28/47
Comando disp e input
¨ Vamos utilizar o comando disp junto com o comando
input.
¨ Exemplo:
¨ disp('Insira a função');
¨ f = input('','s');
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 29/47
Comando fprintf
¨ O comando fprintf é um dos métodos mais simples de
saída de dados.
>> fprintf('A raiz é: %f', p);
o que está entre aspas aparecerá para o usuário, os itens onde
aparece %f serão substituídos pelas variáveis, respeitando-se a
ordem em que aparecem.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 30/47
Comandos Lógicos
¨ Muitas vezes é necessário colocar mais de um comando ao
mesmo parâmetro (principalmente no laço if), para isso
existem os comando lógicos dados na seguinte tabela:
¨ Exemplo:
>>if(abs(f(p))<erro || abs(b – a)<erro)
& E lógico
|| OU lógico
~ NÃO lógico
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 31/47
Estrutura condicional if-end
¨ Se o resultado da expressão lógica <condição> for
verdadeiro, então a lista de <comandos> será executada.
Se o resultado for falso, os <comandos> não serão
executados.
>> if <condição>
>> <comandos>
>> end
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 32/47
O Laço while
¨ O laço while, repete um grupo de comandos um número
indefinido de vezes, até obtermos uma resposta satisfatória
ou até que o usuário mande interromper o programa.
¨ Enquanto a expressão lógica <condição> for verdadeira a
lista <comandos> será repetida.
>> while <condição>
>> <comandos>
>> end
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 33/47
Comando break
¨ A estrutura while permite que um grupo de comandos seja
repetido um número indeterminado de vezes. No entanto, a
condição de interrupção é testada no início da estrutura.
¨ Em várias situações em programação se faz necessário
interromper a execução da repetição verificando a condição
no interior da estrutura e não no seu início.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 34/47
Comando break
¨ A estrutura while é executada indefinidamente a
princípio, pois a condição do while é sempre verdadeira.
Contudo, quando a <condição> do if for satisfeita o
comando break será executado causando a interrupção da
repetição while.
>> while 1
>> <comandos 1>
>> if <condição>
>> break
>> end
>> <comandos 2>
>>end
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 35/47
Comando inline
¨ Uma forma de definir uma função é usando o comando
inline.
¨ Exemplo:
>> cf = input ('Entre com a função: ');
>> f = inline(cf);
Para usar a função inline, é necessário declarar a variável x
como variável simbólica (syms x) e não será necessário usar
o comando subs.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 36/47
Comando subs
¨ O comando subs serve para substituir valores numéricos
em expressões simbólicas.
¨ Exemplo:
>> disp('Insira a função');
>> f = input('','s');
>> p = (a+b)/2;
>> if (subs(f,p))*(subs(f,a)) > 0
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 37/47
Método da Bissecção
¨
¨ Função: f
¨ Extremos dos intervalos: [a, b]
¨ Precisão: erro
¨ Número máximo de iterações: max
¨ A cada iteração: p
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 38/47
Algoritmo do Método da Bissecção
¨ Seja f (x) contínua em [a, b] e tal que f (a) e f (b) têm sinais
opostos:
ENTRADA: função f, extremidades a, b; precisão ‘erro’, número
máximo de iterações ‘max’.
SAÍDA: solução aproximada ou mensagem de erro.
Passo 1: Faça i = 1;
Passo 2: Enquanto i < max, execute os passos 3 a 6.
Passo 3: Faça p = (a + b) / 2; ( )
x
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 39/47
Algoritmo do Método da Bissecção
Passo 4: Se f (p) = 0 ou |b – a| < erro, então:
SAÍDA (p); ( ).
PARE.
Passo 5: Faça i = i + 1.
Passo 6: Se f (a) * f (p) > 0, então faça a = p; ( ).
senão faça b = p.
SAÍDA (‘ ’, max);
( ).
PARE.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 40/47
Implementação
clear, clc
disp('Insira a função');
f = input('','s');
disp('Insira o valor do extremo esquerdo do
intervalo');
a = input('');
disp('Insira o valor do extremo direito do
intervalo');
b = input('');
disp('Insira o valor do erro');
erro = input('');
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 41/47
Implementação
disp('Insira o número máx de operações');
max = input('');
i = 1;
while (i < max)
p = (a+b)/2;
if ( subs(f,p) == 0 || abs(b – a) < erro )
fprintf('A raiz é: %dn', p);
fprintf(‘O número de iterações foi:
%i', i);
break
end
abs(subs(f,p))< erro || abs(b – a) < erro)
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 42/47
Implementação
i = i + 1;
if (subs(f,p))*(subs(f,a)) > 0
a = p;
else
b = p;
end
end
(subs(f,p))*(subs(f,b)) < 0
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 43/47
Algoritmo do Método de Newton
ENTRADA: aproximação inicial x0; precisão ε, número máximo
de iterações N0.
SAÍDA: solução aproximada ou mensagem de erro.
Passo 1: Faça i = 1;
Passo 2: Enquanto i ≤ N0 , execute os passos 3 a 6.
Passo 3: Faça x = x0 – f (x0) / f’(x0); (Calcula xi)
Passo 4: Se (x – x0) < ε, então:
SAÍDA (x); (Procedimento concluído com sucesso).
PARE.
x
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 44/47
Algoritmo Método de Newton
Passo 5: Faça i = i + 1.
Passo 6: Faça x0 = x; (Atualiza x0)
Passo 7: SAÍDA (‘O método falhou após N0 iterações, N0 = ’, N0);
(O procedimento não foi bem-sucedido). PARE.
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 45/47
Implementação
clear, clc
syms x
cf = input('Entre com a função: ');
f = inline(cf);
derivada = diff(cf, x);
df = inline(derivada);
tol = input('Entre com a tolerância: ');
error = 0;
max=input('Entre com o número máximo de iterações: ');
x = input('Entre com um valor inicial: ');
i = 0;
disp(' i xi error’)
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 46/47
Implementação
while (i <= max)
fprintf('t%it%3.8ft%fn', i, x, error);
p = x;
x = x - f(x)/df(x);
error = abs(x - p);
if error < tol
i = i + 1;
fprintf('t%it%3.8ft%fn', i, x, error);
break
end
i = i + 1;
end
Aula 10 – MATLAB - Zeros de funções
Cálculo Numérico 47/47
REFERÊNCIA
¨ Becker, A. J.; Silva, D. M. I.; Dias, F.H.S.; Pinheiro L. K.
Noções Básicas de Programação em MATLAB.
Universidade Federal de Santa Maria, Santa Maria, Outubro
de 2010.

Mais conteúdo relacionado

Semelhante a 10-Matlab.pdf

Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...André Constantino da Silva
 
Curso de ShellScript - Lm10 shellscript10
Curso de ShellScript - Lm10 shellscript10Curso de ShellScript - Lm10 shellscript10
Curso de ShellScript - Lm10 shellscript10Pessoal
 
Algoritmos-SlidesA1_2016_03_01.ppt
Algoritmos-SlidesA1_2016_03_01.pptAlgoritmos-SlidesA1_2016_03_01.ppt
Algoritmos-SlidesA1_2016_03_01.pptRobertoPereiradePaiv
 
Aula6 programação
Aula6 programaçãoAula6 programação
Aula6 programaçãoIFPB
 
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Filipe Chagas Ferraz
 
Aula 2 - Programação 1
Aula 2 - Programação 1Aula 2 - Programação 1
Aula 2 - Programação 1Isaac Barros
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem CLeonardo Lima
 
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...iMasters
 
Minicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJMinicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJRenan Prata
 
Laboratório de Algoritmos Avançados: Busca Ternária
Laboratório de Algoritmos Avançados: Busca TernáriaLaboratório de Algoritmos Avançados: Busca Ternária
Laboratório de Algoritmos Avançados: Busca TernáriaNathan Hartmann
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++thiagodp
 
TDD em C++
TDD em C++TDD em C++
TDD em C++thiagodp
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocosRicardo Bolanho
 

Semelhante a 10-Matlab.pdf (20)

Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
 
Apostila rpira
Apostila rpiraApostila rpira
Apostila rpira
 
Curso de ShellScript - Lm10 shellscript10
Curso de ShellScript - Lm10 shellscript10Curso de ShellScript - Lm10 shellscript10
Curso de ShellScript - Lm10 shellscript10
 
Excel VBA: Aula 3
Excel VBA: Aula 3Excel VBA: Aula 3
Excel VBA: Aula 3
 
Algoritmos-SlidesA1_2016_03_01.ppt
Algoritmos-SlidesA1_2016_03_01.pptAlgoritmos-SlidesA1_2016_03_01.ppt
Algoritmos-SlidesA1_2016_03_01.ppt
 
Aula6 programação
Aula6 programaçãoAula6 programação
Aula6 programação
 
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
 
Aula 2 - Programação 1
Aula 2 - Programação 1Aula 2 - Programação 1
Aula 2 - Programação 1
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem C
 
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
 
Algoritmo recursivo
Algoritmo recursivoAlgoritmo recursivo
Algoritmo recursivo
 
Minicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJMinicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJ
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
apostila matlab
apostila matlabapostila matlab
apostila matlab
 
Laboratório de Algoritmos Avançados: Busca Ternária
Laboratório de Algoritmos Avançados: Busca TernáriaLaboratório de Algoritmos Avançados: Busca Ternária
Laboratório de Algoritmos Avançados: Busca Ternária
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++
 
TDD em C++
TDD em C++TDD em C++
TDD em C++
 
Algoritmos - Aula 13 A - Lacos em C
Algoritmos - Aula 13 A - Lacos em CAlgoritmos - Aula 13 A - Lacos em C
Algoritmos - Aula 13 A - Lacos em C
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
 
Funções em C
Funções em CFunções em C
Funções em C
 

Último

TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxFlvioDadinhoNNhamizi
 
Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06AndressaTenreiro
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMdiminutcasamentos
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptxVagner Soares da Costa
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptxVagner Soares da Costa
 
Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3filiperigueira1
 

Último (6)

TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
 
Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPM
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
 
Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3
 

10-Matlab.pdf

  • 1. CÁLCULO NUMÉRICO Profa. Dra. Yara de Souza Tadano yaratadano@utfpr.edu.br
  • 2. Aula 10 Matlab – Métodos para zeros reais de funções 04/2014
  • 3. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 3/47 Algoritmo do Método da Bissecção ¨ Seja f (x) contínua em [a, b] e tal que f (a) e f (b) têm sinais opostos: ENTRADA: função f, extremidades a, b; precisão ‘erro’, número máximo de iterações ‘max’. SAÍDA: solução aproximada ou mensagem de erro. Passo 1: Faça i = 1; Passo 2: Enquanto i < max, execute os passos 3 a 6. Passo 3: Faça p = (a + b) / 2; ( ) x
  • 4. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 4/47 Algoritmo do Método da Bissecção Passo 4: Se f (p) = 0 ou |b – a| < erro, então: SAÍDA (x); ( ). PARE. Passo 5: Faça i = i + 1. Passo 6: Se f (a) * f (p) > 0, então faça a = p; ( ). senão faça b = p. SAÍDA (‘ ’, max); ( ). PARE.
  • 5. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 5/47 INTRODUÇÃO
  • 6. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 6/47 LAYOUT DO MATLAB Command History Window Workspace Window Command Window Current Folder Window Local onde as operações podem ser diretamente feitas Espaço destinado às variáveis que estão salvas na memória, onde é possível visualizar o nome, valor e classe da mesma Lista de comandos realizados, organizados por data de execução, permitindo o comando ser realizado novamente com duplo clique
  • 7. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 7/47 Editor – Script File ¨ M-file ¨ File > New > M-file
  • 8. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 8/47 COMANDOS BÁSICOS
  • 9. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 9/47 COMENTÁRIO ¨ Para incluir uma linha com comentários: % no MATLAB // no SCILAB. ¨ Assim, a linha não será executada.
  • 10. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 10/47 LIMPAR MEMÓRIA E COMANDOS ¨ Comando clc: ¤ Limpa os últimos resultados exibidos na janela de comandos. ¨ Comando clear: ¤ Limpa a memória.
  • 11. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 11/47 Símbolos Aritméticos Operação Símbolo Exemplo Adição + 5 + 3 Subtração – 5 – 3 Multiplicação * 5 * 3 Divisão / 5 / 3 Exponenciação ^ 5 ^ 3 (significa 53 = 125)
  • 12. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 12/47 Símbolos Lógicos Operação Símbolo Igualdade == Desigualdade ~= Maior ou igual >= Menor ou igual <=
  • 13. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 13/47 ¨ Ordem em que o MATLAB faz as operações: Ordem Operação Matemática Primeiro Parênteses. Para vários parênteses, o que estiver por dentro é executado primeiro Segundo Exponenciação Terceiro Multiplicação, divisão (mesma ordem) Quarto Adição e subtração
  • 14. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 14/47 Funções matemáticas elementares ¨ sqrt(x) – raiz quadrada ¨ nthroot(x,n) – n-ésima raiz real ¨ exp(x) – ex ¨ abs(x) – valor absoluto ¨ log(x) – logaritmo natural (base e) ¨ log10(x) – logaritmo na base 10 ¨ factorial(x) – x!
  • 15. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 15/47 Funções Trigonométricas ¨ sin(x) – seno (x em radianos) ¨ sind(x) – sine (x em graus) ¨ cos(x) – cosine (x em radianos) ¨ cosd(x) – cosine (x em graus) ¨ tan(x) – tangent (x em radianos) ¨ tand(x) – tangent (x em graus) ¨ cot(x) – cotangent (x em radianos) ¨ cotd(x)- cotangent (x em graus)
  • 16. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 16/47 Variável Simbólica ¨ Em alguns casos precisamos utilizar uma variável simbólica, chamemos, para definir como sendo qualquer variável do domínio, isto é, uma variável contínua. Para isso temos o comando syms. >> syms x >> syms a, b, c
  • 17. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 17/47 Derivada ¨ Para calcularmos derivadas utiliza-se o comando: >> diff(f(x),x,n) >> Derivative(f(x),x,n) SCILAB ¨ onde n indica a ordem da derivação.
  • 18. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 18/47 Plotar gráficos
  • 19. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 19/47 Plotar gráficos
  • 20. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 20/47 Plotar gráficos ¨ Podemos utilizar alguns comandos para melhorar a aparência de nosso gráfico: ¨ title (‘título’); ¨ xlabel (‘x’); ¨ ylabel (‘y’).
  • 21. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 21/47 Plotar gráficos ¨ É possível desenhar mais que uma função no mesmo gráfico. ¨ Existem dois modos: ¤ um através do comando plot; ¤ outro através do comando hold.
  • 22. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 22/47 ¨ Além do comando plot podemos graficar uma função através do comando fplot. ¨ Basicamente, você deve fornecer como primeiro argumento a função que pretende usar entre apostrofes e como segundo, o intervalo sobre o qual a função será graficada.
  • 23. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 23/47 Exemplo 1 ¨ ¨ Uso do comando plot para construir o gráfico de uma função. ¨ Função: x3 - 9 x + 3 >> x = -5:0.5:5; >> y = x.^3 – 9 * x + 3; >> plot(x,y);
  • 24. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 24/47 Exemplo 2 Construção do gráfico de duas funções (log x e 1/x) x=0.5:0.1:6 y1=log10(x) y2=1./x hold on plot(x,y1) plot(x,y2) hold off OU plot(x,y1,x,y2) title('gráfico da função x^3-9x+3') title('gráfico das funções log(x) e 1/x') xlabel('x') ylabel('y')
  • 25. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 25/47 Exemplo 3 ¨ Construção do gráfico de uma e duas funções usando o comando fplot >> fplot (‘x^3-9*x+3’, [-5,5]) >> hold on >> fplot(‘log10(x)’, [0.1,6] >> fplot(‘1/x’, [0.1,6]) >> hold off
  • 26. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 26/47 break Interrompe a execução de laços for e while clc Limpa a tela (command window) disp Exibe o conteúdo de uma variável, sem mostrar o seu nome input Permite ao usuário inserir variáveis, textos, valores, etc sign Função sinal: retorna o sinal de um argumento if Condiciona execução de comandos else Usado com o comando if elseif Usado com o comando if end Usado para terminar a execução dos comandos if,for,while while Repete comandos enquanto condição especificada for verdadeira fprintf Grava dados em arquivo formatado
  • 27. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 27/47 Comando disp e input ¨ Para os métodos que iremos implementar, é necessário que o programa conheça a função. Mas, para cada função diferente teremos que mudar o código-fonte do programa? ¨ Não, esse problema é resolvido pelo comando input. ¨ A cada vez que o programa for rodado ele mesmo pedirá as variáveis, logo não será necessário mudar o código original do programa e haverá uma maior interação entre o programa e o usuário (não necessariamente um programador).
  • 28. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 28/47 Comando disp e input ¨ Vamos utilizar o comando disp junto com o comando input. ¨ Exemplo: ¨ disp('Insira a função'); ¨ f = input('','s');
  • 29. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 29/47 Comando fprintf ¨ O comando fprintf é um dos métodos mais simples de saída de dados. >> fprintf('A raiz é: %f', p); o que está entre aspas aparecerá para o usuário, os itens onde aparece %f serão substituídos pelas variáveis, respeitando-se a ordem em que aparecem.
  • 30. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 30/47 Comandos Lógicos ¨ Muitas vezes é necessário colocar mais de um comando ao mesmo parâmetro (principalmente no laço if), para isso existem os comando lógicos dados na seguinte tabela: ¨ Exemplo: >>if(abs(f(p))<erro || abs(b – a)<erro) & E lógico || OU lógico ~ NÃO lógico
  • 31. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 31/47 Estrutura condicional if-end ¨ Se o resultado da expressão lógica <condição> for verdadeiro, então a lista de <comandos> será executada. Se o resultado for falso, os <comandos> não serão executados. >> if <condição> >> <comandos> >> end
  • 32. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 32/47 O Laço while ¨ O laço while, repete um grupo de comandos um número indefinido de vezes, até obtermos uma resposta satisfatória ou até que o usuário mande interromper o programa. ¨ Enquanto a expressão lógica <condição> for verdadeira a lista <comandos> será repetida. >> while <condição> >> <comandos> >> end
  • 33. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 33/47 Comando break ¨ A estrutura while permite que um grupo de comandos seja repetido um número indeterminado de vezes. No entanto, a condição de interrupção é testada no início da estrutura. ¨ Em várias situações em programação se faz necessário interromper a execução da repetição verificando a condição no interior da estrutura e não no seu início.
  • 34. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 34/47 Comando break ¨ A estrutura while é executada indefinidamente a princípio, pois a condição do while é sempre verdadeira. Contudo, quando a <condição> do if for satisfeita o comando break será executado causando a interrupção da repetição while. >> while 1 >> <comandos 1> >> if <condição> >> break >> end >> <comandos 2> >>end
  • 35. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 35/47 Comando inline ¨ Uma forma de definir uma função é usando o comando inline. ¨ Exemplo: >> cf = input ('Entre com a função: '); >> f = inline(cf); Para usar a função inline, é necessário declarar a variável x como variável simbólica (syms x) e não será necessário usar o comando subs.
  • 36. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 36/47 Comando subs ¨ O comando subs serve para substituir valores numéricos em expressões simbólicas. ¨ Exemplo: >> disp('Insira a função'); >> f = input('','s'); >> p = (a+b)/2; >> if (subs(f,p))*(subs(f,a)) > 0
  • 37. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 37/47 Método da Bissecção ¨ ¨ Função: f ¨ Extremos dos intervalos: [a, b] ¨ Precisão: erro ¨ Número máximo de iterações: max ¨ A cada iteração: p
  • 38. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 38/47 Algoritmo do Método da Bissecção ¨ Seja f (x) contínua em [a, b] e tal que f (a) e f (b) têm sinais opostos: ENTRADA: função f, extremidades a, b; precisão ‘erro’, número máximo de iterações ‘max’. SAÍDA: solução aproximada ou mensagem de erro. Passo 1: Faça i = 1; Passo 2: Enquanto i < max, execute os passos 3 a 6. Passo 3: Faça p = (a + b) / 2; ( ) x
  • 39. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 39/47 Algoritmo do Método da Bissecção Passo 4: Se f (p) = 0 ou |b – a| < erro, então: SAÍDA (p); ( ). PARE. Passo 5: Faça i = i + 1. Passo 6: Se f (a) * f (p) > 0, então faça a = p; ( ). senão faça b = p. SAÍDA (‘ ’, max); ( ). PARE.
  • 40. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 40/47 Implementação clear, clc disp('Insira a função'); f = input('','s'); disp('Insira o valor do extremo esquerdo do intervalo'); a = input(''); disp('Insira o valor do extremo direito do intervalo'); b = input(''); disp('Insira o valor do erro'); erro = input('');
  • 41. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 41/47 Implementação disp('Insira o número máx de operações'); max = input(''); i = 1; while (i < max) p = (a+b)/2; if ( subs(f,p) == 0 || abs(b – a) < erro ) fprintf('A raiz é: %dn', p); fprintf(‘O número de iterações foi: %i', i); break end abs(subs(f,p))< erro || abs(b – a) < erro)
  • 42. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 42/47 Implementação i = i + 1; if (subs(f,p))*(subs(f,a)) > 0 a = p; else b = p; end end (subs(f,p))*(subs(f,b)) < 0
  • 43. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 43/47 Algoritmo do Método de Newton ENTRADA: aproximação inicial x0; precisão ε, número máximo de iterações N0. SAÍDA: solução aproximada ou mensagem de erro. Passo 1: Faça i = 1; Passo 2: Enquanto i ≤ N0 , execute os passos 3 a 6. Passo 3: Faça x = x0 – f (x0) / f’(x0); (Calcula xi) Passo 4: Se (x – x0) < ε, então: SAÍDA (x); (Procedimento concluído com sucesso). PARE. x
  • 44. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 44/47 Algoritmo Método de Newton Passo 5: Faça i = i + 1. Passo 6: Faça x0 = x; (Atualiza x0) Passo 7: SAÍDA (‘O método falhou após N0 iterações, N0 = ’, N0); (O procedimento não foi bem-sucedido). PARE.
  • 45. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 45/47 Implementação clear, clc syms x cf = input('Entre com a função: '); f = inline(cf); derivada = diff(cf, x); df = inline(derivada); tol = input('Entre com a tolerância: '); error = 0; max=input('Entre com o número máximo de iterações: '); x = input('Entre com um valor inicial: '); i = 0; disp(' i xi error’)
  • 46. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 46/47 Implementação while (i <= max) fprintf('t%it%3.8ft%fn', i, x, error); p = x; x = x - f(x)/df(x); error = abs(x - p); if error < tol i = i + 1; fprintf('t%it%3.8ft%fn', i, x, error); break end i = i + 1; end
  • 47. Aula 10 – MATLAB - Zeros de funções Cálculo Numérico 47/47 REFERÊNCIA ¨ Becker, A. J.; Silva, D. M. I.; Dias, F.H.S.; Pinheiro L. K. Noções Básicas de Programação em MATLAB. Universidade Federal de Santa Maria, Santa Maria, Outubro de 2010.