我编写了以下代码,使用二分法找到方程的根。
def f(x):
return x**3-5
#computes f(x) intercept with the bisection method
#err - a small floating number that tells you your accuracy
def bisection(low, high, err):
mid = (high+low)/2
while(abs(f(mid)) > err):
print ('low =', low, 'high =', high, 'mid= ', mid)
if f(mid) > 0:
high = mid
elif f(mid) < 0:
low = mid
mid = (high + low)/2
return mid
print (bisection(0, 100, 0.001))
代码执行方法没有问题。但是,我想找到一种方法来提示用户输入他们自己的方程式来解决而不是已经预先编程。
我感谢您的任何意见。
非常感谢你的帮助!
答案 0 :(得分:1)
from sympy import *
eqn=sympify(input('Eqn'))
f=lambda x:eqn.subs({'x':x})
答案 1 :(得分:0)
您可以提示用户输入多项式的系数:
print('a x^3 + b x^2 + c x + d')
a = input('>a')
b = input('>b')
c = input('>c')
d = input('>d')
然后将其输入函数:
def f(x, a, b, c, d):
return a*x**3 + b*x**2 + c * x + d
更好的方法(从@SmartManoj的回答继续):
from sympy import *
equation = input('Your equation > ')
eqn=sympify(equation)
f=lambda x:eqn.subs({'x':x})
如果您使用的是python 2,请改用raw_input('Your equation > ')
。
答案 2 :(得分:0)
没有必要使用Sympy,eval
是原生的。
def f(expr, x)
return eval(expr)
for i in range(10):
print f("x * x", i)