a^2 + b^2 + c^2 = 1 を満たす組み合わせ

いつの間にか質問が変わっているけど.

Generating random numbers a, b, c such that a^2 + b^2 + c^2 = 1 – StackOverflow

単に質問の標題を満たす解は,回答にある様に,

import numpy as np

x = np.random.uniform(0, 1, 3) # random numbers in [0, 1)
x /= np.sqrt(x[0] ** 2 + x[1] ** 2 + x[2] ** 2)

array([ 0.68505635, 0.52279167, 0.5073329 ])
 
 
 

組み合わせが欲しい場合(例えばグリッドが欲しいとか),

「0 < x_1+x_2+x_3 0,x_2 > 0, x_3 > 0, dx=0.01」を満たす点

と同じ様にして書ける.

#Generating a, b, c such that a^2 + b^2 + c^2 = 1
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0.01, 1.01, 0.01)

ind1, ind2, ind3 = np.where(
    (0.99 < x[:, np.newaxis, np.newaxis]**2 + x[np.newaxis, :, np.newaxis]**2 + x[np.newaxis, np.newaxis, :]**2) 
    & (x[:, np.newaxis, np.newaxis]**2 + x[np.newaxis, :, np.newaxis]**2 + x[np.newaxis, np.newaxis, :]**2 < 1.01)
)

fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x[ind1], x[ind2], x[ind3])

FireShot Capture 212 - JupyterLab Alpha Preview - http___localhost_8888_lab

広告
カテゴリー: 未分類 パーマリンク

a^2 + b^2 + c^2 = 1 を満たす組み合わせ への1件のフィードバック

  1. ピンバック: 制約最適化問題の実現可能な領域を視覚化したい | 粉末@それは風のように (日記)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中