gpt4 book ai didi

python - sympy 设置隐式图的范围(实体切断)

转载 作者:行者123 更新时间:2023-11-28 18:05:11 24 4
gpt4 key购买 nike

我无法设置范围,因此圆圈不会被切断。我希望有人能帮助我。

编辑后的代码:

我想在直线 g 处镜像“V”点。

from sympy import symbols
from sympy.plotting import plot
from sympy.plotting import plot_implicit
from sympy.geometry import Circle
from sympy import solve
import numpy as np

x, y = symbols(['x', 'y'])
g = 4*x-3*y+1
V = np.array([5,2])
n = np.array([4, -3])
abs_n = np.linalg.norm(n)
hnf_g = abs(g/abs_n)
mirrored_V = V - 2*hnf_g.evalf(subs={x:V[0], y:V[1]}) * n/abs_n
y_g = solve(g,y)

p = plot(y_g[0], show=False, xlim=(-10,10), ylim=(-10,10))
p.extend(plot_implicit(Circle(V,1).equation(), var_start_end_x=(x,-10,10), var_start_end_y=(y,-10,10)))
p.extend(plot_implicit(Circle(mirrored_V,1).equation(), var_start_end_x=(x,-10,10), var_start_end_y=(y,-10,10)))
p.show()

新结果:

New result

旧的:

这是整个情节的结果: whole plot

如果我只看隐式图: only implicit plot with the circle

最佳答案

来自 plot_implicit 的文档这可以通过设置范围来实现,如第三个示例所示,复制如下。

p2 = plot_implicit(Eq(x**2 + y**2, 3), (x, -3, 3), (y, -3, 3))

但这需要 Eq对象,不幸的是,它不能从 Circle 构造出于这些目的 - 可能是通过 bool 的错误的结果而不是 bool元组 - 或者我遗漏了一些东西。如果是前者则

Eq(Circle(Point(0,0),1).equation())

是不够的,你必须显式地构造圆方程,即

Eq((x - 5)**2 + (y - 2)**2 - 1, 1)

完整示例

from sympy import symbols
from sympy.plotting import plot
from sympy.plotting import plot_implicit
from sympy.geometry import Circle
from sympy import solve
import numpy as np

x, y = symbols(['x', 'y'])
g = 4*x-3*y+1
V = np.array([5,2])
n = np.array([4, -3])
abs_n = np.linalg.norm(n)
hnf_g = abs(g/abs_n)
mirrored_V = V - 2*hnf_g.evalf(subs={x:V[0], y:V[1]}) * n/abs_n
y_g = solve(g,y)

p = plot(y_g[0], show=False, xlim=(-10,10), ylim=(-10,10))
p.extend(plot_implicit(Eq((x - V[0])**2 + (y - V[1])**2, 1), (x,-10,10), (y,-10,10), show=False))
p.extend(plot_implicit(Eq((x - mirrored_V[0])**2 + (y - mirrored_V[1])**2, 1),
(x,-10,10), (y,-10,10), show=False))
p.show()

关于python - sympy 设置隐式图的范围(实体切断),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53932746/

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