Numpy, RuntimeWarning: недопустимое значение в sqrt - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь нарисовать сферу в декартовых координатах.Однако я получаю полусферу, как будто np.sqrt дает мне только положительные значения.Как я могу завершить сферу?Любая альтернатива np.sqrt?

Я знаю, как нарисовать сферу в полярных координатах или с функциями синуса и косинуса, поэтому мне интересно только нарисовать ее, используя значения x, y, z, такие как;

x**2+y**2+z**2=1

Вот код, дающий полусферу и предупреждение;

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure(figsize=(20, 10))
ax = fig.add_subplot(1,2,1, projection = '3d')

xs=np.linspace(-1,1, 100)
ys=np.linspace(-1,1, 100)
xs,ys=np.meshgrid(xs,ys)
zs= np.sqrt(1-xs*xs-ys*ys)

ax.plot_surface(xs, ys, zs, lw = 0, antialiased = True)

1 Ответ

0 голосов
/ 01 июня 2018

функция квадратного корня, по определению, дает положительный (также называемый принцип) корень числа, в котором она имеет квадратный корень.

«отрицательный квадратный корень» является частью более общего набора решений дляуравнение a ^ n = b, где n - степень корня, b - число, от которого берется квадратный корень, а a - решение (a и b могут быть сложными).

theДело в том, что «общий квадратный корень» неоднозначен, потому что он имеет кучу решений для одного входа.это не (математическая) функция.Numpy использует стандарт, который используют все, что является положительным / принципиальным решением.

Если вы хотите сферу, вы можете сделать две полусферы и перевернуть одну из них вверх ногами.(Я не знаю, как заполнить пробел между ними :()

, насколько предупреждение во время выполнения, вы берете квадратный корень из отрицательного числа в углах сетки, где естьнет (реального) решения для круга. Там не должно быть никакого решения, поскольку круг там не существует. (если вы печатаете zs, вы должны увидеть NaNs.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...