Witam mam problem z implementacją metody siecznych dla mojej funkcji.
Wygląda to tak:
import math
EPS0 = 0.01 # dokladnosc porownywania z zerem
EPSX = 0.01 # dokladnosc wyznaczenia pierwiastka
# Funkcja
# f(x) = x^3*(x+sin(x^2-1)-1)-1
def f(x):
return x * x * x * (x + math.sin(x * x - 1) - 1) - 1
#math.pow(0.5,x) +1 =(x-2)**
x1 = 1
x2 = 2
print
print "WYNIK:"
print
f1 = f(x1);
f2 = f(x2);
i = 4 #liczba obiegow(iteracji)
while (i > 0) and (abs(x1 - x2) > EPSX):
if abs(f1 - f2) < EPS0:
print "Zle punkty startowe"
i = 0
break
x0 = x1 - f1 * (x1 - x2) / (f1 - f2)
f0 = f(x0)
if abs(f0) < EPS0: break
x2, f2 = x1, f1
x1, f1 = x0, f0
i -= 1
if i == 0: print "Przekroczony limit obiegow"
if i > 0: print "x0 = %15.8f" % x0
dla funkcji:
# Funkcja
# f(x) = x^3*(x+sin(x^2-1)-1)-1
działa
ale dostałem do rozwiazania taka funkcję:
0,5x + 1 = (x-2)2
i nie wiem jak sobie z nią poradzić.
Próbowałem w ten sposób:
return (x** - 4*x) - (math.pow(0.5,x)) + 3
oraz
return math.pow(0.5,x) + 1 = (x-2)**
ale kończy się błędem @msm spojrzysz ?