Ошибка типа: только массивы длины 1 могут быть преобразованы в скаляры Python - комплексные числа - PullRequest
0 голосов
/ 24 января 2019

Я попытался построить график со сложными значениями, используя Python 2.7. Но код не возвращал комплексные значения для значений y.

import numpy as np
import math
import cmath
import matplotlib.pyplot as plt

def f(x):
     return ((x)*cmath.sqrt((x)+0.5)*((x)+1))


x=np.linspace(-4,-2,10)
y=f(x)
plt.plot( x,y, label=fx_name)
plt.title('sample ')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(loc='upper left')
plt.show()

Ошибка

    Traceback (most recent call last):
  File "/home/Happy/Demo/code10.py", line 12, in <module>
    y=f(x)
  File "/home/Happy/Demo/code10.py", line 7, in f
    return ((x)*cmath.sqrt((x)+0.5)*((x)+1))
TypeError: only length-1 arrays can be converted to Python scalars

1 Ответ

0 голосов
/ 24 января 2019

попробуйте с numpy:

import numpy as np
import matplotlib.pyplot as plt


def f(x):
    return ((x) * np.sqrt((x) + 0.5) * ((x) + 1))


x = np.linspace(-4, -2, 10).astype(np.complex)
y = f(x)

plt.plot(y.real, y.imag,'*')
for i in range(x.shape[0]):
    plt.text(y.real[i], y.imag[i],"x="+str(x.real[i]))
plt.title('sample')
plt.xlabel('y real')
plt.ylabel('y imag')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...