Erros Numéricos com Matlab
Por: Charles Mautinho • 31/8/2018 • Trabalho acadêmico • 1.056 Palavras (5 Páginas) • 182 Visualizações
INSTITUTO FEDERAL DO TRIÂNGULO MINEIRO[pic 5][pic 6]
CAMPUS PARACATU
[pic 7]
Resumo
Foi elaborado um programa capaz de realizar operações de captura de valores de erros numéricos.
Palavras-chave - [Erro numérico.].
Sumário
1 Introdução 04
2 Desenvolvimento 05
3 Conclusão 15
- Introdução
Um processo bem complicado de se fazer é definir valores de erros absolutos e relativos, porém, usando métodos computacionais para nos ajudar, esta missão se torna bem mais tranquila.
- 2 Desenvolvimento
O código de programação a seguir trás consigo a explicação detalhada de cada comando em forma de comentário em suas respectivas linhas. São mostrados na cor verde.
Questão 1
1. Calcule um limite superior do erro absoluto e do erro relativo no cálculo da expressão f(x,y,z) = −x+y2 +sen(z), sabendo que são usados os seguintes valores aproximados:
x = 1.1(δx = 0.05); y = 2.04(δy = 0.005); z = 0.5rad. (δz = 0.05). Quantos algarismos significativos tem o valor calculado de f?
Código usado para resolução:
function [ output_args ] = Untitled( input_args )
clear all
close all
clc
syms x y z
fun=-x+y^2+sin(z)
dx=diff(fun,x) %Derivada parcial da função em relação a "x"
dy=diff(fun,y) %Derivada parcial da função em relação a "y"
dz=diff(fun,z) %Derivada parcial da função em relação a "z"
x1=1.1;ex=0.05;
y1=2.04;ey=0.005;
z1=0.5;ez=0.05;
%calculo da incerteza:
a=x1-ex;b=x1+ex;
c=y1-ey;d=y1+ey; %Atribui o erro tanto para cima quanto para baixo
e=z1-ez;f=z1+ez;
%incerteza:
disp('Intervalos de incerteza')
sprintf('%f<=x<=%f',a,b)
sprintf('%f<=y<=%f',c,d) %O comando sprintf mostra o valor dentro da
sprintf('%f<=z<=%f',e,f) %variável, como na programação em c
format long %Faz com que seja exibido até 16 algarismos após a vírgula
F=eval(subs(fun,{x,y,z},{x1,y1,z1})) %eval extrai o valor real de uma variável simbólica
format short %Faz voltar a ser exibido 4 casas após a vírgula
MX=eval(subs(abs(dx),x,b)) %eval extrai o valor de uma variavel simbolica %subs substitui em alguma função o valor das variáveis
MY=eval(subs(dy,y,d)) %abs extrai o modulo de qualquer numero ou variável
MZ=eval(subs(dz,z,e)) %são os majorantes(maior valor) das derivadas no intervalo de erro das suas respectivas variáveis.
eF=MX*ex+MY*ey+MZ*ez; %formula fundamental do erro
disp('Valores de erro absoluto e do erro relativo')
sprintf('eF<=%.9f, eF/abs(F)<=%.9f',eF,eF/abs(F))
n=-20;
while eF>0.5*10^n % indica a potencia de base 10 e coeficiente 0.5 que é a primeira a se tornar maior que o erro da função, isso nos ajuda a encontrar a quantidade de números significativos.
n=n+1;
end
sprintf('%.10fx10^%.0f\n \n0.5x10^%.0f',F,n,n)
sprintf('O valor significativo é: %.0f',F/10^n-0.5)
end
Resultado exibido na tela:
fun =
y^2 - x + sin(z)
dx =
-1
dy =
2*y
dz =
cos(z)
Intervalos de incerteza
ans =
1.050000<=x<=1.150000
ans =
2.035000<=y<=2.045000
ans =
0.450000<=z<=0.550000
F =
3.541025538604203
MX =
1
MY =
4.0900
MZ =
0.9004
Valores de erro absoluto e do erro relativo
ans =
eF<=0.115472355, eF/abs(F)<=0.032609862
ans =
3.5410255386x10^0
0.5x10^0
ans =
O valor significativo é: 3
>>
Questão 2:
2. Uma corrente eléctrica atravessa uma resistência R de 20Ω. A resistência foi medida com um erro relativo que não excede 0.01. A intensidade da corrente I é 3.00±0.01 A. Sabendo que a tensão da corrente é dada por V = RI, determine um limite superior do erro absoluto no cálculo da tensão da corrente. Quantos algarismos significativos garante para o valor calculado da tensão?
...