2016-12-19 2 views
0

Итак, я пытаюсь создать сюжет, демонстрирующий разницу между простым и усугубляемым интересом. Проблема, с которой я столкнулась, заключается в том, что я получаю сообщение об ошибке: «x и y должны иметь одно и то же первое измерение». У меня есть похожие проблемы здесь и так далее, но у меня возникают проблемы с переносом этих решений на мою актуальную проблему. Я посмотрел размер/длину t и fv_2 и fv_3, а все размеры совпадают; fv_1 - это просто прямая линия (см. код).Простой и сложный интерес к Python; «x и y должны иметь одинаковые первые измерения»

Если есть кто-нибудь, кто может знать, куда я иду, советы, предложения были бы очень признательны!

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() 

ответ

0

Попробуйте сделать:

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

Объяснение: Ваш код имеет ) в неправильном месте. В вашем примере число элементов в fv_1 не равно количеству элементов в t. Вы, скорее всего, хотите, чтобы len(t) количество элементов значения pv.

+0

@Roberto Мена. Привет, ребята, спасибо за помощь. Тем не менее, я теперь получаю, что «только массивы длиной-1 могут быть преобразованы в сканеры Python» при настройке кода. Я также попытался вырвать строку кода для fv_1 и получил «только массивы длиной-1 могут быть преобразованы в сканеры Python» снова. – Matthew

0

Размер fv_1 составляет 1000 и размер т составляет 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 
0

Итак, я взял ваш совет и написал в

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

, который произвел эту ошибку: «только длина-1 Массивы могут быть преобразованы в Python скаляров»

Избавление от:

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

и заменив его его эквивалентом:

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

генерирует правильные кривые и график в целом.

Еще раз спасибо @Roberto Мена & @yper

Смежные вопросы