% brew update% brew install python@3.12 sqlite3 llvm@18% python3.12 -m venv venv_mathics3% source ~/venv_mathics3/bin/activate> python -m pip install -U pip setuptools wheel> pip install Mathics3> mathics3OK Quit[]> pip install mathicsscript> mathicsscriptMathicscript: 10.0.0, Mathics3 10.0.1on CPython 3.12.13 (main, Mar 3 2026, 12:39:30) [Clang 21.0.0 (clang-2100.0.123.102)]Using:SymPy 1.14.0, mpmath 1.3.0, numpy 2.4.4cython Not installed,No matplotlib installed,Asymptote version 3.09Copyright (C) 2011-2026 The Mathics3 Team.This program comes with ABSOLUTELY NO WARRANTY.This is free software, and you are welcome to redistribute itunder certain conditions.See the documentation for the full license.Quit by evaluating Quit[] or by pressing CONTROL-D.In[1]:=> python -m ipykernel install --user --name mathics3-py --display-name "Python + Mathics3"> jupyter lab(1) カーネルとして Python + Mathics3 を選択する。(2) ノートブックの最初のセルで以下を実行する。%load_ext mathics3_kernel.frontend.jupyter
芥川龍之介が「蜘蛛の糸」を発表して百年。高二の秋の文化祭,クラスの仮装行列のテーマが 蜘蛛の糸だった。お釈迦様の極楽タワーの竹を近所から切り出し,地獄の焔と煙の絵を描いた。犍陀多に続いて蜘蛛の糸(登山部の赤いザイル)に群がる地獄の亡者だったころ。
2026年5月30日土曜日
Mathics(3)
2025年8月18日月曜日
積分(3)
2025年7月24日木曜日
パデ近似(3)
2025年4月23日水曜日
PLUコード
① PLU コード(番号)通常バラで流通する野菜や果物などには、流通段階での商品管理を行うため、4桁または 5 桁の PLU コード(Price Look-Up code)が付されることがある。この番号は、野菜や果物の種類を示すもので、種類によっては大きさ(重さ)などでさらに細分される場合もある(基本的にはどの生産者が出荷する場合でも同じ種類であれば同じ番号)。この番号を管理しているのは、IFPC(International Federation For ProduceCoding)という団体で、米国、カナダのほか、南米等でも用いられている。番号の使用は任意であるが、卸売業者やスーパーマーケットなどは商品管理のために導入しているところが多く、IFPC によれば、全米に流通する 8 割の野菜や果物にはこの番号が添付されているのではないかということであった(2004 年 10 月 31 日現在)。PLU コードは、通常、出荷する生産者(団体)または卸売業者がシールを作製し、商品を流通させる際に個々の個体に貼り付けるか、商品が梱包された箱に商品の個数分のシールを同封し、小売店等で個別に貼り付けることが多いが、小売店でシールを作製する場合もある。番号は、通常4桁で、オーガニック(有機)の場合にはこの 4 桁の数字の頭に“9”を、遺伝子組換えの場合は“8”を加えることとされている。IFPC は、PLU コードのシールを作製する場合の注意事項として以下の事項を推奨している。○ できるなら枠で囲うようにし、数字の頭には“#”のマークをつける。○ 読みやすさの観点から、個々の数字は 14 ポイント以上の大きさで、大きければ大きいほどよい。文字の幅は、高さの 3 分の1以下であってはならない。数字は背景と対照的な色合いとすること(理想は、白地に黒の数字)。
2024年11月8日金曜日
火星19
2024年9月22日日曜日
OpenAI o1(4)
Q(koshix):$a_i \ (i=1 ... n) $が正の整数であり,$n$個の$a_i$の組 $(a_1, a_2, ..., a_n)$ 最大公約数は1であるとする。$a_1/a_2=k_1,\ 2*a_2/a_3=k_2, \ 3*a_3/a_4=k_3,\ ... (n-1)*a_{n-1}/a_n \\ =k_{n-1}, n*a_n/a_1 = k_n $において,$(k_1, k_2, ... k_n)$ は整数となって,$k_1*k_2*k_3*...*k_{n-1}*k_n = n!$ が成り立つ。
$n$を与えたときに,上記の条件を満足する$(k_1, k_2, ..., k_n)$ の組の数 $b_n$ を求める Julia プログラムを作成せよ。このプログラムを用いて,$ b_1, b_2, ..., b_8$ の値を計算せよ。A(OpenAI o1-mini 思考時間29秒):以下に、与えられた条件を満たす $(k_1, k_2, ..., k_n)$の組の数 $b_n$ を計算する Julia プログラムを示します。このプログラムは、各 $n$に対して $n!$ の素因数分解を行い、各素数の指数を用いて組み合わせの数を計算します。アプローチ1.素数の列挙:各 $n$ に対して,$n!$ の素因数分解に必要な素数を列挙します。2.指数の計算:各素数 $p$ について,$n!$ 中の $p$ の指数 $e_p$ を計算します。これは,$\lfloor \dfrac{n}{p} \rfloor + \lfloor \dfrac{n}{p^2} \rfloor +\lfloor \dfrac{n}{p^3} \rfloor +\cdots $で求められます・3.組み合わせの計算:各素数 $p$ に対して,$\binom{n+e_p-1}{e_p}$を計算します。これにいおり,$e_p$ 個の指数を $k_i$ に分配する方法の数が求まります。4.総数の計算:すべての素数についての組み合わせの数を掛け合わせることで、総数 $b_n$ を得ます。Julia プログラム(修正版)以下のJuliaプログラムは、上記のアプローチに基づいて $b_n$ を計算します。# Primes.jl パッケージのインポートimport Primes: primes# n! における素数 p の指数を計算する関数function exponent_in_factorial(n::Int, p::Int)::Intexponent = 0power = pwhile power <= nexponent += div(n, power)power *= pendreturn exponentend# b_n を計算する関数function calculate_b(n::Int)::Intif n == 0return 1end# n >= 2 の場合のみ素数を取得if n >= 2primes_list = Primes.primes(2, n)elseprimes_list = Int[] # 空の配列endtotal = 1for p in primes_liste_p = exponent_in_factorial(n, p)# 組み合わせの計算total *= binomial(n + e_p - 1, e_p)endreturn totalend# b_1 から b_8 までを計算して表示for n in 1:8bn = calculate_b(n)println("b_$n = $bn")endプログラムの説明・exponent_in_factorial 関数:与えられた $n$ と素数 $p$ に対して,$n!$ の中の $p$ の指数を計算します。・calculate_b 関数:与えられた $n$ に対して,$b_n$ を計算します。まず,$n$ 以下の素数を取得し、各素数についての組み合わせの数を計算して掛け合わせます。・メインループ: $n=1$ から $n=8$ までの $b_n$ を計算し,結果を表示します。実行結果上記のプログラムを実行すると、以下のように $b_1$ から $b_8$ までの値が得られます。$b_1 = 1$$b_2 = 2$$b_3 = 9$$b_4 = 80$$b_5 = 875$$b_6 = 15876$$b_7 = 288120$$b_8 = 7907328$これにより、各 $n$ に対して条件を満たす $(k_1, k_2, ..., k_n)$ の組の数 $b_n$ を効率的に計算することができます。
f[n_] := FactorInteger[n!]g[n_, k_] := Binomial[n + k - 1, k]h[n_] :=Module[{factors = f[n], product = 1},Do[product *= g[n, pair[[2]]], {pair, factors}];product]a = Table[h[k], {k, 1, 8}]ListPlot[Log[a]]
{1, 2, 9, 80, 875, 15876, 288120, 7907328}
2024年8月6日火曜日
26
Q(koshix):Mathematicaで f[k_]:=Sum[n^k/2^n, {n, 1, Infinity}] と定義したとき f[k]の一般式を与えてください。
A(Perplexity PRO):Mathematicaで定義された関数 f[k]:=Sum[n^k/2^n, {n, 1, Infinity}] の一般式は以下のように与えられます:f(k)=Li_−k (1/2)。ここで、Li_−k (1/2) はポリログ関数(polylogarithm function)を表しています。この結果は、無限級数 ∑_{n=1}^∞ n^3/2^n の閉形式解を示しています。ポリログ関数は、このような形の無限級数を表現するのに適した特殊関数です。ポリログ関数 Li_−k (1/2)は一般に次のように定義されます: Li_s (z)=∑_{n=1}^∞ n^s/z^n この場合、s=−k および z=1/2 となっています。この一般式は、任意の実数 k に対して成り立ちます。特定の k の値に対しては、より簡単な形に簡略化できる場合もありますが、一般的にはこのポリログ関数の形で表現されます。この結果は、複雑な無限級数を単一の特殊関数で表現できることを示しており、数学的に非常に興味深い結果です。
正しいのだけれど,単に名前がついただけなので理解が深まらない。ChatGPT-4oに別の聞き方をしてみよう。
Q(koshix):高校数学までの知識で Σn=1,∞ n^3/2^n の値を導出する方法を教えてくださいA(ChatGPT-4o):(もろもろ略)Q(koshix):いい線いっているようなのですが,ちょっと違うのではないですか。A(ChatGPT-4o):(もろもろ略)Q(koshix):惜しいですね,もう一息ではないでしょうか。A(ChatGPT-4o):(もろもろ略)しかし、ここでの正確な計算をすると、最終的には ではなく、 の値は正しくは です。
2024年1月20日土曜日
都道府県の長さ
中核都市の金沢と被害が激しい輪島は東京と水戸くらい離れていると石川県の広さを説明する投稿を先日見かけたが、石川県の広さは34~35位とランキング下位なので、むしろ東京や大阪が都道府県としては異様に狭いと認識すべきなのだろう
a=zeros(Int64,1000001,2)function ju(a,m,n)k = 0for i in 1:mfor j in 1:nk = k + 1a[k,1] = ia[k,2] = jendendendfunction su(a,m,n)mn = m*nsum = 0for i = 1:mnfor j = i:mnsum = sum + sqrt((a[i,1]-a[j,1])^2+(a[i,2]-a[j,2])^2)endendreturn sum/binomial(mn,2)endm=800n=800ju(a,m,n)@time su(a,m,n)/m
2023年12月2日土曜日
円軌道はむずかしい
g = 0.0098; R = 6350; τ = 30; τs = τ*27; τt = 250; p = 0.85;a = 0.0446; b = 0.1445 a; s = 45 Degree; T = 15400;fs[t_] := 0.3*ArcTan[r[t]*r'[t]/ h[t]]fr[t_, τ_] := a*Sin[s]*HeavisideTheta[τ - t] +b*Sin[fs[t]]*HeavisideTheta[t-τs-τ]*HeavisideTheta[τ+τs+τt-t]ft[t_, τ_] := a*Cos[s]*r[t]*HeavisideTheta[τ - t] +b*Cos[fs[t]]*r[t]*HeavisideTheta[t-τs-τ]* HeavisideTheta[τ+τs+τt-t]fm[t_, τ_] := -p/(τ - p*t)*HeavisideTheta[τ - t]sol = NDSolve[{r''[t] == -fm[t, τ]*r'[t]+h[t]^2/r[t]^3 -g R^2/r[t]^2 +fr[t, τ],r[0] == R, r'[0] == 0,h'[t] == -fm[t, τ]*h[t] + ft[t, τ],h[0] == 2930 + 0*Sqrt[g] R^(3/2)}, {r, h}, {t, 0, T}]f[t_] := r[t] /. sol[[1, 1]]d[t_] := h[t] /. sol[[1, 2]]Plot[{6350, f[t]}, {t, 0, T}]Plot[{f[t + 1] - f[t], d[t]*R/f[t]^2, d[t]/f[t]},{t, 0, T}, PlotRange -> {-5, 15}]
2023年5月27日土曜日
出生時の体重分布
In[1]:= f[\[Mu]_, \[Sigma]_] :=Integrate[ Exp[-(x - \[Mu])^2/(2*\[Sigma]^2)]/Sqrt[2*Pi*\[Sigma]^2], {x, -Infinity, Infinity}]In[2]:= f[29.62, 3.58]Out[2]= 1. - 8.59978*10^-15 IIn[3]:= g[\[Mu]_, \[Sigma]_] :=Plot[Exp[-(x - \[Mu])^2/(2*\[Sigma]^2)]/Sqrt[2*Pi*\[Sigma]^2],{x, 0, 20 \[Sigma]}, PlotRange -> {0, .12}]In[4]:= g1 = g[29.62, 3.58];In[5]:= g2 = g[30.47, 3.90];In[6]:= Show[g1, g2]Out[6]= -Graphics-In[7]:= Plot[{PDF[NormalDistribution[29.62, 3.58], x] // Evaluate,PDF[NormalDistribution[30.47, 3.90], x] // Evaluate},{x, 0, 50}, Filling -> Axis, PlotRange -> {0, 0.13}]Out[7]= -Graphics-
2023年5月7日日曜日
折り紙で3次方程式(2)
2023年4月23日日曜日
ブランコの物理
人間の体を3つの線質量要素で表現し,上半身と下肢の角度をそれぞれ変数として導入したラグランジアンを考えている。このとき,これらの身体の角度については,何通りかのあらかじめ定められたモデルの周期運動だとしている。遊具のブランコは、ブランコ本体とそれを揺らす人間からなる動的な結合振動子系である。本研究では、上半身の自然な動きの初期段階がブランコの連続的なポンピングに与える影響を分析するモデルを提案し、3種類の長さのブランコで10人の参加者が実際にポンピングした際の運動データを用いて検証する。研究の結果から、スイングが垂直位置(中点)にあり、振幅が小さい時に前方へ移動する際、最大リーンバックの初期段階が発生し、最大振幅のポンピングが予測された。振幅が大きくなるにつれて、最適な初期段階はサイクルの初期段階、すなわちスイングの軌道の後端に向かって徐々に移動する。モデルの予測に従って、参加者全員が、スイングの振幅が大きくなるにつれて上半身の動作の初期位相が早くなることが確認された。この結果から、スイングする人は、上半身の動作の頻度と初期位相を適切に調整することで、ブランコを効果的にポンピングすることができると考えられる。
Do[s0 = Pi/6*0; w0 = Pi; m1 = 1; m2 = 1;λ = Pi/12; ν = 0.05/Pi; ε = 0.95 + i*0.01; δ = Pi/8*0;m[t_] := (m1 + m2)/20 * Cos[ε w0 t + δ];sol = NDSolve[{(m1 + m2) s''[t] == -w0^2 *( (m1 + m[t]) * (Sin[s[t] + λ + ν * s'[t])+ (m2 - m[t]) * (Sin[s[t] - λ + ν * s'[t])),s[0] == s0, s'[0] == 0}, s, {t, 0, 60}];s /. sol[[1]];f[t_] := s[t] /. sol[[1]];g[t_] := s'[t] /. sol[[1]];h[i] = Plot[f[t], {t, 0, 30}, AspectRatio -> 1/2,PlotRange -> {-0.6, 0.6}, PlotStyle -> Hue[0.08*i]],{i, 0, 7}]
2023年3月21日火曜日
凹面鏡
2023年2月23日木曜日
wolframscript
#!/usr/local/bin/wolframscript
(* ::Package:: *)
n=ToExpression[$ScriptCommandLine[[2]]]
Print[RandomInteger[{1,6},n^2]]
2023年2月19日日曜日
弾道ミサイルの軌道(6)
g = 0.0098; R = 6350; τ= 86; p = 0.75;a = 0.0446; s = 86.5 Degree; T = 3960;(* g = 0.0098; R = 6350; τ = 87; p = 0.75; a= 0.0446; s = 45 Degree; T = 5100; *)fr[t_, τ_] := a*Sin[s]*HeavisideTheta[τ - t]ft[t_, τ_] := a*Cos[s]*r[t]*HeavisideTheta[τ - t]fm[t_, τ_] := -p/(τ - p*t)*HeavisideTheta[τ - t]sol = NDSolve[{r''[t] == -fm[t, τ]*r'[t] + h[t]^2/r[t]^3 -g R^2/r[t]^2 + fr[t, τ], r[0] == R, r'[0] == 0,h'[t] == -fm[t, τ]*h[t] + ft[t, τ], h[0] == 0}, {r, h},{t, 0, T}]f[t_] := r[t] /. sol[[1, 1]]d[t_] := h[t] /. sol[[1, 2]]Plot[{6350, f[t]}, {t, 0, T}]Plot[{f[t + 1] - f[t], d[t]*R/f[t]^2, d[t]/f[t]},{t, 0, T}, PlotRange -> {-4, 8}]tyx[T_] := {T, f[T] - R, NIntegrate[R d[t]/f[t]^2 , {t, 0, T}]}v[T_] := Sqrt[(f[T] - f[T - 1])^2 + (R d[T]/f[T]^2)^2]{tyx[T], v[T]/0.340}g0 = ParametricPlot[{NIntegrate[R d[t]/f[t]^2 , {t, 0, tt}],f[tt] - R}, {tt, 0, T}]
燃焼時間τが86秒,燃料重量比が0.75,燃焼加速度が 0.0446km/s^2,投射角が86.5度である。これで飛行時間を与えると,飛行距離と最高高度と落下時速度が概ね再現できる。万有引力は距離の2乗に反比例し,コリオリ力や空気抵抗は無視,地球の形を考慮して2次元極座標で質量が変化する1段ロケットの微分方程式を解いている。
燃焼時間τを87秒にして,投射角を45度にすれば,飛行時間が5100秒で飛行距離は14,600km,落下時速度はマッハ24になる。このときペイロードはほとんど変化させていない。燃料重量比は同じで燃焼時間を1秒のばしただけだ。
2022年11月29日火曜日
軸対称電荷分布(5)
2022年11月26日土曜日
軸対称電荷分布(3)
2022年11月24日木曜日
軸対称電荷分布(2)
v[r_] := -3*NIntegrate[s^2/(r*HeavisideTheta[r-s] + s*HeavisideTheta[s-r]), {s, 0, 1}]Plot[v[r], {r, 0, 5}, PlotRange -> {0, -1.6}]
2022年11月22日火曜日
Mathics(2)
Mathics 5.0.2on CPython 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]using SymPy 1.10.1, mpmath 1.2.1, numpy 1.23.4Copyright (C) 2011-2022 The Mathics Team.This program comes with ABSOLUTELY NO WARRANTY.This is free software, and you are welcome to redistribute itunder certain conditions.See the documentation for the full license.
前回より,かなりバージョンがあがっている。 GUIの画面も実装しているようなので試してみたが,これがなかなか難渋する。どうやら,Three.jsというJavascriptによる三次元グラフックシステムを利用しているらしい。これも7-8年前に流行ったようだが全く知らなかった。MathicsのGUI版の方は,Mathics-Djangoという名前で,PythonのウェブフレームワークのDjangoの上で動いていた。
djangoは,作業ディレクトリ(~/mathics-django-master/mathics_django)で,manage.py runserver を実行すると,ローカルのウェブサーバー( http://127.0.0.1:8000/)が立ち上がる仕組みになっている(エラーが出たら指示に従ってディレクトリに必要なファイルを持ってくる)。最初のエラーは,scipy-stackのインストールで,次のエラーは,データベースの場所の問題だったが,~/.local/var/mathicsというデフォルトのディレクトリを作成することでようやく解決することができた。pip3 install Mathics-Djangocd mathics-django-master/mathics_django*You have 21 unapplied migration(s).python3 manage.py migratepython3 manage.py runserver*error AttributeError: module 'scipy.linalg' has no attribute 'inv'pip3 install scipy-stackpython3 manage.py runserver*error sqlite3.OperationalError: unable to open database file*error django.db.utils.OperationalError: unable to open database filemkdir ~/.local/var/mathics
早速実行してみたが,相変わらず,計算量の制限は大きく,1500!(10進 4114桁)くらいまでしか計算できない。本物のMathematicaならば,10000000!(10進 65 657 059桁)でも平気で計算できるのだけれど。
なお,List of computer algebra systems には無事に掲載されていた。















