JavaScriptの数値計算ライブラリmathjsを使う(7) マンデルブロ集合を描く。このココログでも計算して図示できるようにしてみた。
今回はmath.jsを使うとはいうものの複素数の計算だけ(実部虚部に分けてもよかったけどせっかくなので)。
ソースコードはこちら。
結果はこちら。
テキストでも書いておきます。
<canvas class="canvasmandel" width="360" height="360" style = "background-color :black;"></canvas><br>
<label for "Cxmax">Cxmax</label>
<input type="text" value="1" id="Cxmax">
<label for "Cxmin">Cxmin</label>
<input type="text" value="-2.5" id="Cxmin"><br>
<label for "Cymax">Cymax</label>
<input type="text" value="1.75" id="Cymax">
<label for "Cymin">Cymin</label>
<input type="text" value="-1.75" id="Cymin"><br>
<button class ="ButtonMandel">計算</button>
<script src="https://unpkg.com/mathjs@11.4.0/lib/browser/math.js"></script>
<script>
'use strict'
const canvasmandel = document.querySelector('.canvasmandel')
const ctx = canvasmandel.getContext('2d')
const CxmaxInput = document.querySelector('#Cxmax')
const CxminInput = document.querySelector('#Cxmin')
const CymaxInput = document.querySelector('#Cymax')
const CyminInput = document.querySelector('#Cymin')
const ButtonMandel = document.querySelector('.ButtonMandel')
ButtonMandel.addEventListener('click', MandelCalc)
function MandelCalc() {
const Cxmax = parseFloat(CxmaxInput.value)
const Cxmin = parseFloat(CxminInput.value)
const Cymax = parseFloat(CymaxInput.value)
const Cymin = parseFloat(CyminInput.value)
const kmax = 200
const width = canvasmandel.width
const height = canvasmandel.height
ctx.clearRect(0, 0, width, height)
for (let i = 0; i <= width; i++) {
for (let j = 0; j <= height; j++) {
let C = math.complex(Cxmin + (Cxmax - Cxmin)*i/width, Cymin + (Cymax - Cymin)*j/height)
let z = math.complex(0, 0)
for (let k = 0; k < kmax; k++) {
z = math.add(math.square(z),C)
if (math.abs(z) > 4) {
const Xr = width * (math.re(C) - Cxmin)/(Cxmax - Cxmin)
const Yr = height * (math.im(C) - Cymax)/(Cymin - Cymax)
ctx.fillStyle = 'hsl(' + Math.floor(360 * Math.log10(k)/Math.log10(kmax)) + ',100%,50%)'
ctx.fillRect(Xr, Yr, 1, 1)
break
}
}
}
}
}
</script>
このココログでも表示できるようにしてみた。こちら。
過去のもの
JavaScriptの数値計算ライブラリmathjsを使う(1) まずは行列演算。LU分解で一次方程式を解き、逆行列と行列式を求める。このココログで直接計算できる機能も付けた。
JavaScriptの数値計算ライブラリmathjsを使う(2) 次は複素数演算。四則演算や平方根、べき乗、expなどが簡単にできる。このココログで直接計算できる簡易電卓を作ってみた。
JavaScriptの数値計算ライブラリmathjsを使う(3) Plotlyを併用して関数をグラフ表示する。ココログでもグラフ表示できるようになった。
JavaScriptの数値計算ライブラリmathjsを使う(4) 高速フーリエ変換(FFT)を計算してココログにplotlyでグラフ表示できるようにする。。
JavaScriptの数値計算ライブラリmathjsを使う(5) 複素行列の固有値・固有ベクトルを求める。ココログで計算できるようにした。
JavaScriptの数値計算ライブラリmathjsを使う(6) 特異値分解(SVD)、主成分分析(PCA)を計算してみる。このココログでも計算できるようにした。
« 今日は市長選挙+市議会議員補欠選挙で近所の小学校まで。 | トップページ | 「円周率πの任意の桁の値(Simon Plouffeによる)」をカシオの高精度計算サイトkeisan.casio.jpに自作式としてUP(50桁までしか計算できないけど...) »
「パソコン・インターネット」カテゴリの記事
- RF Weekly Digest (Codexで作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/6/7-6/14(2026.06.14)
- ゼロから作るDeep Learning 6 LLM編を買った。めちゃくちゃわかりやすい。事後学習がこんなに重要とは知らなかった。KVキャッシュって何やってるか等も。Interface誌の7月号特集が作りながら学ぶTransformer/LLMなので一緒に読みながらだとより理解が深まる。(2026.06.11)
- Gemma 4 QATがOllama経由で使えるようになっていた。そこで今度はGoogle Antigravity(Gemini 3.5 Flash)にローカルLLMでRF情報一週間分まとめて日本語で要約するアプリ(gemma4-26B-A4B QAT、DuckDuckGo Search、Flask使用)を作ってもらう。画面デザインはこっちがいいな。(2026.06.15)
- Gemma 4 QATがOllama経由で使えるようになっていた。そこでCodex(GPT-5.5)に、これまでいまいちだったローカルLLMでRF情報一週間分まとめて日本語で要約するアプリ(gemma4-26B-A4B QAT、DuckDuckGo Search、Flask使用)を作ってもらうと相当いい出来で使えそう。(2026.06.10)
- RF Weekly Digest (Gemini 3.5 Flash・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ)2026/5/31-6/7(2026.06.07)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2026年6月17日 Ericsson Mobility Report June 2026発行・5G契約数は31億件、3GPPが最初の6G-RAN研究承認、Nordicが忘れ物タグのプロトタイプを発表、アンリツがソフトウェア無線ソリューション発表など(2026.06.17)
- 高周波・RFニュース 2026年6月16日 Microwave JournalにアンリツのTensor VNA解説記事、6G Worldで6GのRF設計の重要さ解説記事、3GPPのシンガポール総会の様子、GSAがプライベートモバイルネットワーク調査など(2026.06.16)
- RF Weekly Digest (Codexで作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/6/7-6/14(2026.06.14)
- FIFAワールドカップ2026で使われているボールTriondaにはカタールの時と同様にKinexonのUWBモジュール(ICはQorvo)と慣性センサが入っているが、カタールが中央につるされて入っている感じなのがボールの裏側に貼りつくかたちで入るようになった。FCCでチェック。(2026.06.14)
- 高周波・RFニュース 2026年6月12日 アンリツがAI対応のTensor VNA発表、Qualcommが5G NR NTN解説、iFixitがTrump phoneを分解・やっぱりHTC U24 Proとほぼ同じ、6G Worldの3GPPミーティング解説記事など(2026.06.12)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2026年6月17日 Ericsson Mobility Report June 2026発行・5G契約数は31億件、3GPPが最初の6G-RAN研究承認、Nordicが忘れ物タグのプロトタイプを発表、アンリツがソフトウェア無線ソリューション発表など(2026.06.17)
- 高周波・RFニュース 2026年6月16日 Microwave JournalにアンリツのTensor VNA解説記事、6G Worldで6GのRF設計の重要さ解説記事、3GPPのシンガポール総会の様子、GSAがプライベートモバイルネットワーク調査など(2026.06.16)
- RF Weekly Digest (Codexで作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/6/7-6/14(2026.06.14)
- 高周波・RFニュース 2026年6月12日 アンリツがAI対応のTensor VNA発表、Qualcommが5G NR NTN解説、iFixitがTrump phoneを分解・やっぱりHTC U24 Proとほぼ同じ、6G Worldの3GPPミーティング解説記事など(2026.06.12)
- 高周波・RFニュース 2026年6月11日 QorvoがXバンドレーダ用フロントエンドモジュール発表、3GPPがRel.21のタイムライン発表、NI(Emerson)が雑音指数測定のウェビナー開催、MIPI A-PHYのSerDesが4社で相互運用性確認、Menlo Microが高信頼性ミリ波スイッチ発表など(2026.06.11)
« 今日は市長選挙+市議会議員補欠選挙で近所の小学校まで。 | トップページ | 「円周率πの任意の桁の値(Simon Plouffeによる)」をカシオの高精度計算サイトkeisan.casio.jpに自作式としてUP(50桁までしか計算できないけど...) »




コメント