gpt4 book ai didi

python - 为什么我的图表显示不正确的最小值,使用 np.linspace 或 np.array 并且效果不佳?

转载 作者:行者123 更新时间:2023-12-05 05:42:19 24 4
gpt4 key购买 nike

我正在尝试学习多元优化,并试图绘制 $2x^2 + y^2$ 与限制在 (-1,1) 之间的平面的图形 - 本质上是一个正方形。这是相同的代码片段

import sympy as sp
x,y = sp.symbols('x y')
paraboloid = sp.lambdify((x,y),2*(x**2) + y**2)
plane = sp.lambdify((x,y),2*x+3*y+4)
plane2 = sp.lambdify((x,y),x+y)
import numpy as np
points = np.arange(-5,5,0.1)
x,y = np.meshgrid(points,points)

points2 = np.arange(-1,1,0.1)
x2,y2 = np.meshgrid(points2,points2)
import plotly.graph_objects as go
fig = go.Figure(data = [go.Surface(z = paraboloid(x,y)),go.Surface(z = 5+0*plane2(x2,y2))])
fig.update_traces(contours_z=dict(show=True, usecolormap=True,
highlightcolor="limegreen", project_z=True))
fig.show()

输出如下: Plotly Output

现在我有两个问题:

  1. 抛物面的最小值不应该在 0,0 处,因为它实际上是最大值
  2. 为什么我的平面不在抛物面正下方

我认为这些是相关的问题,所以如果有人回答了其他问题。请求你的帮助。 Stack 平台不允许我将图像内联,因此附加了输出图像,对于给您带来的不便,我们深表歉意。

最佳答案

我认为您需要在数据中明确指定 x 轴和 y 轴:

data = [
go.Surface(z = paraboloid(x,y), x=x, y=y),
go.Surface(z = 5+0*plane2(x2,y2), x=x2, y=y2)
]

它在 documentation 中提到:

Passing x and y data to 3D Surface PlotIf you do not specify x and y coordinates, integer indices are used for the x and y axis. You can also pass x and y values to go.Surface.

关于python - 为什么我的图表显示不正确的最小值,使用 np.linspace 或 np.array 并且效果不佳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72065625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com