我的python代码中有一个像background-size: cover;
background-size: contain;
这样的线性方程式。我想将此等式转换为同义词类Line的对象y = "x+1"
。我尝试通过执行以下操作将字符串解析为sympy表达式:
sympy.geometry.line
,输出为from sympy.parsing.sympy_parser import (parse_expr, standard_transformations, function_exponentiation, implicit_multiplication_application)
y = "2*x+1"
transformations = (standard_transformations + (implicit_multiplication_application,))
L2 = parse_expr(y, transformations=transformations)
print(type(L2))
。
我不知道下一步要做什么来反对。如果不可能,那么有没有办法将它转换为类的另一个对象,比如python scipy Line对象?
我需要这个,因为我想计算线的斜率,位于线上的点(满足等式的点)来计算与该线平行或垂直的线。
答案 0 :(得分:1)
我没有看到从方程式创建Line对象的简单方法。我认为最简单的方法是从两个x值(比如说0和1)创建两个Point对象并从中创建一行,比如
p1 = Point(0, L2.subs(x, 0))
p2 = Point(1, L2.subs(x, 1))
Line(p1, p2)
答案 1 :(得分:0)
对于发现此帖子的其他人,此功能现在已在Sympy中存在。
我在Sympy 1.5.1中对此进行了测试
代码:
from sympy import Line, symbols
a,b,c,x,y = symbols('a b c x y')
# Hardcoded line equation
line1 = Line(3*x + 1*y + 18)
print(line1)
# Set the line equation in code
a = 3; b = 1; c = 18
line2 = Line(a*x + b*y + c)
print(line2)
输出:
Line2D(Point2D(0,-18),Point2D(1,-21))
Line2D(Point2D(0,-18),Point2D(1,-21))
不幸的是,对于垂直线它失败了:
1 x + 0 y-100
输出
ValueError:找不到y