

Pythonに慣れておらず、エラー内容と解決方法がわからない。  
これは呼び出したkvが積分に対応していないということですか？

**ソースコード**

[code]

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import scipy.special
    from scipy.special import kv
    from sympy import *
    from scipy.integrate import quad
    
    z = Symbol('z')
    v = 5/3
    y = quad(f(v,z), (z,x, np.inf))
    F = x*y
    plot((F),(x,0,10),title='test',xlabel='x',ylabel='F')
    
[/code]

**エラーメッセージ**

[code]

    TypeError                                 Traceback (most recent call last)
    <ipython-input-9-8f89c7044d48> in <module>
          9 z = Symbol('z')
         10 v = 5/3
    ---> 11 y = quad(f(v,z), (z,x, np.inf))
         12 F = x*y
         13 plot((F),(x,0,10),title='test',xlabel='x',ylabel='F')
    
    TypeError: ufunc 'kv' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
    
[/code]


CC BY-SA 4.0
2020-07-21T13:04:33.633
68794
2020-07-22T03:36:00.110
2020-07-22T03:36:00.110
19110
41193
question
python sympy scipy
pythonのエラーについて TypeError: ufunc 'kv' not supported


sympy と scipy ライブラリを区別してください。sympy は記号計算のためのライブラリであり、scipy
ライブラリは数値計算のためのライブラリです。それぞれでは内部で用いられるアルゴリズムが違います。基本的に素のままでは共存はできないと思ってください。

今回のプログラムはおそらく Jypter Notebook
系のソフトウェア上で実行されており、質問文にあるプログラムも不完全なものになっています。特に、関数 `f` が定義されていません。しかし実行結果を見るに
`f` の評価には成功しているようです。おそらく別のセルで定義されたか、一度定義されたものを削除した後リセットしていないのでしょう。

エラー `ufunc 'kv' not supported for the input types` はおそらくこの関数 `f`
の定義に関係して生じています。`f` の定義の中で関数 `kv` をお使いではないですか？ import 文を見るにおそらくこの `kv` は
`scipy.special.kv` なのでしょう。具体的な数値が引数に渡されることが期待されている関数に sympy
の記号計算に使われるデータを渡しているため、「対応していない型の値が引数に渡されたよ」というエラーが出ているように見えます。

積分の記号計算をなさりたいのでしたら、まずは sympy の積分に関するドキュメントを読むのは如何でしょうか:
<https://docs.sympy.org/latest/modules/integrals/integrals.html>。また `f`
の内容によっては `sympy.lambdify` などの関数が役に立つかもしれません:
<https://docs.sympy.org/latest/modules/numeric-computation.html>。

そうではなくて積分の数値計算をなさりたいのでしたら scipy ライブラリの積分に関するドキュメントに載っている実装例が助けになるかもしれません:
<https://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html>。


CC BY-SA 4.0
2020-07-21T15:51:21.873
68797
2020-07-21T15:51:21.873
19110
68794
answer