芥川龍之介が「蜘蛛の糸」を発表して百年。高二の秋の文化祭,クラスの仮装行列のテーマが 蜘蛛の糸だった。お釈迦様の極楽タワーの竹を近所から切り出し,地獄の焔と煙の絵を描いた。犍陀多に続いて蜘蛛の糸(登山部の赤いザイル)に群がる地獄の亡者だったころ。
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 には無事に掲載されていた。2022年11月19日土曜日
弾道ミサイルの軌道(5)
2022年11月4日金曜日
弾道ミサイルの軌道(4)
北朝鮮は本日7時台から8時台にかけ,ICBM級の可能性があるものも含め,少なくとも3発の弾道ミサイルを,東方向に向けて発射しました。詳細については現在分析中ですが,落下したのはいずれも我が国の排他的経済水域(EEZ)外であり,飛翔距離等については以下の通りと推定しています。① 7時39分頃,北朝鮮西岸付近から発射し,最高高度約2000 km程度で,約750 km程度飛翔し,朝鮮半島東側の日本海に落下。当該ミサイルはICBM級の可能性があります。② 8時39分頃,北朝鮮内陸部から発射し,最高高度約50 km程度で,約350 km程度飛翔し,朝鮮半島東岸付近に落下。③ 8時48分頃,北朝鮮内陸部から発射し,最高高度約50 km程度で,約350 km程度飛翔し,朝鮮半島東岸付近に落下。なお,日本列島を超えて飛翔する可能性があると探知したものについては,その後,当該情報を確認したところ,探知したものは日本列島を超えず,日本海上空にてレーダーから消失したことが確認されました。
実際に弾道ミサイルの飛来を探知した場合は,まず航空総隊/BMD統合任務部隊にデータが送信され,防衛省を経て内閣総理大臣および各省庁にデータが送られる。総務省は,全国瞬時警報システム(J-アラート)を通じてマスメディアや地方公共団体に警報を伝達する。国民には,報道や防災無線を通じて屋内退避などの自己防衛が指示される(Wikipedia J/FPS-5から引用)。
2022年10月27日木曜日
ドーナツ地球(3)
m = 1000000; R = 2.0; r = 1.0;t = Table[{RandomReal[{-3, 3}], RandomReal[{-3, 3}],RandomReal[{-3, 3}]}, m];(* s = Select[t,(#[[1]]^2+#[[2]]^2+#[[3]]^2)<1 &]; *)s = Select[t, ((Sqrt[#[[1]]^2 + #[[2]]^2] - R)^2 + #[[3]]^2) < 1 &];smax = Length[s]n[w_] := 1/Sqrt[w[[1]]^2 + w[[2]]^2 + w[[3]]^2 + 1/smax]ListPointPlot3D[s, BoxRatios -> Automatic]
p = {4 - z, 0, 0};d = Table[p - s[[i]], {i, 1, smax}];w = 1/smax*Sum[n[d[[k]]], {k, 1, smax}];v[z_] := wg[1] = Plot[v[z], {z, 0, 8}]
p = {0, 0, z - 4};d = Table[p - s[[i]], {i, 1, smax}];w = 1/smax*Sum[n[d[[k]]], {k, 1, smax}];v[z_] := wg[2] = Plot[v[z], {z, 0, 8}]
2022年10月26日水曜日
ドーナツ地球(2)
v = Table[{2 r Cos[Pi/6 i], 2 r Sin[Pi/6 i], 0}, {i, 1, 12}];d = Table[{2 r + r Cos[t], 0, r Sin[t]} - v[[i]], {i, 1, 12}];n[w_] := w/Sqrt[w[[1]]^2 + w[[2]]^2 + w[[3]]^2]m[i_] := (1 + Mod[i + 1, 2])/2f = Sum[n[d[[i]]]*m[i], {i, 1, 12}];g[t_] := f /. r -> 1.0Plot[g[t], {t, 0, Pi}]Plot[{Sqrt[g[t][[1]]^2 + g[t][[3]]^2],180/Pi*ArcTan[g[t][[3]]/g[t][[1]]]}, {t, 0, Pi}];vp = Table[{{Cos[t], Sin[t]}, {-g[t][[1]], -g[t][[3]]}},{t, 0., Pi, Pi/30}];g1 = ListVectorPlot[vp, AspectRatio -> 0.5];g2 = Graphics[{White, Disk[{0, -0.05}, 0.95, {0, Pi}]}];Show[g1, g2]