Я пытаюсь построить функцию, созданную из строки, с помощьюimplement_function иlambdify. Функция работает для расчета отдельных значений, но не для построения графиков. Я получаю сообщение об ошибке «Невозможно преобразовать выражение в число с плавающей запятой» в строке ax.plot(...).
Очевидно, у Sympy и matplotlib есть некоторый конфликт. Полное сообщение об ошибке напечатано ниже.
Кто-нибудь знает, как это исправить?
Код:
import sympy as sympy
from sympy import lambdify, Function, Lambda
from sympy.abc import x, y, z
from sympy.utilities.lambdify import implemented_function
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
plt.show()
inf = implemented_function(Function('f'), lambda x: eval("x"))
f = lambdify(x, inf(x))
ax.plot(x, f(x), color="blue", linestyle=":", label = "f(x)")
Сообщение об ошибке:
TypeError Traceback (most recent call last)
Cell In[27], line 25
23 inf = implemented_function(Function('f'), lambda x: eval("x"))
24 f = lambdify(x, inf(x))
---> 25 ax.plot(x, f(x), color="blue", linestyle=":", label = "f(x)")
File ~\anaconda3\Lib\site-packages\matplotlib\axes\_axes.py:1781, in Axes.plot(self, scalex, scaley, data, *args, **kwargs)
1779 lines = [*self._get_lines(self, *args, data=data, **kwargs)]
1780 for line in lines:
-> 1781 self.add_line(line)
1782 if scalex:
1783 self._request_autoscale_view("x")
File ~\anaconda3\Lib\site-packages\matplotlib\axes\_base.py:2339, in _AxesBase.add_line(self, line)
2336 if line.get_clip_path() is None:
2337 line.set_clip_path(self.patch)
-> 2339 self._update_line_limits(line)
2340 if not line.get_label():
2341 line.set_label(f'_child{len(self._children)}')
File ~\anaconda3\Lib\site-packages\matplotlib\axes\_base.py:2362, in _AxesBase._update_line_limits(self, line)
2358 def _update_line_limits(self, line):
2359 """
2360 Figures out the data limit of the given line, updating self.dataLim.
2361 """
-> 2362 path = line.get_path()
2363 if path.vertices.size == 0:
2364 return
File ~\anaconda3\Lib\site-packages\matplotlib\lines.py:1037, in Line2D.get_path(self)
1035 """Return the `~matplotlib.path.Path` associated with this line."""
1036 if self._invalidy or self._invalidx:
-> 1037 self.recache()
1038 return self._path
File ~\anaconda3\Lib\site-packages\matplotlib\lines.py:674, in Line2D.recache(self, always)
672 if always or self._invalidx:
673 xconv = self.convert_xunits(self._xorig)
--> 674 x = _to_unmasked_float_array(xconv).ravel()
675 else:
676 x = self._x
File ~\anaconda3\Lib\site-packages\matplotlib\cbook.py:1398, in _to_unmasked_float_array(x)
1396 return np.ma.asarray(x, float).filled(np.nan)
1397 else:
-> 1398 return np.asarray(x, float)
File ~\anaconda3\Lib\site-packages\sympy\core\expr.py:340, in Expr.__float__(self)
338 if result.is_number and result.as_real_imag()[1]:
339 raise TypeError("Cannot convert complex to float")
--> 340 raise TypeError("Cannot convert expression to float")
TypeError: Cannot convert expression to float
Подробнее здесь: https://stackoverflow.com/questions/792 ... th-lamdify
Matplotlib не может построить функцию, созданную с помощью lamdify ⇐ Python
Программы на Python
-
Anonymous
1732694780
Anonymous
Я пытаюсь построить функцию, созданную из строки, с помощьюimplement_function иlambdify. Функция работает для расчета отдельных значений, но не для построения графиков. Я получаю сообщение об ошибке «Невозможно преобразовать выражение в число с плавающей запятой» в строке ax.plot(...).
Очевидно, у Sympy и matplotlib есть некоторый конфликт. Полное сообщение об ошибке напечатано ниже.
Кто-нибудь знает, как это исправить?
Код:
import sympy as sympy
from sympy import lambdify, Function, Lambda
from sympy.abc import x, y, z
from sympy.utilities.lambdify import implemented_function
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
plt.show()
inf = implemented_function(Function('f'), lambda x: eval("x"))
f = lambdify(x, inf(x))
ax.plot(x, f(x), color="blue", linestyle=":", label = "f(x)")
Сообщение об ошибке:
TypeError Traceback (most recent call last)
Cell In[27], line 25
23 inf = implemented_function(Function('f'), lambda x: eval("x"))
24 f = lambdify(x, inf(x))
---> 25 ax.plot(x, f(x), color="blue", linestyle=":", label = "f(x)")
File ~\anaconda3\Lib\site-packages\matplotlib\axes\_axes.py:1781, in Axes.plot(self, scalex, scaley, data, *args, **kwargs)
1779 lines = [*self._get_lines(self, *args, data=data, **kwargs)]
1780 for line in lines:
-> 1781 self.add_line(line)
1782 if scalex:
1783 self._request_autoscale_view("x")
File ~\anaconda3\Lib\site-packages\matplotlib\axes\_base.py:2339, in _AxesBase.add_line(self, line)
2336 if line.get_clip_path() is None:
2337 line.set_clip_path(self.patch)
-> 2339 self._update_line_limits(line)
2340 if not line.get_label():
2341 line.set_label(f'_child{len(self._children)}')
File ~\anaconda3\Lib\site-packages\matplotlib\axes\_base.py:2362, in _AxesBase._update_line_limits(self, line)
2358 def _update_line_limits(self, line):
2359 """
2360 Figures out the data limit of the given line, updating self.dataLim.
2361 """
-> 2362 path = line.get_path()
2363 if path.vertices.size == 0:
2364 return
File ~\anaconda3\Lib\site-packages\matplotlib\lines.py:1037, in Line2D.get_path(self)
1035 """Return the `~matplotlib.path.Path` associated with this line."""
1036 if self._invalidy or self._invalidx:
-> 1037 self.recache()
1038 return self._path
File ~\anaconda3\Lib\site-packages\matplotlib\lines.py:674, in Line2D.recache(self, always)
672 if always or self._invalidx:
673 xconv = self.convert_xunits(self._xorig)
--> 674 x = _to_unmasked_float_array(xconv).ravel()
675 else:
676 x = self._x
File ~\anaconda3\Lib\site-packages\matplotlib\cbook.py:1398, in _to_unmasked_float_array(x)
1396 return np.ma.asarray(x, float).filled(np.nan)
1397 else:
-> 1398 return np.asarray(x, float)
File ~\anaconda3\Lib\site-packages\sympy\core\expr.py:340, in Expr.__float__(self)
338 if result.is_number and result.as_real_imag()[1]:
339 raise TypeError("Cannot convert complex to float")
--> 340 raise TypeError("Cannot convert expression to float")
TypeError: Cannot convert expression to float
Подробнее здесь: [url]https://stackoverflow.com/questions/79216368/matplotlib-cannot-plot-function-created-with-lamdify[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия