我正忙着写一些关于二分法的代码。当然,编写脚本并运行它是很容易的。然而,当我想定义一个函数,将x**2这样的表达式作为输入时,技巧就来了。不过,我已经把一些东西拼在一起了。它完成了任务,但在我的第一个if语句中,它抱怨不能用一个函数乘以一个函数。我该如何解决这个问题呢? 在问这个问题之前,我真的试着做了功课,但不幸的是找不到解决办法。我很想知道怎么做。你知道吗
from sympy.abc import x
def bisect(f, a, b):
f = lambda x: f
f_a, f_b = f(a), f(b)
tol = 1e-4
count = 0
print '\t'.join( ['Step' , 'a', 'b', 'c', 'f(c) ' , '(b-a)/2)'])
while (b-a)/float(2) > tol:
c = (a+b)/2
f_c = f(c)
print '\t'.join( [str(count) , str(a) , str(b) , str(c), str((b-a)/float(2) )])
if f_a*f_c < 0:
b = c
f_b = f_c
else:
a = c
f_a = f_c
count = count + 1
这就是你想知道的吗?你知道吗
您还可以传入用
def
创建的函数以及用lambda
定义的单行程序。以上同你可能想知道的另一件事是
工作。。。你知道吗
强制性警告,“eval is evil”,接受用户的Python代码并执行它通常被认为是一个安全问题!然而,如果这段代码是由同一个正在尝试绘制数学形式的用户运行的,那么不会有太大的危害。他不能做比在命令行使用
python
更糟糕的事情。如果你在网络服务器上做这样的事情,我会担心你的工作和未来的前景!你知道吗假设您已经使用
sympy
为函数f
创建了一个表达式:如果更改
lambda
定义,bisect
函数将正常工作:相关问题 更多 >
编程相关推荐