

二分法を実行しようとして、次のようなコードを書いていたらエラーが出ました。エラーの原因とどのようにすればif文を積の形で使えるのかご教授願います。

[code]

    import numpy as np
    def func(t):
        return np.exp(x)-2*t-1
    a = 1
    b = 2
    
    if (func(x)*func(b)) < 0.0:
        a =x
    else:
        b = x
    
[/code]

[code]

    ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
    
[/code]


CC BY-SA 4.0
2023-04-20T11:48:02.717
94585
2023-04-22T00:37:52.990
2023-04-21T00:36:13.463
3060
58012
question
python
積の形を用いた if 文の条件判定ができません


おそらく現象や問題を誤解していると思われます。  
問題は「積」や「積の形」なのではなく、metropolisさんのコメントにあるように扱っているデータ(`x`)がたぶん配列だからでしょう。

例えばこんな風に質問記事には書かれていない`x`の値を予め単一の値で設定しておけばエラーは発生しません。

[code]

    import numpy as np
    
    def func(t):
        return np.exp(x)-2*t-1
    
    a = 1
    b = 2
    x = 0 #### x を何か単一の値(整数でも浮動小数点数でも可)で初期化しておく
    
    if (func(x)*func(b)) < 0.0:
        a =x
    else:
        b = x
    
[/code]

おそらくJupyterNotebook/Lab等を使っていて、別のセルで`x`に配列データを設定していたとか、単純にPythonのインタプリタを使っていたとしても同様に`x`に配列データを設定後にインタプリタを終了・再起動せずに使い回して質問のスクリプトを入力した等の状況ではないでしょうか？

似たような感じでこんな記事もありますので参考に。  
[ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()
というエラーが出る](https://ja.stackoverflow.com/q/52075/26370)


CC BY-SA 4.0
2023-04-22T00:37:52.990
94606
2023-04-22T00:37:52.990
26370
94585
answer