ウラムの螺旋(Ulam Spiral)をPythonとSympyで500万まで描いてみる。
ウラムの螺旋というのがある。
https://ja.wikipedia.org/wiki/%E3%82%A6%E3%83%A9%E3%83%A0%E3%81%AE%E8%9E%BA%E6%97%8B
数字をらせん状に置いていき、素数のみ塗っていくと構造(水平線、垂直線、対角線)が見えるというもの。
昔から知っているがそういや自分で描いたことなかった。理由は螺旋に置くいい感じのアルゴリズムが思いつかなかったから…
いい感じじゃなくて愚直にやるなら簡単か、と思ってやってみた。しかもPythonならSympyがあるので素数の判定も簡単。
コードはこんな感じ。
import numpy as np
import matplotlib.pyplot as plt
from sympy import isprime
n = 2302
a =np.zeros((n, n - 1),dtype=np.int64)
#中央
i = n//2 -1
j = n//2 -1
# 1, 2だけあらかじめ入力
a[i, j] = 0
i += 1
a[i, j] = 1
# 螺旋を描く
num = 3
s = 1
for t in range(n//2-1):
for k in range(s):
j -= 1
a[i, j] = isprime(num)
num += 1
s += 1
for k in range(s):
i -= 1
a[i, j] = isprime(num)
num += 1
for k in range(s):
j += 1
a[i, j] = isprime(num)
num += 1
s += 1
for k in range(s):
i += 1
a[i, j] = isprime(num)
num += 1
# 最後の部分
s -= 1
for k in range(s):
j -= 1
a[i, j] = isprime(num)
num += 1
plt.figure(figsize=(50,50))
plt.imshow(a.T, cmap="Greys")
print(num - 1)
|
では100万まで描いたとき。
500万まで描いたとき
対角線がよく見える。実は1億でも普通にできるが、ファイルサイズが大きくなりすぎるので今回はここまで。
« 高周波・RFニュース 2024年7月16日 O-RAN Allianceのミリ波アンテナホワイトペーパー、中国は世界初の6Gフィールドテストネットワークを作ったと主張、KYOCERA AVXが車載MLCC発表、SamsungのLPDDR5XがMediaTekに採用、EricssonとOPPOがクロスライセンス、など | トップページ | 高周波・RFニュース 2024年7月17日 Microwave Journal 7月号でアンテナチューニングデバイスのRF-MEMSスイッチによるテスト,IEEE Journal of Microwavesでミリ波の人体への影響レビュー,韓国がITUの6G標準化主導、5G americasのホワイトペーパーSpectrum Sharingなど »
「パソコン・インターネット」カテゴリの記事
- ユニクロとAkamaiのコラボTシャツに書かれているコードを解読してみる。base64でデコードするとbashのシェルスクリプトが出てきて実行すると♥PEACE♥FOR♥ALL♥FOR♥ALL♥PEACE♥FOR♥ALL♥という文字が色付きで正弦波で流れた。(2025.05.01)
- Google Gemini 2.5 Pro experimentalに高周波で使われるSパラメータのTouchstoneファイルを読み込んでプロットするC#コードを書いてもらうと570行のコードができて動いた。ファイルの拡張子snpのnでポート数を判別するが人間を信じないのでデータ数えて確認するのに笑った。(2025.04.21)
- Google ColabのJulia言語で搭載されているGeminiを使って一行もコードを書かずに2次元拡散方程式を差分法で計算してGIFアニメにする。次に同じように2次元波動方程式もやってもらう。(2025.04.09)
- Google ColabのJulia言語で主成分分析(PCA)をやってみる。データはおなじみアヤメ(iris)で、標準で特異値分解(SVD)が入っているのですぐできた。(2025.04.08)
- Google ColabのJulia言語でマンデルブロ集合、仏様のようなブッダブロ、燃える船・バーニングシップフラクタルを描いてみる。どれも計算が速い。(2025.04.04)
「学問・資格」カテゴリの記事
- 「数学がゲームを動かす! ゲームデザインから人工知能まで」を読んだ。面白い!パックマンのアルゴリズムやドラクエの計算式、ドンキーコングはベルレ法でジャンプ、カルマンフィルタ、遺伝的アルゴリズム、セガの線形代数本を書かれた方は理論物理出身など話題が豊富。(2025.05.13)
- 高周波・RFニュース 2025年5月12日 IEEE Microwave Magazineでミリ波ガラス基板・超伝導・液晶などの記事、Pythonの高周波ライブラリscikit-rfがv1.7.0に、Megamagneticsの希土類を使わないミリ波サーキュレータ、CoilcraftのRFインダクタホワイトペーパー(2025.05.12)
- 高周波・RFニュース 2025年5月9日 QorvoがスマートファクトリーにUWB利用の解説、KYOCERA AVXがUHF,VHF向け高方向性カプラ発表、Wireless Broadband Allianceが企業向けWi-Fi 7トライアル結果報告、NXPが第三世代イメージングレーダプロセッサ発表(2025.05.09)
- 高周波・RFニュース 2025年5月8日 6Gにはテラヘルツどころか7-14GHzも向いてないという意見、フィンランド企業が6G推進コンソーシアムRF ECO3発表、Infineonが7P7T内蔵7ch-LNA発表、SpirentがOctoboxにWi-Fi 6/7自動テスト追加(2025.05.08)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年5月12日 IEEE Microwave Magazineでミリ波ガラス基板・超伝導・液晶などの記事、Pythonの高周波ライブラリscikit-rfがv1.7.0に、Megamagneticsの希土類を使わないミリ波サーキュレータ、CoilcraftのRFインダクタホワイトペーパー(2025.05.12)
- 高周波・RFニュース 2025年5月9日 QorvoがスマートファクトリーにUWB利用の解説、KYOCERA AVXがUHF,VHF向け高方向性カプラ発表、Wireless Broadband Allianceが企業向けWi-Fi 7トライアル結果報告、NXPが第三世代イメージングレーダプロセッサ発表(2025.05.09)
- 高周波・RFニュース 2025年5月8日 6Gにはテラヘルツどころか7-14GHzも向いてないという意見、フィンランド企業が6G推進コンソーシアムRF ECO3発表、Infineonが7P7T内蔵7ch-LNA発表、SpirentがOctoboxにWi-Fi 6/7自動テスト追加(2025.05.08)
- 高周波・RFニュース 2025年5月2日 everythingRFが6GのeBook発行、FCCが37GHz帯の共用規則策定、Spirentが5Gクラウドネイティブについてレポート、ローデ・シュワルツが高速差動伝送の測定について解説、Qualcommが2025Q2の決算発表(2025.05.02)
« 高周波・RFニュース 2024年7月16日 O-RAN Allianceのミリ波アンテナホワイトペーパー、中国は世界初の6Gフィールドテストネットワークを作ったと主張、KYOCERA AVXが車載MLCC発表、SamsungのLPDDR5XがMediaTekに採用、EricssonとOPPOがクロスライセンス、など | トップページ | 高周波・RFニュース 2024年7月17日 Microwave Journal 7月号でアンテナチューニングデバイスのRF-MEMSスイッチによるテスト,IEEE Journal of Microwavesでミリ波の人体への影響レビュー,韓国がITUの6G標準化主導、5G americasのホワイトペーパーSpectrum Sharingなど »
コメント