You are on page 1of 14

Algoritmo (Python)

import cmath
import numpy

def cround(num,nDecimal):
if(numpy.iscomplex(num)):
return round(num.real,nDecimal) + round(num.imag,nDecimal)*1j
return round(num.real,nDecimal)

def muller(f, x0,x1,x2,n):


print("X"+str(n-1)+"="+str(cround(x0,5)))
print("X"+str(n)+"="+str(cround(x1,5)))
print("X"+str(n+1)+"="+str(cround(x2,5)))
print("f(X"+str(n-1)+")="+str(cround(f(x0),5)))
print("f(X"+str(n)+")="+str(cround(f(x1),5)))
print("F(X"+str(n+1)+")="+str(cround(f(x2),5)))

h0 = x1 - x0
print("H"+str(n-1)+"="+str(cround(h0,5)))
h1 = x2 - x1
print("H"+str(n)+"="+str(cround(h1,5)))
s0 = (f(x1) - f(x0)) / h0
print("S"+str(n-1)+"="+str(cround(s0,5)))
s1 = (f(x2) - f(x1)) / h1
print("S"+str(n)+"="+str(cround(s1,5)))
a = (s1 - s0) / (h1 + h0)
print("A="+str(cround(a,5)))
b = a * h1+s1
print("B="+str(cround(b,5)))
c=f(x2)
print("C="+str(cround(c,5)))
x3=-2*c

rad = cmath.sqrt(b**2 - 4*c*a)


if (rad.imag == 0):
rad = rad.real
if abs(b-rad) < abs(b+rad):
x3 =x3/ (b + rad)
else:
x3 =x3/ (b - rad)

x3 = x2 + x3

e = abs((x3-x2)/x3)*100

print("x"+str(n+2)+"="+str(cround(x3,5)))

print("error relativo :" , str(cround(e,5)) , "%")

return x3
def f(x):
return (x**3)-(x**2)+(3*x)-2

print("\n iteracion #1 \n ")


x0=0
x1=1
x2=0.5
x3 = muller(f,x0,x1,x2,1)

print("\n iteracion #2 \n ")

x4 = muller(f,x1,x2,x3,2)

print("\n iteracion #13 \n ")

x5 = muller(f,x2,x3,x4,3)

Resultado
iteración #1
X0=0
X1=1
X2=0.5
f(X0)=-2
f(X1)=1
F(X2)=-0.625
H0=1
H1=-0.5
S0=3.0
S1=3.25
A=0.5
B=3.0
C=-0.625
x3=0.70156
error relativo : 28.73047 %

iteración #2
X1=1
X2=0.5
X3=0.70156
f(X1)=1
f(X2)=-0.625
F(X3)=-0.0422
H1=-0.5
H2=0.20156
S1=3.25
S2=2.89141
A=1.20156
B=3.1336
C=-0.0422
x4=0.71496
error relativo : 1.87404 %

iteración #3

X2=0.5
X3=0.70156
X4=0.71496
f(X2)=-0.625
f(X3)=-0.0422
F(X4)=-0.00082
H2=0.20156
H3=0.0134
S2=2.89141
S3=3.08842
A=0.91652
B=3.1007
C=-0.00082
x5=0.71523
error relativo : 0.03702 %
def f(x):
return (2*x**4)+(6*x**2)+10

print("\n iteracion #1 \n ")


x0=-1
x1=3
x2=1
x3 = muller(f,x0,x1,x2,1)

print("\n iteracion #2 \n ")

x4 = muller(f,x1,x2,x3,2)

print("\n iteracion #3 \n ")

x5 = muller(f,x2,x3,x4,3)

Resultado

iteración #1
X0=-1
X1=3
X2=1
f(X0)=18
f(X1)=226
F(X2)=18
H0=4
H1=-2
S0=52.0
S1=104.0
A=26.0
B=52.0
C=18
x3=0.5547
error relativo : 80.27756 %

iteración #2
X1=3
X2=1
X3=0.5547
f(X1)=226
f(X2)=18
F(X3)=12.0355
H1=-2
H2=-0.4453
S1=104.0
S2=13.39434
A=37.05299
B=-3.10535
C=12.0355
x4=(0.5966-0.56839j)
error relativo : 69.16491 %

iteración #3
X2=1
X3=0.5547
X4=(0.5966-0.56839j)
f(X2)=18
f(X3)=12.0355
F(X4)=(9.27949-4.1584j)
H2=-0.4453
H3=(0.0419-0.56839j)
S2=13.39434
S3=(6.92106-5.3591j)
A=(11.64561-3.12375j)
B=(5.63356-12.1092j)
C=(9.27949-4.1584j)
x5=(0.32985-1.08955j)
error relativo : 51.42956 %
def f(x):
return (x**4)-(2*x**3)+(6*x**2)-(8*x)+8

print("\n iteracion #1 \n ")


x0=0
x1=1
x2=0.5
x3 = muller(f,x0,x1,x2,1)

print("\n iteracion #2 \n ")

x4 = muller(f,x1,x2,x3,2)

print("\n iteracion #3 \n ")

x5 = muller(f,x2,x3,x4,3)

Resultado

iteración #1
X0=0
X1=1
X2=0.5
f(X0)=8
f(X1)=5
F(X2)=5.3125
H0=1
H1=-0.5
S0=-3.0
S1=-0.625
A=4.75
B=-3.0
C=5.3125
x3=(0.81579-1.00931j)
error relativo : 81.49003 %

iteración #2
X1=1
X2=0.5
X3=(0.81579-1.00931j)
f(X1)=5
f(X2)=5.3125
F(X3)=(0.66791+1.33098j)
H1=-0.5
H2=(0.31579-1.00931j)
S1=-0.625
S2=(-2.51254-3.81565j)
A=(3.98892-1.14211j)
B=(-2.40562-8.20236j)
C=(0.66791+1.33098j)
x4=(0.98034-1.05274j)
error relativo : 11.83041 %

iteración #3
X2=0.5
X3=(0.81579-1.00931j)
X4=(0.98034-1.05274j)
f(X2)=5.3125
f(X3)=(0.66791+1.33098j)
F(X4)=(-0.33013+0.38215j)
H2=(0.31579-1.00931j)
H3=(0.16455-0.04343j)
S2=(-2.51254-3.81565j)
S3=(-4.24755-6.88736j)
A=(1.79265-2.46604j)
B=(-4.05968-7.371j)
C=(-0.33013+0.38215j)
x5=(1.00243-0.99595j)
error relativo : 4.31197 %

You might also like