2016-09-03 2 views
0

をプロットするための「リスト」:はTypeError:のためのサポートされていないオペランドのタイプ(S) - :「int型」と、私は以下の(Bが定義されている)ライン11のコードのために、次のエラーを取得していますプログラム

サポートされていないオペランドを - : 'int'と 'list'のタイプ:

#Needed libraries 
import numpy as np 
import matplotlib.pyplot as mpl 

#Defining given complex refractive indices 
N1=complex(1.5,-7.6) 
N2=complex(1.0,0.0) 

#Defining the function that gives physically reasonable answer for effective medium 
def B(x): 
    a=-2 
    b=(N1**2)*(2*(1-x)-x)+(N2**2)*(2*x-(1-x)) 
    c=(N1**2)*(N2**2) 
    Nsq = (-b + np.sqrt(b**2-4*a*c))/(2*a) 
    return np.sqrt(Nsq) 

#Plotting the function 
G=B(n) 
mpl.plot(n,G) 
mpl.show() 

誰かが私を助けてくれますか?私は問題がどこにあるのか分かりませんし、科学的なPythonの使い方についてもあまり経験はありません。ありがとう!アレイの各値を0と1

  • コールB間フロートの範囲を定義し、構成

    コード:

  • +1

    'n'はどこに定義されていますか?コードは完全ではありません。私は 'n'は計算式を無効にするリストです(intとリストの混合) –

    +0

    コード内のnは体積分率を表しているので、0と1の間のすべての値を取って欲しいと思います。 float n = range(0,1)のようなものは、無効な構文と言います。 –

    +0

    0から1までのすべての値?まあそれは無限です! 'range'は整数に対してのみ機能します。 'n'の定義方法を教えてください。 –

    答えて

    0

    のようにコードを修正

    #Needed libraries 
    import numpy as np 
    import matplotlib.pyplot as mpl 
    
    #Defining given complex refractive indices 
    N1=complex(1.5,-7.6) 
    N2=complex(1.0,0.0) 
    
    #Defining the function that gives physically reasonable answer for effective medium 
    def B(x): 
        a=-2 
        b=(N1**2)*(2*(1-x)-x)+(N2**2)*(2*x-(1-x)) 
        c=(N1**2)*(N2**2) 
        Nsq = (-b + np.sqrt(b**2-4*a*c))/(2*a) 
        return np.sqrt(Nsq) 
    
    nb_values = 10 # you can set it higher 
    n = np.linspace(0,1,nb_values+1) 
    # returns array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]) 
    
    #calling the function for each x in n, build an array from results 
    G=[B(x) for x in n] 
    #Plotting the function 
    mpl.plot(n,G) 
    mpl.show() 
    
    +0

    ありがとう!しかし、nを連続的にする方法はありますか?それとも、単純にnp.linspace関数のステップサイズを小さくするという意味ですか? –

    +0

    "nを連続にする"は、純粋な数学の観点からは可能ですが、コンピュータでは不可能です:無限の値は可能であっても無限の計算時間を意味します...プロットされたグラフィックスに飽きることなくステップを減らさなければなりません。 –

    関連する問題