Как построить неявное уравнение в Python

Я хочу построить график V (ось y) и график t (ось x), используя приведенное ниже уравнение при 5 различных значениях L (показано ниже)

Л= [5,10,15,20,25]

б=0,0032

Уравнение, (b*V*0,277*t) - (b*L) = log(1+b*V*0,277*t)

вывод кода будет таким, как показано на рисунке Ожидаемый результат

Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Сергей Кох 25.11.2022 17:45
Почему в 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
1
108
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хотя sympy предоставляет функцию plot_implicit, результаты далеки от хороших. Мы можем использовать Numpy и Matplotlib для достижения нашей цели.

Основная идея заключается в том, что ваше уравнение можно записать как LHS - RHS = 0. Итак, мы можем создать контурные графики и выбрать уровень 0. Но контурные графики используют карты цветов, поэтому нам придется создавать сплошные карты цветов:

import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.lines import Line2D
from matplotlib.colors import ListedColormap
import numpy as np

Lvalues = [5,10,15,20,25]
bval = 0.0032

V = np.linspace(0, 1000)
t = np.linspace(0, 10)
V, t = np.meshgrid(V, t)
f = lambda V, t, b, L: b*V*0.277*t - b*L - np.log(1+b*V*0.277*t)

colors = cm.tab10.colors
handles = []
fig, ax = plt.subplots()
for L, c in zip(Lvalues, colors):
    cmap = ListedColormap([c, c])
    z = f(V, t, bval, L)
    ax.contour(t, V, z, levels=[0], cmap=cmap)
    handles.append(Line2D([], [], color=c, label = "L = %s" % L))
ax.legend(handles=handles)
plt.show()

Большое спасибо за подробное решение.

Aryaman 25.11.2022 19:07

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