【发布时间】:2017-02-09 15:37:21
【问题描述】:
我正忙着做一些关于二分法的代码。编写脚本并运行它当然很容易。但是,当我想定义一个将 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
【问题讨论】:
-
请您整理一下您的缩进。我认为解决你所要求的最好的方法是简单地将 f 作为 lambda 传递 - 你不能将表达式作为参数传递。
标签: python python-2.7 lambda expression numerical-methods