・Pythonの高周波用ライブラリ scikit-rfを使う
・Visual C#で数値計算ライブラリ Math.NET numericsを使う(Visual Basic版もあり)
・高周波エンジニアのためのAI・機械学習入門
・JavaScriptの数値計算ライブラリmath.jsを使う
・カシオの高精度計算サイトに投稿した自作式一覧
・Pythonの高周波用ライブラリ scikit-rfを使う
・Visual C#で数値計算ライブラリ Math.NET numericsを使う(Visual Basic版もあり)
・高周波エンジニアのためのAI・機械学習入門
・JavaScriptの数値計算ライブラリmath.jsを使う
・カシオの高精度計算サイトに投稿した自作式一覧
前々回はピタゴラスの三体問題という全員がどこかに飛んで行ってしまうものをやってみた。
今回は周期解。実はもう数百万とか解が見つかっているそうだが、まずは一番簡単で有名な8の字解。
前々回と初期値と質量が違うだけなのでコードは省略。こちらに初期値と質量の値があります。
Python+Scipyでルンゲクッタ8次のDOP853(Dormand Prince)を使う(その7) 三体問題の周期解いろいろ(1) 8の字解
そして結果の動画。
お互い追いかけあっているようで面白い。
次は別の周期解でやってみる。
・Microwave Journalでテラヘルツデバイス製造解説
https://www.microwavejournal.com/publications/1
スペシャルフォーカスはケーブル&コネクタ。
https://www.microwavejournal.com/publications/1/editions/348
・IgnionのRF、アンテナ向けAIツールOxionが2.0に
・TIが1.38mm²の超小型MCU発表
・IntelのCEOはLip-Bu Tanに
「このミステリーがすごい!」大賞を取ったということで本屋さんで平積みになっていたのを買ってようやく読めた。
アマゾンリンク:https://amzn.to/41whbxT
連作短編5作からなる小説で、あらすじはこれ。
「大学一年生の市倉小春は漫画家を目指しつつ、大阪府豊中市にあるパン屋〈ノスティモ〉でアルバイトをしていた。あるとき、同じパン屋で働いている親友の由貴子に、一緒に行くはずだったライブビューイングをドタキャンされてしまう。誘ってきたのは彼女のほうなのにどうして?疑問に思った小春は、彼女の行動を振り返り、意外な真相に辿りつく……。 」
とにかく豊中付近は私もよく知っているところなので親近感。阪急オアシスが出てきたときは笑った。もちろん阪急電車も出てくる。
解く謎がちょっとしたもので、それもちょっと強引?と思うのもあったがこれはそういうことを楽しむ話ではなくて、柔らかい空気感とか、雰囲気、登場人物たちの心情、そしてパンを楽しむお話で結構面白かった。選考理由で人柄ならぬ小説柄がいい、というのが出てたのはなるほどと納得。人が死なないミステリが読みたい方はぜひ。
・NordicとQorvoがAliroとMatterのリファレンスアプリケーション提供
Nordic
Qorvo
・TSMCとMediaTekがパワーアンプと電源管理ユニット統合
・Silicon Labsが超小型Bluetooth Soc
Silicon Labs Unveils BG29: The Future of Bluetooth® LE in Miniature Devices
・ QuectelがWi-Fi/BTモジュール発表
Quectel introduces FCM363X Wi-Fi 6 and Bluetooth 5.3 module for high-performance short-range connectivity
今回は千葉逸人さんが中二病用語と言っていたこれをやってみる。
詳しくはスカラーペディアに。
この式を計算してます。
早速動画から。
ぐるぐる回っていたと思ったら突然広がって戻るのが面白い。スカラーペディアに出ていた図ともよく合ってる。
ソースコードはこちら。
using UnityEngine;
using System;
using System.Collections.Generic;
using Microsoft.Research.Oslo;
using System.Linq;
public class MathNET05 : MonoBehaviour
{
List<float> x0 = new List<float>();
List<float> x1 = new List<float>();
List<float> x2 = new List<float>();
int count;
int n;
void Start()
{
double t0 = 0.0;
double tmax = 1000.0;
n = 20000;
double dt = tmax / n;
var sol = Ode.RK547M(
0,
new Vector(0.012277918, -2.356078578, 0.018241293),
(t, x) => Bluesky(t, x),
new Options
{
AbsoluteTolerance = 1e-12,
RelativeTolerance = 1e-12
});
var points = sol.SolveFromToStep(t0, tmax, dt).ToArray();
n = points.Length;
count = 0;
foreach (var s in points)
{
x0.Add(Convert.ToSingle(s.X[0]));
x1.Add(Convert.ToSingle(s.X[1]));
x2.Add(Convert.ToSingle(s.X[2]));
}
}
void Update()
{
if (count < n)
{
transform.position = new Vector3(x2[count], x1[count], x0[count]);
}
count += 5;
}
Vector Bluesky(double t, Vector x)
{
double[] xdot = new double[3];
double myu = 0.456;
double eps = 0.0357;
xdot[0] = x[0] * (2.0 + myu - 10.0 * (x[0] * x[0] + x[1] * x[1]))
+ x[2] * x[2] + x[1] * x[1] + 2.0 * x[1];
xdot[1] = -x[2] * x[2] * x[2] - (1 + x[1]) * (x[2] * x[2] + x[1] * x[1] + 2.0 * x[1])
- 4.0 * x[0] + myu * x[1];
xdot[2] = (1 + x[1]) * (x[2] * x[2]) + x[0] * x[0] - eps;
return new Vector(xdot);
}
}
|
・iFixitが任天堂Alarmoを分解、なんと24GHzセンサ積んでる!
Adafruitsと共同で解析している。うごきセンサーは要するにミリ波レーダー。
型番からすると(SC1233A)Socionextのもの。
FCCでの検索結果
https://fcc.report/FCC-ID/BKECLO001
・Next G Allianceが6Gに向けたデジタルツインとFWAのホワイトペーパー発行
・Qorvoが統合型UWB SoC発表
・SemtechがLora、u-bloxとTelitがGNSSモジュール発表
・3GPPが韓国で6Gワークショップ開催
・パナソニックのスマートホーム用モジュールにNordic nRF54L15が採用
・QuectelがQualcomm ICを使ったスマートモジュール発表
・TDKがMnZnフェライト材料2種発表
・QualcommがEdge Impulseを買収
Google ColabでJuliaが使えるようになっていたということで普及しそう。しかし私は全然いじったことがない…
この機会にちょっと触ってみよう。とりあえず公式サイトのマニュアルをペラペラと読んで5%くらいは分かった。
任意精度演算がデフォルトで可能なのを知ったので、最近うちのブログによくアクセスがあるタッパーの自己言及式をやってみる。big(数)としただけで使えるのは便利。ただ途中で改行するとエラーになったので(括弧の中なのに?)一行が長い…
コード:
using Plots
setprecision(BigFloat, 2000)
k = big(960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719)
nx = 106
ny = 17
z = zeros(Int8, ny, nx + 1)
for i in 1:nx+1
for j in 1:ny
x = i - 1
y = k + j - 1
f = floor(floor(y / 17.0) * 2^(-17.0 * floor(x) - (floor(y) % 17)) % 2)
if f > 1/2
z[ny + 1 - j, nx + 2 - i] = 0
else
z[ny + 1 - j, nx + 2 - i] = 1
end
end
end
heatmap(z, size=(1300,200))
|
結果:
一瞬でできるな。
(過去のもの)
タッパーの自己言及式をPari/GPとExcelで描いてみる。
さて今回は非線形最小二乗法。
こちらを移植したもの。
using UnityEngine;
using MathNet.Numerics;
using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.Optimization;
using System;
public class MathNETController : MonoBehaviour
{
public GameObject PointsPrefab;
GameObject line;
Vector<double> x;
Vector<double> y;
float scale;
int n;
int count;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
var obj = ObjectiveFunction.NonlinearModel(OptimizeFunction, Gradient, Xdata, Ydata);
var solver = new LevenbergMarquardtMinimizer();
var result = solver.FindMinimum(obj, InitialValue1);
x = Vector<double>.Build.DenseOfArray(Generate.LinearSpaced(1000, 1.0, 15.0));
y = OptimizeFunction(result.MinimizingPoint, x);
line = GameObject.Find("Line");
scale = 50.0f;
n = x.Count;
count = 0;
for (int i = 0; i < Xdata.Count; i++)
{
GameObject point = Instantiate(PointsPrefab);
point.transform.position = new Vector3((float)Xdata[i], Convert.ToSingle(Ydata[i]/scale), 0f);
}
}
// Update is called once per frame
void Update()
{
if (count < n) {
line.transform.position = new Vector3((float)x[count], Convert.ToSingle(y[count] / scale), 0f);
count++;
}
}
Vector<double> Xdata = Vector<double>.Build.DenseOfArray(new double[] {
1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00, 10.00,
11.00, 12.00, 13.00, 14.00, 15.00
});
Vector<double> Ydata = Vector<double>.Build.DenseOfArray(new double[] {
16.08, 33.83, 65.80, 97.20, 191.55, 326.20, 386.87, 520.53, 590.03, 651.92,
724.93, 699.56, 689.96, 637.56, 717.41
});
Vector<double> InitialValue1 = Vector<double>.Build.DenseOfArray(new double[] { 100, 10, 1, 1 });
Vector<double> OptimizeFunction(Vector<double> p, Vector<double> x)
{
var y = Vector<double>.Build.Dense(x.Count);
for (int i = 0; i < x.Count; i++)
{
y[i] = p[0] / Math.Pow(1.0 + Math.Exp(p[1] - p[2] * x[i]), 1.0 / p[3]);
}
return y;
}
private Matrix<double> Gradient(Vector<double> p, Vector<double> x)
{
var prime = Matrix<double>.Build.Dense(x.Count, p.Count);
for (int i = 0; i < x.Count; i++)
{
prime[i, 0] = 1.0 / Math.Pow(1.0 + Math.Exp(p[1] - p[2] * x[i]), 1.0 / p[3]);
prime[i, 1] = -p[0] * Math.Exp(p[1] - p[2] * x[i]) /
(p[3] * Math.Pow(1.0 + Math.Exp(p[1] - p[2] * x[i]), 1.0 / p[3] + 1.0));
prime[i, 2] = p[0] * x[i] * Math.Exp(p[1] - p[2] * x[i]) /
(p[3] * Math.Pow(1.0 + Math.Exp(p[1] - p[2] * x[i]), 1.0 / p[3] + 1.0));
prime[i, 3] = Math.Log(1.0 + Math.Exp(p[1] - p[2] * x[i])) * p[0] /
(p[3] * p[3] * Math.Pow(1.0 + Math.Exp(p[1] - p[2] * x[i]), 1.0 / p[3]));
}
return prime;
}
}
|
結果の動画。計算結果を玉が軌跡を描きながら動く…
・NokiaがAIネイティブ6Gを解説
・エッジAIなどの基板についてのeBook
・高速FPCのインピーダンス制御記事
・ヒロセ電機のミリ波同軸コネクタ
・GSAの5G RedCapレポート
・Rohmが機能回路サイト公開
https://www.rohm.co.jp/solution/function
・u-bloxのcm単位精度のGNSS受信機
やはりここはIMAXで観ようとやってきた。
ポストカードとシールもらった。
タイトルが出るところで驚いたというのはDune方式だったということ!これ全然事前情報なかったけれど、別に隠さなくていいんじゃないか。
それはともかく2人とも歌うまいなーと小並感で感心。アリアナ・グランデは当然かもしれないが、シンシア・エリヴォもめちゃくちゃうまい。
ダンスのシーンも多く、しかもラストにはアクションまで。映像美もすごい。
そしてエルファバが気の毒で気の毒で感情移入してしまう。しかし2人に友情が生まれ、そして別れ…のところでは本当に泣ける話に。
とにかくよくできた脚本で本当に面白い。劇団四季のも観たことないし、完全に情報なしで観たのもよかった。
客の入りもかなりよかったし、ヒットするな。
ところで豹?が黒板で計算していたのは特殊相対性理論だった。
最近のコメント