2016-03-28 28 views
1

我有4個R4和他們的座標:如何在給定4分的Python中定義超平面?然後我如何定義4個超平面的交集(這應該是一個點)?

P1:[x1, y1, z1, w1] 
P2:[x2, y2, z2, w2] 
P3:[x3, y3, z3, w3] 
P4:[x4, y4, z4, w4] 

我現在該如何定義一個超平面出在Python這點的?

此外,由於我有4個超平面的方程我如何得到他們的交點(這應該是一個點)?

謝謝! O.

+0

它似乎相當易於推廣的方程通過三個點的平面https://en.wikipedia.org/wiki/Plane_(geometry)#Method_1四個維度。找到四個超平面的交集只是矩陣求逆。究竟是什麼造成了困難? –

回答

0

超平面方程。

Rn中的超平面可以被描述,給定非零常數K和一組係數 = {A_1 ... A_N},作爲點的集合X =(X_1 .. x_n ),該解方程

薩姆(A_N * x_n)= K

選擇k = 1時在R 4和與

X =(P1; P2; P3; P4)

您可以解決你的係數一個通過執行

X 一個 =

一個 = X^-1 *


第2部分是以上相同的。

具有4套方程

X一個 = K

屬於他們所有的點可以解決作爲

X = ķ'A^-1


在numpy的那:

import numpy as np 
def hyper4(p1,p2,p3,p4): 
    X=np.matrix([p1,p2,p3,p4]) 
    k=np.ones((4,1)) 
    a=numpy.matrix.dot(np.linalg.inv(X), k) 
    print "equation is x * %s = 1" % a 
    return a 

用法:

hyper4([0,0,1,1],[0,3,3,0],[0,5,2,0],[1,0,0,7]) 

而對於點

a1=hyper4(P1,P2,P3,P4) 
a2=hyper4(P5,P6,P7,P8) 
a3=hyper4(P9,P10,P11,P12) 
a4=hyper4(P13,P14,P15,P16) 

A=np.hstack([a1,a2,a3,a4]) 
k=np.ones((1,4)) 

x=numpy.matrix.dot(k, np.linalg.inv(A)) 
print "your point is %s" % x 
相關問題