Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Resolução de equações por métodos numéricos: bissecção e Newton, Notas de estudo de Engenharia Mecânica

Documento que apresenta a resolução de aproximações numéricas de uma equação cúbica usando os métodos da bissecção e de newton. O documento inclui códigos em pascal para aplicação dos métodos.

Tipologia: Notas de estudo

2015

Compartilhado em 29/01/2015

joao-sobral-7
joao-sobral-7 🇵🇹

4.3

(10)

180 documentos

1 / 4

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Tópicos de resolução da 2ª frequência (v2), 18 de dezembro de 2013
Pretende-se determinar um valor aproximado de x = 7^(1/3), este valor é única raiz real da função f(x)=x^3-7.
delete x:
plot(x^3-7)
-5 -4 -3 -2 -1 1 2 3 4 5
-100
-50
50
100
x
y
1º Processo - Método da bissecção:
delete x:
f:=x->x^3-7;
f(1.75);
f(2)
xx
37
1.640625
1
n:=3:
a:=1.75:
b:=2.0:
for i from 1 to n do
c:=(a+b)/2:
va:=evalAt(f(x),x=a):
vc:=evalAt(f(x),x=c):
print(Unquoted,"x".i=float(c)):
if vc=0
then i:=n+1
elif va*vc<0
then b:=c
else a:=c
end
end_for:
e:=(b-a)/2^n: // Erro do método
print(NoNL,"\n"):
print(Unquoted,"A soluçao é aproximadamente ".float(c)." com um erro absoluto de ".round(e,4)."."):
x1 = 1.875
x2 = 1.9375
x3 = 1.90625
A soluçao é aproximadamente 1.90625 com um erro absoluto de 0.0039.
Uma vez que o erro absoluto é inferior a 0.5 x 10^(-2), então, após conveniente arredondamento a solução tem
pelo menos 2 casas decimais corretas, ou seja, 7^(1/3) é aproximadamente 1.91 com 2 casas decimais corretas.
2º processo - Método de Newton:
delete x:
f';
f''
x3 x2
x6 x
f(1.75)*f''(1.75);
f(2)*f''(2);
17.2265625
12
Assim, a aproximação inicial é x0 = 2.
pf3
pf4

Pré-visualização parcial do texto

Baixe Resolução de equações por métodos numéricos: bissecção e Newton e outras Notas de estudo em PDF para Engenharia Mecânica, somente na Docsity!

Tópicos de resolução da 2ª frequência (v2), 18 de dezembro de 2013

Pretende-se determinar um valor aproximado de x = 7^(1/3), este valor é única raiz real da função f(x)=x^3-7.

delete x: plot(x^3-7)

-5 -4 -3 -2 -1 1 2 3 4 5

50

100

x

y

1º Processo - Método da bissecção:

delete x: f:=x->x^3-7; f(1.75); f(2) x → x^3 − 7

− 1.

1

n:=3: a:=1.75: b:=2.0: for i from 1 to n do c:=(a+b)/2: va:=evalAt(f(x),x=a): vc:=evalAt(f(x),x=c): print(Unquoted,"x".i=float(c)): if vc= then i:=n+ elif va*vc< then b:=c else a:=c end end_for:

e:=(b-a)/2^n: // Erro do método print(NoNL,"\n"): print(Unquoted,"A soluçao é aproximadamente ".float(c)." com um erro absoluto de ".round(e,4)."."):

x1 = 1.

x2 = 1.

x3 = 1.

A soluçao é aproximadamente 1.90625 com um erro absoluto de 0.0039.

Uma vez que o erro absoluto é inferior a 0.5 x 10^(-2), então, após conveniente arredondamento a solução tem pelo menos 2 casas decimais corretas, ou seja, 7^(1/3) é aproximadamente 1.91 com 2 casas decimais corretas.

2º processo - Método de Newton:

delete x: f'; f'' x → 3 x^2

x → 6 x

f(1.75)f''(1.75); f(2)f''(2); − 17.

12

Assim, a aproximação inicial é x 0 = 2.

n:=3: x[1]:=2.0: for i from 1 to n do x[i+1]:=x[i]-f(x[i])/f'(x[i]): e[i]:=abs(x[i+1]-x[i]): // Erro do método print(Unquoted,"x".i=float(x[i+1]),"com erro absoluto e".i=e[i]): end_for:

print(NoNL,"\n"): print(Unquoted,"A soluçao é aproximadamente ".x[n+1]."."):

x1 = 1.916666667, com erro absoluto e1 = 0. x2 = 1.912938458, com erro absoluto e2 = 0. x3 = 1.912931183, com erro absoluto e3 = 0.

A soluçao é aproximadamente 1.912931183.

Uma vez que o erro absoluto é inferior a 0.5 x 10^(-4), então, após conveniente arredondamento a solução tem pelo menos 4 casas decimais corretas, ou seja, 7^(1/3) é aproximadamente 1.9129 com 4 casas decimais corretas.

XList:= [101.6,203.2,304.8]: YList:=[88964.43,97860.88,66723.32]: n:=2: DD[1,1]:=YList[1]: for i from 1 to n do DD[i+1,i+1]:=YList[i+1]: for j from i-1 downto 0 do DD[j+1,i+1]:=(DD[j+2,i+1]-DD[j+1,i])/(XList[i+1]-XList[j+1]): end: end: MDD:=matrix(n+1,n+1,DD);

( 88964.43 87.56348425 − 1. 0 97860.88 − 306. 0 0 66723.

A tabela de diferenças divididas é a seguinte:

xi F(xi) F[xi,xi+1]] F[x 0 ,x 1 ,x 2 ]

101.6 88964.43 87.56348425 -1.

delete x: P:=DD[1,n+1]: for k from n-1 downto 0 do P:=DD[1,k+1]+ P*(x-XList[k+1]) end: print(Unquoted,"O polinómio interpolador é dado por \n\t P(x)= ".simplify(P)."."); valor:= evalAt(P,x=250): print(NoNL,Unquoted, "Assim, o valor de F(250) é aproximadamente P(250)=".round(valor,4)." N."):

O polinómio interpolador é dado por P(x)= - 1.939151238x^2 + 678.6167815x + 40033.97. Assim, o valor de F(250) é aproximadamente P(250)=88491.213 N.

O algoritmo está assocido ao método de Euler. A informaçao em falta é respetivamente (b-a)/h, y 0 e f(t,y).