Я попробовал следующий код, чтобы найти root уравнения с использованием техники инкрементального поиска. Когда я установил точность 5 или 7 цифр, код работал отлично. Но когда я устанавливаю точность в 6 цифр, код не может дать правильное значение Что мне делать в этом случае. Код выглядит следующим образом:
import numpy as np
import matplotlib.pyplot as mpl
import prettytable as PT
func_input=input("Function i/p (in numpy notation): ")
fn = eval("lambda x:" + func_input)
## (667.38/x)*(1-np.exp((-0.146843)*x))-40
print ("Function is: ",func_input)
p=int(input("Precision: "))
print("Refer to the graph of the function for the start value")
x1=float(input("Start From: "))
i=0
m=x1
while (m<=x1+4.0):
m=x1+i*(10**(-p))
y=round(fn(m),p)
if (y==0):
break
i+=1
print("The root is: ",m)
Я получил следующий вывод для различных значений точности:
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 22:39:24) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
= RESTART: C:/Users/3D/Desktop/Rushikesh/Python Programs/Roots of Equation/Bracketing Methods/05_Incremental Search.py
Function i/p (in numpy notation): (667.38/x)*(1-np.exp((-0.146843)*x))-40
Function is: (667.38/x)*(1-np.exp((-0.146843)*x))-40
Precision: 5
Refer to the graph of the function for the start value
Start From: 14.5
The root is: 14.78021
>>>
= RESTART: C:/Users/3D/Desktop/Rushikesh/Python Programs/Roots of Equation/Bracketing Methods/05_Incremental Search.py
Function i/p (in numpy notation): (667.38/x)*(1-np.exp((-0.146843)*x))-40
Function is: (667.38/x)*(1-np.exp((-0.146843)*x))-40
Precision: 7
Refer to the graph of the function for the start value
Start From: 14.5
The root is: 14.7802086
>>>
= RESTART: C:/Users/3D/Desktop/Rushikesh/Python Programs/Roots of Equation/Bracketing Methods/05_Incremental Search.py
Function i/p (in numpy notation): (667.38/x)*(1-np.exp((-0.146843)*x))-40
Function is: (667.38/x)*(1-np.exp((-0.146843)*x))-40
Precision: 6
Refer to the graph of the function for the start value
Start From: 14.5
The root is: 18.500001
>>>