検索キーワード「Jupyter」に一致する投稿を関連性の高い順に表示しています。 日付順 すべての投稿を表示
検索キーワード「Jupyter」に一致する投稿を関連性の高い順に表示しています。 日付順 すべての投稿を表示

2023年5月22日月曜日

Maxima-Jupyter

一月ほど前にyujitachさんが,MathematicaでHopfバンドルの図示をしていて,MathematicaからオープンソースのJupyter Notebook版にできないかと呼びかけていた。

オープンソースというかフリーの数式処理アプリというとMaximaになる。JupyterでMaximaが動くのかと調べてみると,弘前大学の葛西真寿さんによる,Maxima-Jupyterによる数式処理というサイトがあった。

早速,インストールを試みるが途中で挫折。いろいろ調べて,なんとか動くところまできたが,どうも動作がおかしい。原因は,maxima側ではなくて,jupyter側にあった。jupyter labが4回ほどの入力でおかしくなってしまう。GPT-4に尋ねてみると,ブラウザを変えてみたらとのアドバイス。SafariからChromeに変えるとどうにか動いた。なお,Jupyter notebookならSafariでもうまく動作するのである。

Maxima-Jupyterのインストールに関しては,さきほどのページにあるmacOS に Maxima-Jupyter をインストールするによった。maximaを実行した段階でzmq.hが見当たらないとのエラーになり,これを解消するために,Maximaで綴る数学の旅の2022-01-20の記事が役に立った。 
% brew install sbcl gpg zmq gnuplot
% brew edit maxima
% brew install maxima -s

[quicklispをインストール(sbcl起動時の自動読み込みまで設定)]
quicklisp.lispをダウンロード。
% curl -O https://beta.quicklisp.org/quicklisp.lisp
% curl -O https://beta.quicklisp.org/quicklisp.lisp.asc
% gpg --verify quicklisp.lisp.asc quicklisp.lisp

% sbcl
* (load "quicklisp.lisp")
* (quicklisp-quickstart:install)
* (ql:system-apropos "vecto")
* (ql:quickload "vecto")
* (ql:add-to-init-file)
* (quit)

[maxima-jupyterをインストール]
そのgithubレポジトリをクローンし展開したディレクトリに移動
% cd ~/Library
% git clone https://github.com/robert-dodier/maxima-jupyter.git

% cd maxima-jupyter
% export C_INCLUDE_PATH="/opt/homebrew/include/"
% maxima
(%i1) load("load-maxima-jupyter.lisp");
(%i2) jupyter_install();
(%i3) quit();

[jupyterを起動]
% jupyter lab

これで,Maxima-Jupyterは動いたが,Jupyter labのところで引っかかったわけだ。

2025年7月23日水曜日

Jupyterつまづく

Jupyterからの続き

Mathematica ノートブックにインスパイアされて登場したJupyterは,自分のpythonやJuliaの実行環境になっている。とても便利だ。

ところが,homebrew で jupyterlab4.4.5に更新したところ,jupyter lab や jupyter notebook が動かなくなってしまった。困ったぞ。

いろいろ調べてみると,悪さをしているのはSafari のようだ。どうも最近「この接続は安全ではありません」というhttpsにかかわる警告が多いと感じていた。ChatGPT o3に聞いてみると,それが原因だった。
A(ChatGPT o3): 
(前後略)
Safari 18 以降(macOS Sonoma/iOS 18 ベータなど)には 「HTTP はブロックして常に HTTPS だけ許可」 という新機能があります。これが有効になっていると、たとえ localhost(127.0.0.1)でも http://… へのアクセスは遮断され、画像のようなエラー
Navigation failed because the request was for an HTTP URL with HTTPS‑Only enabled (WebKitErrorDomain: 305)
が表示されます。ローカル開発サーバや Jupyter Lab は既定で HTTP を使うため、Safari が弾いてしまうわけです。
解決方法も教えてくれたのだけれど,SSLの証明書を設定するところがどうもうまくいかない。困った。デフォルトのブラウザをSafari から Chrome にスイッチすると,Chrome では jupyter lab が起動したのでとりあえずはOKだが,それはそれで面倒な気もする。

四苦八苦してChatGPT o3を問いただした結果,次のようにすればよい。
Step 1 : Jupyter Lab を HTTP で起動
ターミナルを開く
つぎのコマンドを実行
# 証明書オプションを付けずに純粋な HTTP で起動
jupyter lab --port 8889 --ip 127.0.0.1 --no-browser

起動ログに
http://127.0.0.1:8889/lab?token=dfbc5bbd50a3b13f317435a1bfa1245684e3f0afd315ba96
が表示されれば サーバは準備完了(緑色の [I ... ServerApp] 行が目印)。

このURLをブラウザに直接貼付けたところうまくいったので,これでよしとする。

2019年3月25日月曜日

JupyterLab

JupyterLabのすすめ」という記事があったので,JupyterLabをさっそくインストールしてみた。

退職後の4月から非常勤講師としてこれまでと同じような授業を担当する。とりあえず,現在使用しているコンピュータ(MacProやMacBookProなど)を明け渡さなければならないので,MacBookAirに新しい環境を構築して移動作業をしている。その結果,現在の自分の環境は,次のようになっている。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
※mbaの設定
(1) homebrewの導入
    xcode-select —install (コマンドライン開発ツールの導入)
    sudo xcodebuild -license
    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(2) homebrewの練習と基本環境の設定
    brew update
    brew upgrade
    brew doctor
    brew install wget
    brew install nkf
    brew cask reinstall xquartz
    brew install lynx
    brew install w3m
    brew install xxxx (xxxxをインストール)以下適当に繰り返した。
(3) python3環境(jupyterを含む)の設定
    brew install python3
    python3 -V
     Python 3.7.2
    pip3 -V
     pip 19.0.2 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
    python -V
     Python 2.7.10
    ・これで,python3がインストールできた。
    which python
     /usr/bin/python
    which python3
     /usr/local/bin/python3
    ・pip3のアップデート方法
    pip3 install --upgrade setuptools
     Requirement already up-to-date:...
    pip3 install --upgrade pip
     Collecting pip
    ...
     Successfully installed pip-19.0.3
    ・環境設定してその中で作業
    python3 -m venv env
    . env/bin/activate
    (env) … python -V
     Python 3.7.2
    (env) … pip -V
     pip 18.1 from /Users/admin/env/lib/python3.7/site-packages/pip (python 3.7)
    (env) ... pip install --upgrade pip
    (env) ... pip install --upgrade setuptools
    (env) ... pip install numpy
    (env) ... pip install scipy
    (env) ... pip install scikit-learn
    (env) ... pip install matplotlib
    (env) ... pip install Pillow
    (env) ... pip install sympy
    (env) ... pip install jupyter
    (env) ... deactivate
(4) julia環境の設定
    https://julialang.org/downloads/
    からダウンロードすればコマンドラインで実行可能に
    echo 'export PATH=$PATH:/Applications/
Julia-1.1.app/Contents/Resources/julia/bin' >> ~/.bashrc
    source ~/.bashrc
    julia
    julia> using Pkg
    julia> Pkg.add(“IJulia”)
    export PATH=$PATH:/Users/admin/env/bin
    jupyter notebook
    これで,jupyter が起動して,julia 1.1 が使えるようになった。
    versioninfo()
    using Pkg
    Pkg.update()
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(5) jupyterlabの導入と起動は簡単であった。
    pip3 install jupyterlab
    jupyter lab
(付)JupyterLab環境での設定
Settings -> Advanced Settings Editor -> Notebook
codeCellConfigのlineNumbersをTrueにする。
Settings -> Advanced Settings Editor -> Extension Manager -> "enabled": trueにする。

Mathematicaノートブックを長らく使ってきたので,Jupyter Notebook(この記事もWikipedia中文はあるが日本語はない・・・)はすんなりと馴染むことができた。JupyterLabはJupyter Notebookの後継で,今後はこれに移行するのだそうだ。まだ違いがよくわからないが,Jupyter Notebook のことだってそれほどわかっていたわけではない。ぼちぼちやっていくことにしよう。

2019年6月3日月曜日

ウルフラムとペレス

辰己さんが,Jupyterの発音は,ジュパイターではなく,ジュピターじゃないのとFacebookでつぶやいていた。これに対して中野さんは,普通はジュピターでしょと。あれ・・・,pythonオリジンだからジュパイターだと思い込んでいた私はどうしよう・・・

ということでさっそくYouTubeに尋ねてみると,いきなりIPythonJupyterの開発者のフェルナンド・ペレス2017年のJupyterConの講演にぶちあたった。はい,正解はジュピターでした。Project Jupyterにもちゃんと Jupyter=/ˈdʒuːpɪtər/ と書いてある。

ところで,そのペレスは,Pythonの対話型環境であるIPythonを,Wolfram Notebookにインスパイアーされて開発したとある。つまり,ノートブック型インターフェースの始まりは,スティーブン・ウルフラムによるMathematicaであった。その後,IPythonからスピンオフしたプロジェクトがJupyterを創り出す。Jupyterの意義は単に特定の言語の対話型環境をつくることではなく,「Project Jupyterは,オープンソースソフトウェア,オープンスタンダード,そして何十ものプログラミング言語にわたるインタラクティブコンピューティングのためのサービスを開発するために存在します」であった。Jupyter+Julia+α連合軍をみて,Wolfram言語も開放政策に舵をきったのではないか。

スティーブン・ウルフラム(1959-)はイギリス生まれで,17歳でオックスフォードに入学し,ゲルマンに誘われて18歳でカリフォルニア工科大学に入り,1979年に20歳でPh. D.をとる。専門分野は素粒子物理学の理論であったが,1981年にはMathematicaの前身のSMP(Symbolic Manupilation Program)を商業化し,複雑系の物理学の研究(Celuller Automata)を進めた。

一方,フェルナンド・ペレスはコロンビア生まれで,コロンビアのアンティオキア大学で物理学を学び,コロラド大学で素粒子物理学(格子QCD理論)のPh. Dをとる。それ以前には,フラクタル,半古典カオスなども研究しているようだ。2008年にはカリフォルニア大学バークレー校に移り,ソフトウェア開発に主軸を置くことになる。

なんだかよく似たところがある2人である。

2021年12月1日水曜日

Julia 1.7.0

11月30日にJulia 1.7.0がリリースされた。普段は,しばらく様子を見てからインストールするのだけれど,macOS Apple Siliconにネイティブ対応したようなので,早速試してみる。

メジャーバージョンアップの際には,いつも困ってしまうのだが,今回もすんなりとはいかなかった。とりあえず手順を書いてみるが,何度もやり直しているので,ヒステリシスがあるかもしれない。

 (1) julia 1.7.0 packege ダウンロード&インストール
 (2) .zshrcのパス変更 % cat .zshrc
export PATH=/Applications/Julia-1.7.app/Contents/Resources/julia/bin
 (3) ln -s /Applications/Julia-1.7.app/Contents/Resources/julia/bin/julia julia
 (4) julia -> using Pkg -> Pkg.add(“IJulia”) -> Pkg.build(“IJulia”)
 (5) brew install jupyter
 (6) jupyter kernetspec list -> jupyter kernetspec uninstall julia1.6.0
 (7) jupyter notebook -> OK
 (8) pip3 uninstall jupyterlab -> pip3 install jupyterlab
 (9) jupyter lab build -> OK


とりあえず,jupyter notebook も jupyter lab も動いたが,パッケージの整合性などからか,これまでのコードがすべてそのまま動くというわけにはいかなかった。ボチボチ様子見よう。

P. S. とりあえず,Plots 周りの不整合はなんとかなった。たいした処理をしていなくても,ときどきカーネルが死んでしまうのが問題だ。

2019年5月26日日曜日

Wolfram Engine

MathematicaWolfram|Alphaでおなじみのウルフラム(昔はウルフラム・リサーチだった)が,それらのコアになる計算エンジンをWolfram Engineという名前で,開発者向けに無償で開放した。すごい。pythonやC++で開発するアプリにライブラリとして組込むことができ,Wolfram Knowledgebaseへのアクセスができるとのこと。

各プラットフォーム用に3GB程度のアプリケーションをダウンロードし,Wolfram IDを取得すれば使用ライセンスが得られる。Mathematicaをコマンドラインから利用できるだけでなく,jupyter notebookから使える。これらのノートブック・インターフェースも元々は,Mathematica Notebook に習ったものではないかと思う。

さて,twitterで教えてもらったjupyterを使えるようにする手順は次の通り。まずWolfram Engineをインストール,ライセンスを取得しコマンドラインで起動することを確認する。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
git clone github.com/WolframResearch/WolframLanguageForJupyter.git
cd WolframLanguageForJupyter
./configure-jupyter.wls add
jupyter notebook
 または
jupyter lab
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

黒木さんの「Free Wolfram EngineをJupyterで使う方法」が例題紹介も含めて詳しい。


2023年12月22日金曜日

astropy

Pythonで太陽系の天体位置を描画してみる」というのを見つけた。python上の天文学統合データ処理環境であるastropyというライブラリを使うものだ。

jupyter lab を起動して,さっそく試してみると,いきなりmatplotlibが見つからないというところでつまづいた。以前に試したpythonのコードでは,matplotlibを読み込んでちゃんと作図がでてている。その古いコードでもエラーがでてきた。

macbook air の環境は,基本的にはhomebrew で更新しているので安心できるのだが,問題は,python環境である。python は3.9〜3.12までの複数のバージョンが同居することになっている。これは基幹ソフトなので,下手に古いものを消してしまうとややこしいのだ。そこで,一般には,python環境を指定するpyenvとかvenvで仮想環境を設定した上で,様々なライブラリを加えていくことになる。

が,ですね,それはそれで面倒なので,アドホックにバージョンアップを繰り返しながら,pip install ホゲホゲをつづけているために,わけわかめ状態になっている今日この頃なのだ。jupyterlabもバージョンが上がるたびに,見えなくなってしまうので,毎回 brew link jupyterlabを繰り返す始末だ。70歳になると,自分の体の中のDNA情報システムだけでなく,外の電子情報システムまで老化が進んでくるということだ。

まあ,macOSの場合は,機種更新の際に新規インストールすればそれなりに,なんとかなるかもしれないけれど,複雑な記録や認証情報を引き継ぐのは厄介だ。特に,iOSでは,指紋認証を含め,現金が動く認証アプリがウヨウヨいるので,次期機種更新のことを考えただけで気が遠くなりそうだ。


話を戻して,astropyについて。jupyter環境でpython kernelを立ち上げているところから,!エスケープで!pip listをやってみると,matplotlibは存在している。!pip install matplotlib でも致命的エラーはでない。ChatGPTに相談してみると,カーネルがどうなっているか確認せよとのこと。
 jupyter kernelspec list
  python3              /opt/homebrew/Cellar/jupyterlab/4.0.9_2/libexec/lib/python3.12/site-packages/ipykernel/resources
  julia-1.9            /Users/koshi/Library/Jupyter/kernels/julia-1.9
  maxima               /Users/koshi/Library/Jupyter/kernels/maxima
  wolframlanguage12    /Users/koshi/Library/Jupyter/kernels/wolframlanguage12
はいはい,表に見えていたのは python3.11.6だったけれど,実は,python.12.1が使われており,ここにはmatplotlibが入っていませんでした。さっそく,このポイントで,matplotlibとかscipyとかastropyとかpytest-astropyとかをpipでインストールした。別の参考資料に指示があった,astropyが正しく導入できているかどうかのテストも,試行錯誤の後にOKとなった。

   cd /opt/homebrew/Cellar/jupyterlab/4.0.9_2/libexec/bin

   ./pip install astropy

   ./pip install ephem

import astropy as ap
>>> ap.test()
platform darwin -- Python 3.12.1, pytest-7.4.3, pluggy-1.3.0

Running tests with Astropy version 6.0.0.
Running tests in lib/python3.12/site-packages/astropy.

Date: 2023-12-19T22:26:53
Platform: macOS-14.2-arm64-arm-64bit
Executable: /opt/homebrew/Cellar/jupyterlab/4.0.9_2/libexec/bin/python
Full Python Version: 
3.12.1 (main, Dec  7 2023, 20:45:44) [Clang 15.0.0 (clang-1500.0.40.1)]
encodings: sys: utf-8, locale: UTF-8, filesystem: utf-8
byteorder: little
float info: dig: 15, mant_dig: 15

Package versions: 
Numpy: 1.26.2
Scipy: 1.11.4
Matplotlib: 3.8.2
h5py: not available
Pandas: not available
PyERFA: 2.0.1.1
Cython: not available
Scikit-image: not available
asdf-astropy: not available

Using Astropy options: remote_data: none.

rootdir: /opt/homebrew/Cellar/jupyterlab/4.0.9_2/libexec
plugins: astropy-0.11.0, remotedata-0.4.1, hypothesis-6.92.1, cov-4.1.0, filter-subpackage-0.1.2, astropy-header-0.2.2, anyio-4.1.0, mock-3.12.0, doctestplus-1.1.0, arraydiff-0.6.1
collected 28085 items / 5 skipped  

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
========== 27425 passed, 425 skipped, 240 xfailed, 80 warnings in 184.56s (0:03:04) ===========
<ExitCode.OK: 0>
ところが,やっぱりもとの太陽系の天体位置描画が動かない。最後に,Animation関数中のblit=False をblit=Trueにしてようやく何か表示されてほっとしたが,そこまでで内部にエラーがあるとのメッセージが出て異常終了してしまった。チーン。


図:ここまでは出たけれどアニメーションにはなっていなかった残念な図

astropyはイメージ処理やデータ処理を本業とした,プロ用の本格的なシステムだった。

2023年1月17日火曜日

Pythonのタートルグラフィックス

Π角形からの続き

Pythonで同じようなタートルグラフィックスが使えないかと調べると,turtleという呼ばれるライブラリがあらかじめ用意されており,楽勝かと思われた。

お絵書きでPythonを学ぶというページにしたがって,コマンドラインで実行してみると,画像が出ない。どうやら,pythonからtcl-tkへのつなぎが必要らしい。brew install python-tk とごそごそやっていたらすぐ動くようになった。

落とし穴があった。インタラクティブな実行ではなく,プログラムファイルを作って一括処理を試みたときだ。見本のファイル名をturtle.pyとしたのがまずくて,循環参照のエラーが出てしまった。その原因がわからなくて踠いていたが,こういうときはエラーメッセージで検索するのが一番である。ファイル名をkame.pyとして事無きを得た。

次により大きな罠が控えていた。jupyter環境でpythonを実行させるほうが便利だろうと,kame.pyのコードをjupyter lab で実行させたところ,_tkinterが見つからないエラーで一歩も進めない。ネットの記事にはpyenvコマンドを駆使して,pythonを一回アンインストールしてからtcl-tkをインストールした上で,再度pythonをインストールすればよいとある。

その手順通りのままには進めずに四苦八苦したものの,指示通りにコマンドラインからtcl-tkを使ったライブラリが正しくインストールできたようには見えた(これは最初の段階と本質的には変わっていない)。それでもjupyterでは同じエラーが出てだめなのだ。どうやら,jupyterのpythonではturtleが使えないということになっているらしい(未確認)。

ProcessingのプログラムをPythonに移植したものを次に示す。

#!/opt/homebrew/bin/python3

# usage ./kame.py m n 

import turtle

import sys


m = float(sys.argv[1])

n = float(sys.argv[2])

r = 0

g = 0

b = 0

turtle.colormode(255)


turtle.begin_fill()

for i in range(255):

    r = (r+3) % 25

    g = (g+5) % 255

    b = (b+7) % 255

    turtle.pencolor(r,g,b)

    turtle.forward(200)

    turtle.left(360/m*n)

turtle.end_fill()


turtle.done()

pythonのトレーニングをしたと思うことにする。コマンドラインでm,nは入力しているが,簡単な有理数でないものを入れたい場合は,m=3.1415926 n=1 を代入すればよい。

図:pythonのΠ角形タートルグラフィックスの途中

2021年5月18日火曜日

MacBook Air M1(4)

 MacBook Air M1(3)からの続き

4月18日にMacBook Air M1 がやってきてからちょうど1ヶ月になる。このところCPU負荷がつねに30-40%を越えて,CPU温度が70-80℃となっていた。Apple シリコンのM1チップを搭載したMacは発熱が少ないのが特徴だったはずなのになぜだ。すべてのアプリを終了させてスリープした状態で一晩寝かせ,朝を迎えてもパームレスト部分が暖かいのである。

さすがにおかしいと思って,アクティビティモニタで調べてみると,なんとアンチウィルスのSophosが非常に大きなCPUタイム消費の原因だった。さっそくこれを取り除いた。ウィルス対策は,ClearnMyMacのアンチウィルス機能に頼ることにする。おかげで,CPU負荷は5%,温度は35℃前後まで下がった。やれやれ。

なお,MacBook Air M1(2)で書いていた「jupyterlabが動かない問題」はしばらく前に以下のようにして解決した。これで残ったのは pythonの機械学習ライブラリ scikit-learn が動かないことくらいである。

/opt/homebrew/opt/python@3.9/bin/python3.9 -m pip install --upgrade pip
pip3 install jupyterlab
jupyter lab -> error
jupyter lab build -> error
brew install node.js
jupyter lab build
jupyter lab

2021年5月21日金曜日

Rをjupyterで

 ラベル付き散布図を描きたいのだ。なかなかうまく探しきれず,Rが一番手っ取り早そうなので,Rをjupyterから使えるようにすることを試みた。

とりあえず,brewでRをインストールすると最新のarm版だった。

brew install R
R —version
R version 4.1.0 (2021-05-18)
次にコマンドラインでRを起動し,R環境の中で3つのコマンドを実行する[1]。
>install.package(“devtools”) … CRAN ダウンロードは Japan/Tokyo 47 から

1つ目のコマンド(上記)で次のエラーが出てしまった。

>1: install.packages("devtools") で:
> installation of package ‘gert’ had non-zero exit status
>2: install.packages("devtools") で:
> installation of package ‘usethis’ had non-zero exit status
>3: install.packages("devtools") で:
> installation of package ‘devtools’ had non-zero exit status
>> Configuration failed to find libgit2 library. Try installing:
> * brew: libgit2 (MacOS)

そこで,brewでlibgit2をインストールしてから再挑戦する。
brew install libgit2
R
> install.packages("devtools")
> devtools::install_github("IRkernel/IRkernel")
> IRkernel::installspec()
jupyter lab … これで OK!
これでうまくいった。

写真:jupyterlabの起動画面

2021年5月22日土曜日

ラベル付き散布図

Rをjupyterでからの続き 

ラベル付き散布図と格闘している。

(1) Excel が一番簡単そうで,調べるとすぐに事例が見つかった。しかし,これはWindows版の場合であり,残念ながらMac版(Microsoft Office 2019 Home & Student)にはその機能がなかった。

(2) Rは統計グラフがお手の物のはずなので多分あるだろう。そこでRをjupyter上に持ってきた。これも簡単に事例が見つかった。見本通りにやってみると,

#今回使うライブラリ
library(maptools)
#データの準備
CC <- c("CAN","DNK","FIN","FRA","DEU","ITA","JPN","KOR","NLD","POL","SWE","GBR","USA")
PAR <- c(13.7,15.7,16.6,16.6,20.2,20.1,22.1,10.3,14.9,13.5,17.6,15.6,12.8)
SE <- c(3.8,7.4,8.6,11.5,8.5,12.2,9.3,1.9,5.4,8.9,9.4,6.2,5.5)
sample <- data.frame(PAR, SE)
rownames(sample) <- CC
以下のerrorが出て(これは例題に対しては実害はなかったが)日本語も化けてしまう。

Checking rgeos availability: FALSE
Note: when rgeos is not available, polygon geometry computations in maptools
depend on gpclib, which has a restricted licence. It is disabled by default;
to enable gpclib, type gpclibPermit()

ただ,日本語文字化けを避けるには(エラーは残るものの),次のようにすればよかった。
par(family= "HiraKakuProN-W3")
plot(sample$PAR, sample$SE, xlab="65歳以上人口比率(%)", ylab="対GDP比高齢者向け社会支出(%)")
pointLabel(x=sample$PAR, y=sample$SE, labels=rownames(sample))
図 R on jupyter のラベル付き散布図の例

(3) juliaではラベル付き散布図の例が探せなかったが,labelled scatter をキーワードとするといとも簡単に解が見つかってしまった。こちらは日本語もすんなり通ってくれる。

2023年5月23日火曜日

JuliaのPyCallとSymPy

Maxima-Jupyterからの続き

Mathematicaの代替となるフリーの数式処理言語として,Maximaが候補にはなったが,やはり何となく使いにくい。Jupyter上のmaximaで終端記号のコロンを忘れるだけで毎回大量のエラーメッセージが出るのにも閉口する。

とすれば,Juliaで数式処理ということになる。標準的な手法としては,Pythonの数式処理モジュールであるSymPyを使えばよいが,先日からPython 呼び出しのPyCallとSymPyがエラーになっている。実害がなかったので放置していたけれど,再度見直してみた。

これまでは,googleで問題解決を図っていたが,必要な情報にたどり着くまではいくつものサイトを渡り歩く必要があった。そこに登場したChatGPTはかなりよい仕事をしてくれるので助かる。問題は,PyCallにあったので,エラーコードを与えて尋ねてみた。
Q:User
Juliaで,PyCallとSymPy がうまく動きません。
例えば,
(中略)
Error building `PyCall`: 
どうしたらいいでしょう。

A:ChatGPT
問題は、おそらく libpython が見つからないために発生しているようです。以下の手順で問題を解決してみてください。

Julia REPLを終了して、再度起動してください。

次に、次のコマンドを実行して、PyCallを再構築し、環境変数を設定してください。
julia
Copy code
ENV["PYTHON"] = "/Users/koshi/.julia/conda/3/bin/python"
import Pkg
Pkg.build("PyCall")

もしまだ問題が解決しない場合、次の手順を試してください。
(中略)
もしまだ問題が解決しない場合、PYCALL_DEBUG_BUILD 環境変数を設定して、デバッグ情報を取得してみてください。
(中略)

これで、エラーが発生している理由に関する追加情報が得られるはずです。その情報を使用して、問題を特定し、解決策を見つけることができます。

SymPyの問題が解決しない場合、まずPyCallが正常に機能していることを確認してください。その後、SymPyの再構築を試みてください。

これらの手順のいずれかが、PyCallとSymPyの問題を解決するはずです。それでも問題が解決しない場合は、エラーメッセージとともに質問してください。

で最初のPYTHON環境変数を /opt/homebrew/bin/python3.11 に置き換えて(だったかな?) なんとかクリアすることができた。

2019年5月9日木曜日

スリンキーの自由落下(1)

@sekibunnteisuu @irobutsu @Yh_Taguchi @Hal_Tasaki @genkuroki などで以前から話題になっていたスリンキーの自由落下をようやくいまごろ目にした。最も簡単な力学モデルについて,田口さんがすでにQiitaに書いているのだけれど,自分でもやってみた。黒木さんのjuliaの計算は凄いし,田崎さんの物理的説明もわかりやすいし,前野さんの動画もおもしろいのだった。

質量$m_1$の粒子1と質量$m_2$の粒子2が,自然長 $L$,バネ定数 $k$ の軽いバネの両端に取り付けられている。粒子1を原点に置いて支えながら,鉛直下方に静かにバネを垂らすと粒子2は $x=L+m_2 g /k $の位置で静止する。時刻 $t=0$ で粒子1の支えを静かに取り去ると,2つの粒子は重力とバネの弾性力によって運動を開始する。

運動方程式と初期条件は,
\begin{equation}
\begin{aligned}
m_1 \ddot{x} _1 &= m_1 g + k (x_2 - x_1 - L)\\
m_2 \ddot{x} _2 &= m_2 g - k (x_2 - x_1 - L)\\
x_1(0) &= 0, \quad \dot{x}_1(0)=0\\
x_2(0) &= L+\frac{m_2 g}{k}, \quad \dot{x}_2(0)=0
\end{aligned}
\end{equation}
 ここで,重心座標 $x_G=(m_1 x_1 + m_2 x_2 )/M$ と相対座標 $x=x_2-x_1$ を導入する。ただし,全質量を $M=m_1+m_2$ ,換算質量を $\mu = m_1 m_2 /M $ とする。

運動方程式と初期条件は,
\begin{equation}
\begin{aligned}
M \ddot{x}_G &= M g \\
\mu \ddot{x} &=  - k (x - L)\\
x_G(0) &= \frac{m_2}{M} (L+\frac{m_2 g}{k}), \quad \dot{x}_G(0)=0\\
x(0) &= L+\frac{m_2 g}{k}, \quad \dot{x}(0)=0
\end{aligned}
\end{equation}これを解くと,$\omega = \sqrt{k/\mu}$として,
\begin{equation}
\begin{aligned}
x_G(t) &= g t^2 /2 + \frac{m_2}{M} (L+\frac{m_2 g}{k})\\
x(t) &= L+ \frac{m_2 g}{k} \cos \omega t\\
x_1(t) &= g t^2/2 + \frac{m_2 g}{k}(\frac{m_2}{M} - \frac{m_2}{M} \cos \omega t)\\
x_2(t) &= L+ g t^2/2 + \frac{m_2 g}{k}( \frac{m_2}{M} + \frac{m_1}{M} \cos \omega t)
\end{aligned}
\end{equation}

これをMathematicaでグラフ化すると,
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
x1[t_] := g/2 t^2 + m2 g/k 
(m2/(m1+m2) - m2/(m1+m2) Cos[Sqrt[(m1+m2)k/(m1*m2)]t])
x2[t_] := L + g/2 t^2 +  m2 g/ k

(m2/(m1+m2) + m1/(m1+m2) Cos[Sqrt[(m1+m2)k/(m1*m2)]t])
k = 5; m1 = 1; m2 = 1; g = 10; L = 1;
Plot[{-x1[t], -x2[t], -x2[t] + L}, {t, 0, Pi/4}]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


[1]積分定数:ばねの落下(togetterまとめ)https://togetter.com/li/1345873
[2]前野昌広:コイルバネの落下 https://twitter.com/irobutsu/status/1125581991645081600
[3]田口善弘:ばねの落下 https://qiita.com/Yh_Taguchi/items/e0d82f28447a8d5a2726
[4]W. G. Unluh:(堀田さん紹介)The Falling Slinky https://arxiv.org/abs/1110.4368
[5]田崎晴明:ばねでつながれた粒子の運動 http://www.gakushuin.ac.jp/~881791/mathbook/pdf/slinky20190509.pdf
[6]黒木玄:落下するバネ https://nbviewer.jupyter.org/gist/genkuroki/e317b4b2dd5c19e6b228b75f420aa699

スリンキーの自由落下(2)に続く

2021年4月24日土曜日

MacBook Air M1(3)

 MacBook Air M1(2)からの続き

前回,Processingが動かないと言ったが,正しいJDKが入っていなかったからなのかもしれない。arm対応のJDKが,AZULから入手できた。OpenJDK Runtime Environment Zulu16.28+11-CA (build 16+36) ということで,Processing 4.0α3をインストールしたところ無事に動作した。

その他は次のとおり

(1) Wolfram Engine 12の導入ができた。これをjupyterで実行したところ,無事にMathematicaが動作したが,バージョンが12.2かどうかはわからなかった。これが起動している状態では,カーネルの動作数が制限を越えたということで,元々インストールしていた Mathematica 12.0は動かなかった。

(2) iPad Proを sidecar で繋ぐことができた。ミラーリングでも別ディスプレイでも動くことは動くのだけれど,なぜか想像していた動作とは違うのと,本体の解像度が勝手に変わったりして微妙に使いにくい。macOSX用の GoodNotes 5 があるので,なんとかタブレット代わりには使えるとは思うが,AirDrop が優秀なのでつながなくても十分に使えてしまう。

(3) Time Capsuleのタイムマシンが動いた。無線でつながっている上に,2TBのハードディスクが遅いので,フルバックアップに10時間ほどかかるがそれでも一応の安心感は得られる。

(4) Apple USB スーバードライブがつながった。ドライブが空の状態ではデスクトップにアイコンが表示できないのでどうかと思ったが,ディスクを入れると無事に認識してアイコンが表示された。

(5) iPhone SE2 のバックアップができた。このためMacBook Air M1の1TBストレージの使用量は330GB,残量は700GBを切った。

(6) 環境設定のキーボードで指定した後も,標準の日本語入力で\と¥の入れ替えがうまくいかないような気がしたが,今日は正しく動作している。なんだったのか?



2024年7月11日木曜日

サイコロの雌雄

70年以上生きていても知らないことがたくさんある。サイコロには雌雄がある(普通のサイコロは雌)というのだ。まあ,いわれてみれば,サイコロの鏡像は自分自身とは重ならない。学部の4回生のセミナーでLeeとYangのパリティ非保存の論文をさんざん読み込まされた割には,自らの不明を恥じるしかない。

さっそく,図示するため生成AIに頼るのだが,これが一筋縄では行かない。最近,巷で流行る石○構文のようなもので,空気が読み切れない部分的に論理的な無駄なやりとりの行き違いが山のように蓄積していく。ときどき一発で正解がでることもあるが,ちょっと相手の機嫌を損ねると,三途の河原送りで石を積み上げ続ける羽目に陥る。
Q(koshix):
立方体のサイコロの展開図を描画するpythonプログラムを下さい。
展開図は6つの正方形の面が接して並ぶものです。
各面には1〜6の数が適当は大きさの小丸(ドット)で表現されます。
展開図を組み立てたときに向かいあう面の数の和が7になるように配置されます。
1の面の小丸は少し大きい赤色ですが,他の面の2-6の小丸は黒です。 
A(Claude 3.5 Sonnet):
→SVGファイルが生成されて保存されるはずが失敗
→画面にも表示されないので,pngファイルに変更
→画面に出力された(OK)ので,雌雄を判定させる。

Q(koshix):
以下の定義からこのサイコロの展開図の雌雄を判定してください。

サイコロの目の割り振りは、ほぼ「天一地六東五西二南三北四」(雌サイコロ)と決まっている。これは、日本だけの特徴ではなく、世界的な共通点である。ただし、「南三」でなく「北三」になっているサイコロもあり、「南三」を雌サイコロ、「北三」を雄サイコロと呼ぶこともある(異性)。サイコロの雌雄の見分け方は、1・2・3の面が集まる頂点を正面に置き、1→2→3の順に見たときに時計回りになるのが雄サイコロ、反時計回りになるのが雌サイコロである。

→ただしく雌であると判定できた,エライ
→雌雄の両方の展開図を上下に出力させる
→日本語ラベルが文字化けしているので修正させる
→なかなか修正できず何度も失敗する
→こちらから日本語設定のサンプルコードを与える
→できた!日本語ラベルと展開図が重なっているので右シフトを依頼
→Claude 3.5 Sonnetの無料制限オーバーで停止,PROへの移行を勧められる

ChatGPT-4oに移動
Q(koshix):
サイコロの雌雄の展開図を表示する以下のpythonプログラムで,日本語ラベルと展開図が少し重なっているので,展開図を少し右に動かしてください。
Q(koshix):
今度は,展開図の右側が画面からはみ出して欠けてしまいました。なんとかなりませんか。
Q(koshix):
雄サイコロの方は向かいあう目の数の和が7になっていないところがあります。
4の目と5の目を入れ替えてください。
Q(koshix):
いや、そうではなくて,1,2,3の配置は元のままでよかったのです。それらと6はそのままで,4の目と5の目だけを入れ替えてという意味です。
Q(koshix):
雄のサイコロの2の目と3の目も入れ替わりましたよ。そこは元のままなのです。
Q(koshix):
雄サイコロはまだ直っていませんよ
この辺で,人間のほうが力尽きてしまったので,自分で修正したのが以下のコードである。賢いような・・・そうでもないような・・・プログラミングにおいて人間に最も必要とされるのは忍耐強い対話力だ。いわゆるプログラミング的思考力や論理的思考力ではない。

from PIL import Image, ImageDraw, ImageFont
from IPython.display import display
from matplotlib import rcParams
import matplotlib.font_manager as fm

def create_dice_face(draw, x, y, size, number):
    # 正方形を描画
    draw.rectangle([x, y, x + size, y + size], outline="black", width=2, fill="white")
    
    dot_positions = {
        1: [(0.5, 0.5)],
        2: [(0.25, 0.75), (0.75, 0.25)],
        3: [(0.25, 0.75), (0.5, 0.5), (0.75, 0.25)],
        4: [(0.25, 0.25), (0.25, 0.75), (0.75, 0.25), (0.75, 0.75)],
        5: [(0.25, 0.25), (0.25, 0.75), (0.5, 0.5), (0.75, 0.25), (0.75, 0.75)],
        6: [(0.25, 0.25), (0.25, 0.5), (0.25, 0.75), (0.75, 0.25), (0.75, 0.5), (0.75, 0.75)]
    }    
    dot_size = int(size * 0.15) if number == 1 else int(size * 0.1)
    dot_color = "red" if number == 1 else "black"
    
    for px, py in dot_positions[number]:
        cx, cy = int(x + px * size), int(y + py * size)
        draw.ellipse([cx - dot_size//2, cy - dot_size//2, cx + dot_size//2, cy + dot_size//2], fill=dot_color)

def create_dice_net(draw, start_x, start_y, size, is_female):
    # 展開図の配置: 
    #     [4]
    # [2][1][5][6]
    #     [3]
    faces_female = [
        (4, size, 0),        # 上面
        (2, 0, size),        # 左面
        (1, size, size),     # 前面
        (5, size * 2, size), # 右面
        (6, size * 3, size), # 後面
        (3, size, size * 2)  # 下面
    ]    
    faces_male = [
        (5, size, 0),        # 上面(4と5を入れ替え)
        (3, 0, size), # 左面
        (1, size, size),     # 前面
        (4, size * 2, size), # 右面(4と5を入れ替え)
        (6, size * 3, size), # 後面
        (2, size, size * 2)  # 下面
    ]    
    faces = faces_female if is_female else faces_male
    
    for number, x, y in faces:
        create_dice_face(draw, start_x + x, start_y + y, size, number)

def create_both_dice_nets(size=100):
    # フォントの設定
    font_path = '/System/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc'  # 適切な日本語フォントファイルを指定してください
    font_prop = fm.FontProperties(fname=font_path)
    rcParams['font.family'] = font_prop.get_name()
    
    # PILで使用するフォントを設定
    pil_font = ImageFont.truetype(font_path, 20)

    # 展開図の全体サイズを設定
    img_width, img_height = size * 5, size * 7 # 高さを2倍+余白に
    img = Image.new('RGB', (img_width, img_height), color='white')
    draw = ImageDraw.Draw(img)
    
    # 雌サイコロの展開図を描画
    create_dice_net(draw, 50, 20, size, True)
    draw.text((10, 10), "雌サイコロ", fill="black", font=pil_font)
    
    # 雄サイコロの展開図を描画
    create_dice_net(draw, 50, 20 + size * 3 + 50, size, False)  # 50ピクセルの余白を追加
    draw.text((10, size * 3 + 60), "雄サイコロ", fill="black", font=pil_font)
    
    return img

# 画像を生成し、Jupyter Notebookに表示
both_dice_nets = create_both_dice_nets(size=100)
display(both_dice_nets)

# PNG画像として保存(オプション)
both_dice_nets.save("both_dice_nets.png")
print("both_dice_nets.png が生成されました。")


図:サイコロの雌雄(雌 1→2→3 反時計回り,雄 1→2→3 時計回り)

P. S. 上記の配置はサイコロキャラメルで確認した。実際には,2の目,3の目,6の目の配置がそれぞれ2パターンあるので,1つの性別に対して8パターンの配置がある。普通のサイコロは,1-2-3の頂点から見て,2や3の目が頂点から放射状に配列するのではなく,頂点のまわりを取り囲むように配列していることになる。

2023年2月23日木曜日

wolframscript

Wolfram Engine からの続き

ChatGPTは,因数分解ができないので,Wolfram Alphaと連携すればよいという話について。

ChatGPT数学が苦手である。Stephen Wolframもそう言っている。BingChatに聞いてみると,WolframAlphaのAPIを使う必要があるようだ…というかそんなことは先刻承知。それにはライセンスが必要なので少々ためらう。何か他の方法はないものかと眺めていると,wolframscriptというWolfram言語のコマンドライン版が見つかった。

とりあえずインストールしてみようと(すでに当初の目的から話がずれつつある),確かめてみれば,自分のMacBook Air M1には既にインストール済みだった。以前,JupyterでWolfram言語を使うためにWolfram Engineを導入した時にインストールしていたらしい。うかつなことだ。

最近,Mathematica本体を立ち上げるのが億劫な場合,コマンドラインでフリーのMathicsを使うことが多かった。ただ機能はかなり制限されている。今回,はじめて wolframscript を実行してみると,Mathicsよりは大分制限が少ないというか,インストール済みのMathematica 12.0 の機能がフルに使えるのかもしれない。そこで次のような単独で実行可能なスクリプトも組めるのだった。拡張子は .wls である

#!/usr/local/bin/wolframscript


(* ::Package:: *)


n=ToExpression[$ScriptCommandLine[[2]]]

Print[RandomInteger[{1,6},n^2]]

コマンドライン引数(文字列変数)が,$ScriptCommandLine[[2]]以下で取得できる。これを整数型に変換するために,ToExpression[] 関数を使った。これで,プログラム外から与えた変数に対して,Wolfram言語での処理が可能になる。

[2]WolframScript(Wolfram言語&システム ドキュメントセンター

2019年1月14日月曜日

Juliaにおける変数のクリア

Jupyter 上の Juliaでいろいろな作業をしていると,使用している変数や関数の名前が重なってしまうことがある。Ver. 0.6には,workspace() というコマンドがあって,変数のバインディングをクリアできたようだが,Ver. 1.0ではこの機能がなくなっている。対処法を調べてみたのだが・・・

(1) Revise.jl を用いる。ちょっと違うような感じ。

(2) a=nothing  とする。ちょっと違うような感じ。

(3) 以下のコードを実行する(Startup.jl に導入),ちょっと違うような感じ。

function workspace()
 atexit() do
  run(`$(Base.julia_cmd())`)
 end
 exit()
end

これならば,Kernelの再起動でよいのか。


2022年3月20日日曜日

マークダウン(2)

 マークダウン(1)からの続き

markdownを使うためのエディタとして何がいいのかを調べてみた。【2022年版】Markdown(マークダウン)エディタ厳選まとめなど色々ある。

一つは,Visual Code StudioAtom などの高機能プログラム開発用ソースコードエディタである。元々日常的に使っているのであればこれで良いのだけれど,このためだけに大掛かりな道具立てを持ってくるのは,ちょっと本末転倒な感じがして,markdown の簡素さと相容れない。

そうなると,ウェブアプリとかローカルアプリになる。Boostnote,Joplin,Bear,Quiverなどを眺めてみたけれど,どれも面倒な印象だ。その中では,有償ではあるが Typoraがデザインもすっきりしていて相対的にマシなように感じた。$14.99なのでそれほど高額ではない。とりあえず,3週間は無料でお試しできるので導入してみた。

一通りのことはできるが,inlineの数式ができない。調べてみると,環境設定に1つチェックをすればOKなので,これでほぼ目的は達成できそうだ。使い込んではいないので,もう少し様子を見ることに。

そうこうしていたら,なんのことはない,Jupyter notebookに Code モードとMarkdown モードがあることがわかった。モードを切り替えてみれば,簡単な数式入力は問題なかった。これでいいのだ。最も,その先のことや pdf 出力のことを考えると,Typoraの方が良いかもしれない。


図:Typoraの購入画面 (3端末で使えるよ)

2020年11月17日火曜日

Mathics

Mahtematicaについてからの続き

Mathematicaを使い始めて30年くらいになるが,アカデミック価格の年間契約からはずれたため,2019年の12.0.0.0でバージョンアップが止まってしまった。最新のMathematicaは12.1だと思われる。Mathematicaは家庭・趣味用デスクトップライセンスでも45,000円なので今となってはかなり高額である。学生用ライセンスこそ21,000円だけれど,大学だとその10倍の210,000円,普通の企業だと,469,000円もするわけで相当厳しいのであった。

で,普通はMathematicaの代替はないかと考えてSegeMathだとかいうことになる。いっときこれをインストールしていたのだけれどかなりサイズが大きいので,SSD領域確保のために消去してしまった。Mathematicaのほうが慣れている分使いやすいことでもあるし。M1マシンとBigSurに移行したらどうなるかはわからない。Jupyter上のJuliaが登場したことによって,かなりの部分はこれで代替できるのだけれど,それでもMathematicaの方がコーディングの負荷が少ない。

さて,そんな中で今日発見したのが,フリーのMathematica文法互換ソフトウェアのMathicsである。円周率は4000桁くらいまでしか計算できなかったので,あくまでも教育用という位置づけになるかもしれない。それでもちょっと安心でWolframAlphaよりはましかもしれない。

インストールは簡単で,(1) pip3 install Mathics3, (2) brew install sqlite (macOSの場合),(3) \$ mathics でコマンドライン版起動,(4) \$ mathics server でGUI版起動 (localhost:8000) であった。List of computer algebra systems にはリストアップされていないのだけれどどうしてかな?


Mathics 1.1.0 on CPython 3.8.6 (default, Oct 27 2020, 08:57:44) using SymPy 1.6.2, mpmath 1.1.0

Copyright (C) 2011-2020 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.

Quit by pressing CONTROL-D

2025年9月6日土曜日

辞任確率

サントリー新浪のニュースに干渉して行方不明になっている自民党の総裁選前倒し圧力の話。石破がこけてもその周りに見える景色が微妙なのだ。我が奈良二区のあの方が参政党と日本維新の会を両手に引き連れて颯爽と登場するのだけはやめてほしい。

報道19:30でもスシローなんかがでてきて石破おろしに向けた印象操作に必死だった。他の政治記者たちも本当に政局屋的な発言しかしない。が,たまにはエコーチェンバーの外の空気を吸わないと自分の目がどんどん曇っていくし・・・。もう一押しで臨時総裁選がスタートしそうな相転移前のゆらぎが感じられる今日この頃。

そこで,もう少し客観的な分析をChatGPTにお願いしてみた。

Q(koshix):
最新の日本の様々な政治経済文化状況を幅広く分析し,石破総理の辞任確率を時間の関数として推定してグラフにして表現してください。期間は2025年9月から1年間でお願いします。この間に様々な政治・外交イベント等も予定されているはずなのでそれらも考慮してください。

A(ChatGPT-5,2m57s):
(回答略,1年後の累積辞任確率は約60%)

Q(koshix):
情報源が英語なので,日本のメディアの政治担当の生々しい声があまり反映されていないような印象を受けました。石破がやめることにメリットを感じている旧安倍派や麻生派や茂木グループの動向,衆議院議員と参議院議員の違い,参政党,国民民主党,日本維新の会,立憲民主党などと自民党の各グループの関係,石破政権首脳陣が退任した場合の人事の可能性などの情報も含めて,再度考慮してみてください。結果は先ほどと同様にグラフのcsvでいただければありがたいです。

A(ChatGPT-5 Thinking,3m44s):
(図を与えるpythonコード,略)
まず前提と考え方を共有します。今日は2025年9月3日(日本時間)です。直近の事実として、7月20日の参院選で自公が過半数を失い、党四役(森山幹事長、鈴木総務会長、小野寺政調会長、木原選対委員長)が相次いで辞意を表明。麻生派は総裁選の前倒し要求を正式に打ち出し、茂木グループ(旧茂木派)も公然と退陣論を展開。石破首相は当面続投の意向を明確にしています。これらの日本メディアの政局報道を核に、衆参の制度差・与野党関係・派閥力学を織り込み、月次ハザード(当該月の辞任条件付き確率)を設定し、累積辞任確率を算出しました。

1.いま起きていること(日本メディア中心)
(1) 党四役の「ドミノ辞意」。森山幹事長は「進退は首相に一任」と表明。石破首相は「しかるべき時期に判断」と続投姿勢。
(2) 麻生派:研修会で麻生太郎氏が総裁選の前倒し要求を明言。派内結束を背景に“石破おろし”を押し上げる材料。
(3) 旧安倍派の再起模索と“石破おろし”の駆け引き:解散報告会後も党内で影響力を残し、前倒し論の中核の一角。
(4) 茂木グループ:茂木敏充氏が退陣を公然要求。「ポスト石破」名乗りの先頭格の一人。
(5) 与野党の“実利”関係:
・2025年度予算は「自公+維新」で修正・年度内成立(現憲法下で初の参院修正→衆院同意)。維新は高校無償化等で実利を獲得。一方で、恒常的な連立には後ろ向き。
・企業・団体献金を巡っては自公国で「5万円超公開」などの合意形成が進み、国民民主は個別案件での接近余地を残すが、連立入りは否定的なトーンが続く。
・立憲民主は主導的野党として対決色を強め、労組側(連合)も自民との大連立を牽制。
・参政党は参院で存在感を拡大し与党に圧力(政策争点が右派色に寄る)を与えるが、与党安定化のパートナーではない。
(6) 衆参の制度差:不信任は衆院のみ(可決で総辞職か解散)。参院は問責の政治的圧力が強く、会期末戦術の焦点。衆院の優越・予算先議など制度要因が政局ハザードの山を作る。

2.「いつ危ないか」の山(イベント × 力学)
・9月:四役辞意、麻生派の前倒し要求、8日前後の意思確認などでハザード急騰。
・10–11月:APEC釜山(10/31〜)・G20南ア(11/22–23)。外交大型日程は“凍結圧力”が働きがちだが、前倒し総裁選が走れば10月も高止まり。
・1–3月:通常国会の予算審議(とくに2–3月の山場)。少数与党ゆえに審議停滞・スキャンダル・問責/不信任の仕掛けが集中しやすく、最大の崖。

3.ハザードモデル(2025年9月〜2026年8月)
・月次ハザード(当該月に辞任する条件付き確率)を設定し、累積辞任確率を算出。ロジックは上記イベント群+衆参制度差+党内派閥インセンティブ(旧安倍派・麻生派・茂木グループ)と、維新・国民民主との“案件ベース協力”の持続可能性で重み付け。
・巨視的整合性:参院選敗北後の“石破おろし”が強い9–10月、会期と予算政治で2–3月を第二の山、外交大型日程の11月と年末の12月はやや低めに設定。
・CSVとグラフを作成しました:(略,下図参照)

4.主要ドライバー(日本の「政治部の肌感」を反映)
・旧安倍派:解散後も復権を模索。裏金問題の“けじめ”を石破側に迫る力学。石破続投よりも“保守再結集”の絵を描ける後継(高市・茂木・小泉ら)を歓迎しやすい。
・麻生派:首長経験者を含む選挙巧者の塊。次の衆院選で「勝てる顔」を求め、前倒し総裁選での主導権狙い。
・茂木グループ:茂木氏が公然と退陣要求。“政高党低”の修正や経済再建で「自分がやる」構図を作る動機が強い。
・衆議院 vs 参議院:衆は不信任→(解散or総辞職)という“実弾”があり、衆院議員は次の解散に敏感。参は問責の政治的効果で「国会出席止め」など実務を止めやすく、会期末の圧力手段。
・維新・国民:
→維新は予算で与党と合意形成も、連立は回避の構え。是々非々の“スイッチ”が政局の天秤。
→国民は政治資金透明化などで与党側と合意形成の実績あり。ただし連立は労組(連合)サイドも含め慎重。
・参政党:右派色の強い争点設定で保守票を分散させ、与党の議会戦術を難化させる“外圧”。

5.人事の見取り図(四役退任時の観測)
・幹事長後任の軸:解散・選挙を読む選挙管理能力、派閥横断の調整力、カネと人事の“火消し”。“旧安倍派ど真ん中”は世論的逆風を受けやすく、(1)非スキャンダル系実務家、(2)衆院の当選回数重ねた重鎮、(3)参院は党運営の要職で配し衆院優先が基本線。
・「ポスト石破」:党内世論・世論調査で名前が挙がるのは高市早苗、小泉進次郎、茂木敏充ら(順不同)。路線は対中・防衛・成長戦略で差があり、誰が四役を握るかで政権色がガラリと変わる。※ここは各社観測記事の範疇であり、確定情報ではありません。

6.感度分析(こう動けば確率はこう変える)
・総裁選の前倒しが正式決定 → 10月の月次ハザードを+0.05程度上方修正。
・維新が2026年度予算で“反対”に転じる/是々非々が崩れる → 2–3月のハザードを+0.05程度上方修正。
・国民民主が恒常的協力を明確化 → 1–3月のハザードを−0.03程度下方修正。
・参院で問責→実務停滞が深刻化 → 2–3月のハザードを+0.03上振れ。


必要なら、週次分解や「イベント日ベース」の滑らかなハザード(例:9/8、10/31、11/22、1/召集日、2–3月予算ピークなど)に拡張してCSVを再出力します。
日本メディアの“政治部の肌感”をより強く反映した追加補正も可能です(例えば、特定選挙区の補選や知事選の潮目を入れる等)。



図:石破総理の辞任確率の推移(ChatGPT-5による)

上図は,ChatGPT-5 Thinking が出力したコードを手元のjupyterで実行し,エラーをGeminiやChatGPTで潰しながら手動で修正したものである。エラーコードに適確に対応してくれる安心感はたいへんありがたいけれど,これでプログラミングの経験や知識がいらなくなるわけではない。

P. S. 9月7日に石場首相は辞任の意向を表明した。まあそんなものである。