-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmnewton.py
43 lines (36 loc) · 1.19 KB
/
mnewton.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# -*- coding: utf-8 -*-
"""MNewton.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1vh2g5oMiMFvGrc6IIPsAuE2X11PkHGUG
Solução aproximada de f(x) = 0 pelo método de Newton.
Parametros
f : função
Função da qual desejamos encontrar uma solução para f(x)=0
Df : função
Derivada de f(x).
x0 : número
Chute inicial para a solução de f(x)=0.
epsilon : número
Critério de parada se abs(f(x)) < epsilon.
max_iter : inteiro
Número maximo de iterações do método de Newton.
"""
def newton(f,Df,x0,epsilon,max_iter):
xn = x0
for n in range(0,max_iter):
fxn = f(xn)
if abs(fxn) < epsilon:
print('Encontrada a solução após',n,'iterações.')
return xn
Dfxn = Df(xn)
if Dfxn == 0:
print('Derivada zero. Nenhuma solução encontrada.')
return None
xn = xn - fxn/Dfxn
print('Excedeu o número máximo de iterações. Nenhuma solução encontrada.')
return None
p = lambda x: x**3 - x**2 - 1
Dp = lambda x: 3*x**2 - 2*x
approx = newton(p,Dp,1,1e-10,10)
print(approx)