1

モジュール OneDMaps:

def LogisticMap(a,nIts,x):
    for n in xrange(0,nIts):
        return 4.*a*x*(1.-x)

実際のプログラム:

# Import plotting routines
from pylab import *
import OneDMaps 

def OneDMap(a,N,x,f):
    return x.append(f(a,N,x))

# Simulation parameters
# Control parameter of the map: A period-3 cycle
a = 0.98
# Set up an array of iterates and set the initital condition
x = [0.1]
# The number of iterations to generate
N = 100

#function name in OneDMaps module
func = LogisticMap

# Setup the plot
xlabel('Time step n') # set x-axis label
ylabel('x(n)') # set y-axis label
title(str(func) + ' at r= ' + str(a)) # set plot title

# Plot the time series: once with circles, once with lines
plot(OneDMap(a,N,x,func), 'ro', OneDMap(a,N,x,func) , 'b')  

このプログラムは、モジュール OneDMaps.py から関数を呼び出し、その反復に対してプロットすることになっています。「float 型の非 int でシーケンスを乗算できません」というエラーが表示され、LogisticMap(float(a)...) を使用しようとしましたが、うまくいきませんでした。また、関数名をプロットのタイトルに表示したいのですが、LogisticMap at r= 0.98 と言う代わりに「at r=0.98.

4

1 に答える 1

4

list次のように設定します。

x = [0.1]

次に、次のように乗算しますfloat

return 4.*a*x*(1.-x)

そんなことはできません。おそらく、あなたはの代わりにxなりたかったですか?arraylist

x = array([0.1])

(それは要素ごとに乗算を行います)


リストを追加すると連結されることに注意してください。

[0] + [1] == [0, 1]

整数による乗算は、その回数を連結することと同じです。

[0] * 3 == [0, 0, 0]

しかし、それはフロートには意味がありません。

[0] * 3.0 #raises TypeError as you've seen

(たとえば、3.5 を掛けるとどうなるでしょうか?)

于 2012-12-09T04:02:41.883 に答える