henriquechanry28
(usa elementary OS)
Enviado em 13/11/2016 - 16:17h
Olá pessoal sou novato em python, estou com erro nesse algortimo que parece não estar chamando a função secante de calculo numérico podem me ajuda no erro obrigado.
segue a seguir o algoritmo
#!/usr/bin/python
# - *- coding: utf- 8 - *-
import sys
from array import array
import math
class Polinomio(object):
def __init__(self):
self.polino = None
self.iterMAx = 0
self.l = 0
self.u = 0
self.e = 0
self.n = 0
self.a = [0 * 5]
def Secante (poli1,a,b,toler,maxIter):
pass
def main():
polinom = Polinomio()
polinom.polino = 'P(x) = 6x^4 + 3x^2 -0.5x -15'
polinom.iterMAx = 50
polinom.l = 1.0
polinom.u = 1.5
polinom.e = 0.001
polinom.n = 4
polinom.a.append(6.0)
polinom.a.append(3.0)
polinom.a.append(-0.5)
polinom.a.append(-15.0)
Secante(polinom, polinom.l, polinom.u, polinom.e, polinom.iterMAx)
if __name__ == "__main__":
main()
def Horner (poli1,n):
y = poli1.a[0]
for i in range(1,n):
y = y * a + poli1.a[i]
return y
def Secante (poli1,a,b,toler,maxIter):
itera = 0
fa = Horner(poli1,a)
fb = Horner(poli1,b)
if(abs(fa) < abs(fb)):
a,b = b,a #swap entre as variaveis a e b
fa,fb = fb,fa #Swap entre as funçoes fa e fb
x = b
fx = Horner(poli1,x)
delta = -(fx / (fa - fa)) * (b-a)
x += delta
file = open("secante.html","w")
file.append('<html>')
file.append(' <meta charset=utf-8>')
file.append(' <head>')
file.append(' <title>Trabalho 2.1 Desenvolvimento Ráído para Linux</title>')
file.append('<br><br>')
file.append(' <head>')
file.append(' <body>')
file.append(' Polinômio: '+poli1.polino)
file.append(' <br><i>Método de Secante</i><br><br>')
file.append(' <table border=1 width= 50% height=50% >')
file.append(' <th>Iter</th> <th>a</th> <th>f(a)</th> <th>b</th> <th>f(b)</th> <th>x</th> <th>f(x)</th> <th>Delta</th>')
file.append(' <tr><td>'+itera+'</td> <td>'+a+'</td> <td>'+fa+'</td> <td>'+b+'</td> <td>'+fb+'</td> <td>'+x+'</td> <td>'+fx+'</td> <td>'+delta+'</td></tr>')
a = b
b = x
itera += 1
while((abs(delta)>Toler) and (abs(fx)>Toler)):
fx = Horner(poli1,x)
fa = Horner(poli1,a)
fb = Horner(poli1,b)
delta = -(fx / (fa - fa)) * (b-a)
x += delta
file.append(' <tr><td>'+itera+'</td> <td>'+a+'</td> <td>'+fa+'</td> <td>'+b+'</td> <td>'+fb+'</td> <td>'+x+'</td> <td>'+fx+'</td> <td>'+delta+'</td></tr>')
a = b
b = x
itera += 1
if(itera >= maxIter):
file.append('<br>')
file.append('Erro de cáculo, ultrapassou o número de iterações máxima')
file.append('<br>')
break;
file.append('</body>')
file.append('</html>')
file.close()
return 0