Как построить трехмерный график для сложной формулы в matplotlib

Мой вопрос в том, как я могу построить трехмерный график этой функции.

def funkcja22(x, y, a =20,b= 0.2,c = 2*math.pi,d = 5.7,f = 0.8,n = 2):
       fu = -a * math.exp(-b * math.sqrt( (1/n) * (x**2 + y**2) )) - math.exp((1/n) * (math.cos(c*x) + math.cos(c*y)) ) +a +math.exp(1)+d
       return 1/(f*fu)

Я нашел решения, которые используют что-то подобное

x = arange(-3.0,3.0,0.1)
y = arange(-3.0,3.0,0.1)
X,Y = meshgrid(x, y) # grid of point
Z = funkcja22(X, Y) # evaluation of the function on the grid

Но с этой функцией не работает

TypeError: only size-1 arrays can be converted to Python scalars

Буду очень признателен за любую помощь в том, как переписать эту функцию или как ее построить.

В какой строке появляется эта ошибка?

K.Cl 06.04.2021 22:53

@ K.Cl в первой функциональной строке X, Y оба ndarrays Я думаю, что это так

Piotr Nowakowski 06.04.2021 22:55

замените каждый math. на np. в своей функции, и все будет в порядке.

Quang Hoang 06.04.2021 22:55

Да, это сработало, но поскольку @PiotrNowakowski, вероятно, использовал from numpy import *, ему просто нужно полностью удалить math., у numpy уже есть эти функции с такими именами.

K.Cl 06.04.2021 22:58

Хорошо, я этого не сделал, хотя это была такая ошибка. Большое спасибо за изменение функций на numpy, решившее это

Piotr Nowakowski 06.04.2021 23:00

Во избежание недоразумений вам действительно стоит import numpy as np.

JohanC 06.04.2021 23:20
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
6
16
0

Другие вопросы по теме