2016-10-07 5 views
3

Juliaには簡単な問題があります。次元nのn点を通過する超平面の方程式を見たいと思います。それを行う簡単な方法はありますか?私は方程式の線形システムを解いていましたが、非特異的である可能性があります。この場合、Juliaはエラーを返します。 Juliaで方程式のパラメトリックまたは非特異系を解く方法はありますか?Juliaを使ってn-dimのn点を通る超空間の方程式を解く

例として、3d点[1 0 0]、[0 0 1]および[1 0 1]を考える。 係数のベクトル[0 1 0 0]を使ってy = 0を解としてしたいと思います。セージで

a,b,c,d = var('a b c d') 
f1 = a + d 
f2 = a + c + d 
f3 = c + d 
solve([f1==0,f2==0,f3==0],a,b,c,d) 

[[a == 0, b == r1, c == 0, d == 0]] 

を与えるあなたの助けのためにありがとうございました。

+0

これはパッケージを使用していますか? SymPy? sage noの –

+0

はデフォルトのソルバに過ぎません。 ジュリアでは、私はSymPyについて読んでいますが、私は式のシステムを解くことができません – user16296

答えて

4

私は問題を完全に理解していないが、問題上記の我々フレーズは係数行列とベクトルを使用している場合、ジュリアは

julia> [1 0 0 1; 1 0 1 1; 0 0 1 1] \ [0; 0; 0] 
4-element Array{Float64,1}: 
-0.0 
    0.0 
-0.0 
-0.0 

は、ある特定のソリューションと

julia> nullspace([1 0 0 1; 1 0 1 1; 0 0 1 1]) 
4×1 Array{Float64,2}: 
    3.92523e-17 
    1.0   
    0.0   
-3.92523e-17 

を取得することができます解空間の基底を得る。 (ここでの数値問題はちょっと残念ですが、理想的には[0; 1; 0; 0]にする必要があります。)[a; b; c; d] = [0; 0; 0; 0] + r*[0; 1; 0; 0]と読んだ場合、それは基本的に問題の解決策です。

行列がランク不足の場合、ポイントは同一線上にあるので、\から特定の解を得ることができますが、nullspaceはそのベクトルを1つだけ持つベースを返します。

+0

あなたの返事に感謝します。私は 'nullspace'がいくつかの適切な丸めでトリックを行うと思います。 – user16296

+0

残念ながら、マシンエラーは私が思ったよりも不安定であるようです。 何らかの理由で、スペースの次元nが大きくなる(〜= 400)とき、n非親和性の依存点は次元2の零空間を持ちますが、これは間違っています。 問題を解決する方法は、次のとおりです。この超平面は、シンプレックスのファセットサポートです。次元nにn + 1(親和的に独立した)点が与えられた場合、ポリメイクのように、シンプレックスのH表現を得る方法はありますか?私はちょっと調べたが、もしcddアルゴリズムがjuliaで実装されているかどうかはわからない...助けてくれてありがとう – user16296

1

これを行う1つの方法は、ポイントの共分散行列の最小固有値の固有ベクトルを見つけることです。これは計算上少し重いです。

超平面を単位ベクトルnとスカラーdで表すことができます。超平面の点は、n '* x + d = 0のxです。点x n' * x + dは、平面からのxの距離です。私たちは、最小二乗法による超平面を見つけることができます。

Xが[] k個付与されたポイントであれば、我々はn個求め、nは考える

Q(n,d) = Sum{ i | sqr(X[i]'*n+d)}/k 

をminimseするdは、最小化dが-Xbar.nなり、 Xバーは、Xの平均であるので、我々は、同様にこのDプラグと

Q(n) = Sum{ i | sqr(x[i]'*n)}/k = n'*C*n 

x[i] = X[i] - Xbar 
C = Sum{ i | x[i]*x[i]'}/k -- the covariance of the data 

このQ wを最小化することができる場合Cの最小固有値であるnによって最小化される。

従って、ドリルは:Xbarを計算し、C.Diagonalise C(U * D * U 'と言う) Dは(i、i)であり、nのi番目の列をnとする)を選択し、最後にdを-n '* Xbarとして計算する。

ここでの唯一の難しさは、例えば、すべての点がn-2次元平面上にある場合など、Dの最小値が数多くあることです。

関連する問題