2015-10-20 2 views
-1

Как я могу изменить этот код для работы? Необходимо запустить графику, которая создает функцию w(omega) = 1/(1 + 1j*omega) на реальной и мнимой оси.только массивы длиной-1 могут быть преобразованы в скалы Python

import matplotlib.pyplot as plt 
import numpy as np 


def func(a): 
    for x in range(len(a)): 
     plt.plot([0, a[x].real], [0, a[x].imag], 'ro-', label='python') 
    limit=np.max(np.ceil(np.absolute(a))) # set limits for axis 
    plt.xlim((-limit,limit)) 
    plt.ylim((-limit,limit)) 
    plt.ylabel('Imaginary') 
    plt.xlabel('Real') 
    plt.show() 

omega = np.linspace(-4, 4, 251) 
a = np.arange(1) + 1j*np.arange(omega, 1) 
func(a) 
+0

Есть ли причина, по которой вы не просто пишете 'a = 1/(1 + 1j * omega)'? –

ответ

0

Чтобы ответить на ваш конкретный вопрос: ошибка возникает из-за того, что omega является массивом, но arange ожидает скалярных аргументов: значения из-в-шаг. Поскольку он получает массив длиной-1 (omega), он не может определить, какое значение omega должно выбрать в качестве начальной точки диапазона. Следовательно, ошибка: omega не может быть преобразована в скаляр (что сделало бы работу arange).

Но до сих пор неясно, почему вы точно рисуете этот путь, и именно то, что вы хотите поместить в массив a.

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

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