二分法でコードを実行するだけで忙しいです。もちろん、スクリプトを書いて実行するのは簡単です。しかし、x^2のような式を入力とする関数を定義したいときに、このトリックが発生します。私は一緒に何かを廃棄しました。一種の仕事は終わったが、最初のif文では関数に関数を乗算できないという不満がある。どうすればこの問題も解決できますか? 質問する前にこの問題について私の宿題を本当にやってみましたが、残念ながら解決策を見つけることはできません。私はちょうどこれを行う方法を知っていることが大好きです。Pythonで式を入力として受け入れる関数を作成します
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を渡すように求めていることを解決する最良の方法 - 引数として式を渡すことはできません。 –