シュレーダーのアルゴリズム:ニュートン・ラフソン法の高次バージョン

教育用のメモ。岡本久, 『ニュートン法の話 近似法から微分方程式の解の存在証明まで』, 数学のたのしみ, 2006春, p.70-91 *1に紹介されている。公式としての収束は速いが、演算数で不利になるので、アルゴリズムとして速いというわけでもない、という注意書きがなされていた。

\displaystyle F(z)=z+\sum_{n=1}^{N-1}(-1)^n\frac{f(z)^n}{n!}\left(\frac{1}{f^\prime(z)}\frac{d}{dz}\right)^{n-1}\frac{1}{f^\prime(z)}とおいて, z_{n+1}=F(z_n)とすると{z_n}はN次収束する。
E Schroeder, Ueber unendlich viele Algorithmen zur Aufloesung der Gleichungen, Math. Ann., Vol.2 (1870), 317-365.

生協の3mm方眼A4ノートが廃番になったかも

先週の金曜日に岡山大学生協のピオーネユニオンに行ったが、コクヨが作っている生協の3mm方眼A4サイズの青いノートが店頭に無かった。店のスタッフに訊くと入荷が無いとのこと。ピーチユニオンに行くと、1階はセブンイレブンになっていたりと悲しいことが続く。
[追記] 生協のWebカタログ2015年版には記載があった。 DN-30S3 | COOP文具カタログ http://bungu.univcoop.or.jp/dn-30s3/
[追記] ピーチユニオンのセブンの隣の売店で売ってた。よかった。
[追記 2021.4.30] 岡山大津島キャンパスのマスカット、ピーチ、ピオーネのどこにも売ってなかった。

Windows10で使えたもの、使えなかったもの

自分用の覚書。これからも書き加える予定。手元の環境は Windows 10 Home 64bit (Win7 Home Premium からアップグレードした), i7-3770 + 8GB [2016.1.1以降] その後、複数台の Windows 10 Professional で確認した。

  1. [○]UltraVNC v.1.2.0.6 (2015.8.30)

    Win7でインストールしていた UltraVNC server が、Win10でも使えていた。


  2. [○←×]TeXインストーラ3(abtexinst_0_85.zip) (2015.8.30)

    いつもお世話になっているWindowsLaTeXインストーラhttp://www.math.sci.hokudai.ac.jp/~abenori/soft/

    簡単LaTeXインストールWindows編(2015年7月版) http://did2memo.net/2014/03/06/easy-latex-install-windows-8-2014-03/ の記述を参考にしてインストールしたらできた。要点は LaTeXhttp://eplang.jp/w32tex/archive に、dviout, ghostscript は ftp で www.ring.gr.jp にアクセスすることだったみたい。

    やったことは「デフォルトの設定で[次へ]をクリックして進む」だけ。「その他のソフトのインストール設定」で[次へ(N)>]をクリックすると「不明なエラーが発生.ログファイルを見ると何かわかるかもしれません」のメッセージが出て先に進めない。

    --------2015年8月30日5時10分に起動した時のログ ----------
    
    W32TeXの情報取得開始
    情報ファイルの発見に失敗
    W32TeXの情報取得開始
    情報ファイルの発見に失敗

    いまのところやっていないのは、デフォルト以外の設定(ftpサーバを変えるとか)で走らせること。

    「Win10にインストールできてない」という話であり、「Win7で走っていたLaTeXが、Win10でダメになった」という話ではないことに注意。


  3. [×]TDM-GCC 64bit(tdm64-gcc-5.1.0-2.exe) (2015.8.30)

    MinGW-gcc の64bitのもの。 http://tdm-gcc.tdragon.net/ Win7のときにインストールしておいたもの。ファイルにアクセスさせようとしたらランタイム環境がコケた。Win7のときは走ったのに。ボクにはこれがどういうコケかたなのかについて解析する知識と技能がない。

    print *,'hello'
    open(1,file='test.dat')
    end

    このソースコードに対して次の出力

    hello
    
    Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
    
    Backtrace for this error:
    #0  ffffffffffffffff
    #1  ffffffffffffffff
    #2  ffffffffffffffff
    #3  ffffffffffffffff
    #4  ffffffffffffffff
    #5  ffffffffffffffff
    #6  ffffffffffffffff
    #7  ffffffffffffffff
    #8  ffffffffffffffff
    #9  ffffffffffffffff
    #10  ffffffffffffffff
    #11  ffffffffffffffff
    #12  ffffffffffffffff
    #13  ffffffffffffffff
    #14  ffffffffffffffff
    #15  ffffffffffffffff
    #16  ffffffffffffffff
    #17  ffffffffffffffff
    #18  ffffffffffffffff
    #19  ffffffffffffffff

  4. [○]MinGW-w64 (2016.1.1) TDM-GCC の問題は gcc そのものによるもの
    64bit の Windows10 上でフリーの fortran コンパイラを導入して、簡単なプログラムを作成する - あらきけいすけの雑記帳

  5. [△]GSView (2016.2.3) 描画はちゃんとするが、再描画(サイズ変更, ファイルの更新)のときに Unknown in * section エラーがやまのように出る。2台で確認した。
  6. TeXworks (2016.3.6) TeXインストーラ3を使ってインストールして、スペルチェッカが動くPCと動かないPCが出た。どこかの隠れたパスの設定なのだろうと妄想しているが、解決法が良く分からない。

Mathematicaで式の計算結果を関数の定義に使う場合にはコロンが不要であることについて

自分用の覚書。手元のMathematicaはMathematica8。バージョン依存性があるかどうかは知らない。
複雑な式を展開や因数分解をして整理した結果(例えば、ヘロンの公式の導出 Sqrt[ a^2 b^2 - ( a^2 + b^2 - c^2 )^2/4 ]/2 を展開して因数分解して)を、関数 f[a_,b_,c_] として定義して、再利用しようとして引っかかったのでメモ。
mathematica 関数 定義 コロンググると「関数の定義にコロンを使う」という説明が(Wolfram社以外のサイトで)目立つが、関数の定義にコロンは必要ない。コロンの有無の違いは即時的な定義と遅延的な定義にある。

Wolfram言語で割当てを行うには,2つの違った方法があることに読者はすでに気が付いているかもしれない.つまり, lhs=rhs と lhs:=rhs である.これらの形の間にある基本的な違いは,いつ式 rhs が評価されるかにある. lhs=rhs は即時型の割当てを表し,右辺 rhs は定義した時点で評価される.これに対して, lhs:=rhs は遅延型の割当てを表し,rhs は,割当てが行われるときには評価されず,lhs の値が要求されるときに毎回評価される.
http://reference.wolfram.com/language/tutorial/ImmediateAndDelayedDefinitions.ja.html (2015.7.28アクセス)
そして関数の定義に関して次の記載がある;
Although := is probably used more often than = in defining functions, there is one important case in which you must use = to define a function. If you do a calculation, and get an answer in terms of a symbolic parameter x, you often want to go on and find results for various specific values of x. One way to do this is to use the /. operator to apply appropriate rules for x in each case. It is usually more convenient, however, to use = to define a function whose argument is x.
関数の定義では「コロン+等号」は「等号」よりもおそらく頻繁に用いられるけれども、関数の定義に「等号」を必ず用いねばならない重要な場合がある。それは計算を実行し、シンボリックな変数 x を用いた式が得られたときに、引き続きこの式の x にさまざまな値を代入したい場合である。x に何か適当なルール(式や値)を代入するには「スラッシュ+フルストップ」を用いてその都度計算する方法もあるが、「等号」を使って x を変数とする関数を定義する方が大抵の場合、便利である。(…てゆーか、計算結果を関数として再利用したいときに「コロン+等号」ではできない。)

http://reference.wolfram.com/language/tutorial/ImmediateAndDelayedDefinitions.en.html (2015.7.28アクセス)
(おそらく)Mathematicaの計算結果は式や値の評価を済ませた結果であり、遅延評価が適用可能な「評価前の入力コマンド的なもの」になり得ないので、コロンを用いた関数の定義をすると、引数に代入した式や値の評価が行われない。
したがって、例えば、ヘロンの公式の関数の作成は
Sqrt[a^2 b^2 - (a^2 + b^2 - c^2)^2/4]/2
Expand[%^2]
Factor[%]
Sqrt[%]
f[a_, b_, c_] = % (*等号の前にコロンは書かない*)
f[p, q, r]

Out[1]= 1/2 Sqrt[a^2 b^2 - 1/4 (a^2 + b^2 - c^2)^2]
Out[2]= -(a^4/16) + (a^2 b^2)/8 - b^4/16 + (a^2 c^2)/8 + (b^2 c^2)/8 - c^4/16
Out[3]= -(1/16) (a - b - c) (a + b - c) (a - b + c) (a + b + c)
Out[4]= 1/4 Sqrt[-(a - b - c) (a + b - c) (a - b + c) (a + b + c)]
Out[5]= 1/4 Sqrt[-(a - b - c) (a + b - c) (a - b + c) (a + b + c)]

Out[6]= 1/4 Sqrt[-(p - q - r) (p + q - r) (p - q + r) (p + q + r)]

となる。左辺の「変数」にはアンダースコア*1を必ず付ける。アンダースコアは「任意の式を表す」記号である。

*1:なぜかMathematicaサイトでは「ブランク」"blank"と呼ばれている

問題が発生したため、プロセス「com.google.process.gapps」を終了します。

スマホに『問題が発生したため、プロセス「com.google.process.gapps」を終了します。』という表示が出て何の操作もできない。OSのコアなところでアップデートがコケているのではないかと想像される。再起動をかけると、メーカーのロゴが何度も繰り返される。困った。ブートプロセスのどこかがやられている。
…再起動が繰り返されて、スマホがただの高級カイロになってしまっている。バッテリーが上がるまで繰り返されるのか…。

「上に凸,下に凸な関数と二階微分」へのコメント

いろいろと授業関連の探し物をしていて、たまたま上に凸,下に凸な関数と二階微分 | 高校数学の美しい物語を読んだのだが、後半の\sqrt{\tan a\tan b}\leq\tan(\frac{a+b}{2})の部分は、a\lt\frac{a+b}{2}\lt bとおくと、tan(x)は単調増加だから\tan a\lt\tan(\frac{a+b}{2})\lt\tan bなので、ln(tan(x))ではなくln(x)が上に凸で十分な気がする。何か意図があるのかな?

高校の指導要領に無いもの…とか

シラバスを書くための自分用の覚書。個人的な偏見では一般の普通科の高校の数学の指導は(学習指導要領がベースになっているのだが)ペーパーテスト形式の大学入試に合わせてチューニングされている。「筆算のみで処理可能」で「短時間で解ける」ことという数学の本質とは関係の無い制約に囚われている。大学初年次程度の「数学IIIの続編」としての解析の授業もこの高校の傾向を引きずった延長上にあるように思われる。

  1. 三角関数
  2. 関数電卓の用法(無償のスマホアプリあり)
  3. 対数グラフの用法:ものさしを用いた掛け算。太陽系の惑星の軌道半径と公転周期のプロット
  4. スプレッドシートの利用
    Googleドライブなら無償。1万円でお釣りのくる低価格のタブレットが簡単に手に入るようになれば、授業の様子が変わるかも。
    1. 保存・再利用可能な計算のメモ帳として用いること
    2. 数列の処理:ローンの計算とか
    3. 基礎的な統計計算
  5. n乗根を求めるアルゴリズム:開平計算、Newton-Raphson法(n=2:バビロニア式算法)
  6. Eulerの公式
    1. 加法定理の導出
    2. 導関数の導入
  7. Lagrangeの補間

逆に高校までの数学や理科で教えていて、無駄だからやめてほしいもの

  1. 数列:\sum k^2, \sum k^3 の公式(せめて\sum k(k+1), \sum k(k+1)(k+2))
  2. 不確かさ(uncertainty)の概念無しで「有効数字」を教えること