繁体   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