Я пытаюсь построить свою функцию f(x)
, используя несколько значений для единственной константы на одном графике.Я делал это раньше, и это работало нормально.Но при использовании того же метода с использованием этой функции я получаю сообщение об ошибке:
x и y должны иметь одинаковое первое измерение, но иметь формы (1000,) и (1,)
import matplotlib.pyplot as plt
import scipy as s
x = s.linspace(0,2* s.pi, 1000)
m = [1.1, 1.2, 1.3, 1.5, 2.0]
m = s.asarray(m)
m = m[:, s.newaxis]
def f(x):
return [m**2 /(4*s.cos(x/2))] [ (m*s.cos(x/2) - 1)*(m - s.cos(x/2))] / (1 + m**2 - 2*m*s.cos(x/2))**2
plt.plot(x,m[0], x,m[1], x,m[2], x,m[3], x,m[4])
plt.show()
РЕДАКТИРОВАТЬ:
При попытке установить m=1.1
вместо списка и построить его только для одного значения m
, я получаю следующее сообщение об ошибке.
Ошибка типа: в скалярный индекс могут быть преобразованы только целочисленные скалярные массивы
Вот мой код для этого.
import matplotlib.pyplot as plt
import scipy as s
x = s.linspace(0,2* s.pi, 1000)
m=1.1
def f(x):
return [m**2 /(4*s.cos(x/2))] [ (m*s.cos(x/2) - 1)*(m - s.cos(x/2))] / ( 1 + m**2 - 2*m*s.cos(x/2))**2
plt.plot(x,f(x))
plt.show()
Это проливает свет на мою проблему?
Что я здесь не так делаю?Спасибо!