簡體   English   中英

Python的簡單與復合興趣; “ x和y必須具有相同的第一尺寸”

[英]Simple & Compounded Interest with Python; “x and y must have the same first dimensions”

因此,我試圖生成一個圖,以說明單利和復利之間的區別。 我遇到的問題是我得到一個錯誤:“ x和y必須具有相同的第一維”。 我在這里等處似乎有類似的問題,但是在將這些解決方案轉移到我的實際問題時遇到了麻煩。 我已經看過了t和fv_2和fv_3的大小/長度,並且尺寸都匹配; fv_1只是一條直線(請參見代碼)。

如果有人可能知道我要去哪里,建議,建議將不勝感激!

import numpy as np
import matplotlib.pylab as plt


pv=1000
r=0.08
n=10

t=np.linspace(0,n,n)
fv_1=np.ones(len(t)*pv) #horizontal line 
fv_2=pv*(1+r*t) #simple interest
fv_3=pv*pow(1+r,t) #compounded interest


plt.title("Simple vs. Compounded Interest Rate")
plt.xlabel("Number of Years, t")
plt.ylabel("Pounds Sterling, £")
plt.xlim(0,11)
plt.ylim(800,2200)
plt.plot(t,fv_1,'b-')
plt.plot(t,fv_2,'g--')
plt.plot(t,fv_3,'r-')
plt.show()

嘗試做:

fv_1=np.ones(len(t))*pv

說明:您的代碼在錯誤的位置帶有) 在您的示例中, fv_1的元素數不等於t的元素數。 您最有可能需要len(t)個值pv的元素。

fv_1的大小為1000,t的大小為10

錯誤在這里: plt.plot(t,fv_1,'b-')

print len(t)
print len(fv_1)
print len(fv_2)
print len(fv_3)

輸出:

10
10000
10
10

解決這個

np.ones(len(t))*pv

所以我接受了你的建議並寫了信

fv_1=np.ones(len(t))*pv.

產生該錯誤的原因是:“只能將length-1數組轉換為Python標量”

擺脫:

fv_3=pv*pow((1+r),t)

並將其替換為等效項:

fv_3=pv*(1+r)**t

通常會生成正確的曲線和圖。

再次感謝@Roberto Mena&@yper

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM