Я пытаюсь использовать метод Ньютона для аппроксимации корня уравнения Колебрука с помощью Python. В настоящее время код не дает ошибок, но также не печатает / печатает. Я понимаю, что это может быть индивидуальный случай и спасибо за всю помощь заранее!
введите описание изображения здесь
numpy as np
import random
import matplotlib.pyplot as plt
#Define Variables, k=e/D, E+04<=x=Re<=E+07
k=0.0001
#Define Colebrook function, f=x=independent variable
def f(x):
return -0.86*(np.log(( 2.51/(Re*np.sqrt(x))) + ( k/3.7))) - (1/np.sqrt(x))
#Define derivative function by definition & approximation
def derivative(f,x,h):
return (f(x + h) - f(x))/h
#Newton's method approximation with initial gussed x value
x=0.01
for Re in range (10^4,10^7, 10000):
m=derivative(f,x,h=0.01)
b=f(x)-m*x #y=mx+b
newx=-b/m #new x value determined by the tangent line
if abs(g(newx))<= (1/10000000000):
print ('root =' + newx)
else:
x=newx
#plot
for Re in range (10^4, 10^7,10000):
x=newx
plt.plot (f(x))
Я уже знаю, что искомый корень - ок. 0.03.