Как построить неявное уравнение на графике? - PullRequest
1 голос
/ 21 апреля 2020

Я хочу, чтобы принятый ответ в графике неявного уравнения преобразовался в Plotly. Я пробовал много кода, один из них ниже, но я не понимаю документацию Contour в Plotly.

import plotly.graph_objects as go

delta = 0.025
xrange = np.arange(-2, 2, delta)
yrange = np.arange(-2, 2, delta)
X, Y = np.meshgrid(xrange,yrange)
F = X**2
G = 1- (5*Y/4 - np.sqrt(np.abs(X)))**2

fig = go.Figure(data =
    go.Contour(
        z=[[F - G, 0]]
    ))
fig.show()

1 Ответ

3 голосов
/ 22 апреля 2020

По сути, z = F-G - это функция, которая будет иметь нули, которые вы хотите превратить в кривую и график, поэтому не оборачивайте ее во все скобки. Затем вам нужно просто нанести один контур на ноль, поэтому используйте contours, чтобы указать c точный интересующий вас контур.

Вот как это выглядит:

enter image description here

И вот код:

delta = 0.025
xrange = np.arange(-2, 2, delta)
yrange = np.arange(-2, 2, delta)
X, Y = np.meshgrid(xrange,yrange)
F = X**2
G = 1- (5*Y/4 - np.sqrt(np.abs(X)))**2

fig = go.Figure(data =
    go.Contour(
        z = F-G,
        x = xrange,
        y = yrange,
        contours_coloring='lines',
        line_width = 2,
        contours=dict(
            start=0,
            end=0,
            size=2,
        ),
    ))
fig.show()

Это хороший трюк, чтобы получить общее представление о том, как может выглядеть кривая, но это довольно грубо и даст вам результат только с точностью delta. Если вы хотите, чтобы действительные нули были в любой момент, вам лучше использовать решатель, например scipy optimize, как это делается здесь .

...