matplotlib не отображает уравнения; он отображает ряд точек. Вы можете использовать инструмент, подобный scipy.optimize
, для численного расчета y точек из значений x (или наоборот) неявных уравнений в численном выражении или любого количества других инструментов, если это необходимо.
Например, здесь пример, где я рисую неявное уравнение x ** 2 + x * y + y ** 2 = 10
в определенной области.
from functools import partial
import numpy
import scipy.optimize
import matplotlib.pyplot as pp
def z(x, y):
return x ** 2 + x * y + y ** 2 - 10
x_window = 0, 5
y_window = 0, 5
xs = []
ys = []
for x in numpy.linspace(*x_window, num=200):
try:
# A more efficient technique would use the last-found-y-value as a
# starting point
y = scipy.optimize.brentq(partial(z, x), *y_window)
except ValueError:
# Should we not be able to find a solution in this window.
pass
else:
xs.append(x)
ys.append(y)
pp.plot(xs, ys)
pp.xlim(*x_window)
pp.ylim(*y_window)
pp.show()
Ваши статические классы и статические поля экземпляра совместно используются всеми запросами к приложению, и имеет то же время жизни как домен приложения. Поэтому необходимо быть осторожными при использовании статических экземпляров, так как у Вас могли бы быть проблемы синхронизации и т.п.. Также примите во внимание, что статические экземпляры не будут GC'ed, прежде чем пул приложений будет переработан, и поэтому все, на что ссылается статический экземпляр, не будет GC'ed. Это может привести к проблемам использования памяти.
, Если бы Вам нужен экземпляр с тем же временем жизни как запрос, я предложил бы использовать HttpContext.Current.Items
набор. Это дизайном, предназначенным, чтобы быть местом для хранения материала, в котором Вы нуждаетесь всюду по запросу. Для более хорошего дизайна и удобочитаемости, можно использовать Шаблон "одиночка", чтобы помочь Вам управлять этими объектами. Просто создайте Singleton-класс, который хранит его экземпляр в HttpContext.Current.Items
. (В моей общей библиотеке для ASP.NET у меня есть универсальный класс SingletonRequest с этой целью).
Так как типы содержатся в домене приложения, я ожидал бы, что статические классы будут присутствовать, пока домен приложения не переработан, или если запрос подается различным доменом приложения.
я могу думать о нескольких способах сделать объекты характерными для конкретного запроса, зависит от того, что Вы хотите сделать, для, например, Вы могли инстанцировать объекта в Приложении. BeginRequest и затем хранят его в объекте HttpRequest так, чтобы к этому могли получить доступ все объекты в конвейере обработки запросов.
Обычно статические методы, свойства и классы распространены в Application
уровень. Пока жизни приложения, они совместно используются.
можно определить различное поведение при помощи эти ThreadStatic
атрибут. В этом случае они будут характерны для текущего потока, который, я думаю, специфичен для каждого запроса.
я не советовал бы этому хотя, поскольку это кажется сверхсложным.
можно использовать HttpContext.Current.Items
для установки материала для одного запроса, или HttpContext.Current.Session
для установки материала для одного пользователя (через запросы).
В целом, хотя, если Вы не должны использовать вещи как Server.Transfer
, лучший способ в основном создает вещи однажды и затем передает их явно через вызов метода.
, Если они не уникальны для каждого запроса, там способ позволить им быть?
Нет. Статические участники принадлежат процессу ASP.NET и совместно используются весь пользователи веб-приложения. Необходимо будет обратиться к другим методам управления сеансами, таким как переменные сеанса.