如何求解符号非线性向量方程? (Matlab或其他)

时间:2011-07-13 14:45:14

标签: math equation solver

我正试图找到这个符号非线性向量方程的解决方案:

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应该只有一个定义明确的解决方案。

1 个答案:

答案 0 :(得分:1)

作为符号等式,这个有3个变量,因此无法有单一的解决方案。

想象一下,你选择了b和t的任何值。然后几乎在所有情况下你都可以解决问题,所以你会得到许多不同的解决方案。

如果你想在几何上思考,想象一下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共线。然后,您可以轻松获得任何解决方案。

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