【问题标题】:How to solve a symbolic non-linear vector equation? (Matlab or other)如何求解符号非线性矢量方程? (Matlab 或其他)
【发布时间】:2011-10-04 13:52:35
【问题描述】:

我正在尝试解决这个符号非线性向量方程:

P = a*(V0*t+P0) + b*(V1*t+P1) + (1-a-b)*(V2*t+P2) for a, b and t

其中 P、V0、V1、V2、P0、P1、P2 是已知的 3d 向量。

我试图在 Matlab 中这样做:

P = sym('P', [3,1])
P0 = sym('P0', [3,1])
P1 = sym('P1', [3,1])
P2 = sym('P2', [3,1])
V0 = sym('V0', [3,1])
V1 = sym('V1', [3,1])
V2 = sym('V2', [3,1])
syms a b t
F = a*(V0*t+P0) + b*(V1*t+P1) + (1-a-b)*(V2*t+P2) - P
solve(F,a,b,t)

我明白了

Warning: Explicit solution could not be found.

我开始不知道如何解决它,这不是我尝试的第一个数学包。

有趣的是,这个方程有一个简单的几何解释。如果您想象点 P0-P2 是三角形的顶点,V0-V2 大致是顶点法线并且点 P 位于三角形上方,那么对于包含点 P 的三角形满足该等式,它的三个顶点位于三条射线(V *t+P),共享相同的参数 t 值。 a、b和(1-a-b)成为点P的重心坐标。

因此,如果情况不是退化的,那么 t 应该只有一个定义明确的解。

【问题讨论】:

  • 我也尝试用 Maxima 求解方程。没有运气。

标签: math equation solver


【解决方案1】:

作为符号方程,这个方程有3个变量,所以不可能有一个单一的解。

假设您为 b 和 t 选择任何值。然后在几乎所有情况下,您都可以解决 a,因此您会得到许多不同的解决方案。

如果你想从几何角度思考,想象 V0 和 V1 指向 (P0,P1,P2) 三角形的上半空间,而 V2 指向下半空间。 V0,V1 也垂直于三角形平面,V0 和 V1 是单位向量。 现在,如果您有一个固定在点 P 的平面,它与射线 P0+t*V0 和 P1+t*V1 在三角形上方相同距离处相交,您可以移动平面使其固定在 P并以相同的距离与两条射线相交。这只是选择 V2 的问题,即与该平面的交点以相同的速度移动,因此它将对应于相同的 t,从而为您提供无限多的解决方案。

另一个例子是如果所有 V0-V2 都与三角形 P0,P1,P2 共线。然后你很容易得到任何 t 的解决方案。

所以你需要更多的方程来象征性地解决这个问题。

【讨论】:

  • 因为它是一个 3 维方程,它实际上是 3 个线性独立的方程 - 所以在不退化的情况下,只有一个解。您所描述的情况只有在 P 包含在 (P0,P1,P2) 三角形内时才有可能(想象一下当 t 等于 0 时会发生什么)。当然,任何一组方程都可以与特定数据线性相关,从而使问题受到约束。就像光线与平面的交点:通常只有一个解,除非光线平行于平面 - 然后有 0 个或无限多个解。这是否意味着符号形式无法解决?
  • 哦,好点...我不知道我在做什么梦。但是你有解决方案 - 只需将其表示为 3 个方程的系统并求解它 - 任何用于符号方程求解的软件(Matlab、Mathematica、Maple 等)都应该能够做到。我其实不知道 Matlab。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多