講演などのファイル
円周率とarctan型公式
金沢大学時代に教員免許状更新講習のために作成した資料です。
最初にアルキメデスによる円周率計算の方法について紹介し、その後、arctan型公式の作り方について説明しています。
arctan型公式とは、マチンの公式 π/4=4arctan(1/5)-arctan(1/239) のような、arctan関数で表される円周率の公式であり、
様々なものが知られています。
この資料では、ガウス整数の素因数分解を用いてarctan型公式を作成する方法を説明しています。
この方法を用いて、オリジナルの円周率の公式を作ることもできるかもしれません。
資料はこちら。
曲線で囲まれた面積を高精度に計算するには? -数値積分とフーリエ級数の親密な関係-
筑波大学付属駒場中・高等学校の数学特別講座で講演したときの資料です。
最もシンプルな数値積分公式である台形則の精度をフーリエ級数を用いて解析しています。
台形則の誤差解析はオイラー・マクローリンの公式を用いるのが普通ですが、
面白さ優先でフーリエ級数による説明にしました。フーリエ級数を用いることで、
解析的な周期関数への台形公式や、二重指数型変数変換公式の紹介へも話がつながっています。
高校生に理解でき、中学生にも何となく感じがわかるように資料を作りましたが、
その分、“滑らか”という言葉を定義無しに使うなど、数学的な厳密さは少し犠牲にしています。
資料はこちら。
代数関係
RSA暗号の仕組み
現在のインターネットでは不可欠な技術となっている公開鍵暗号の一つである、
RSA暗号の仕組みについて、易しく解説しました。
こちらです。
xy=yxの有理数解について
xy=yxの自然数解は、自明なもの(x=yの場合)を除くと(x,y)=(2,4),(4,2)の二つしかありません。
一方で、x,yの範囲を無理数に広げれば無限に解があります。
それでは非負の有理数解についてはどうでしょうか?
ちょっと調べても他の研究は見つからなかったので、自分で証明してみました。
結果を先に言うと、xy=yxの自明でない非負の有理数解は、pを任意の自然数として、
x=(1+1/p)p, y=(1+1/p)p+1もしくはx=(1+1/p)p+1, y=(1+1/p)p
と書けるものしかありません。証明はこちら。
証明の途中で不定方程式が出てくるところが面白いと思います。
考えた時点では知りませんでしたが、これは実は割と有名な問題のようで、色々な本に載っているということがわかりました。
幾何関係
n次元単体の外接半径に関する再帰公式
n次元単体とは、1次元の線分、2次元の三角形、3次元の四面体などをn次元に拡張したものです。
n単体の外接球(2次元の場合は外接円、3次元の場合は外接球)
の半径を外接半径と呼ぶことにします。この外接半径について、なかなか面白い公式を発見しましたので紹介します。
公式はこちらです。
正多面体の内包関係
正多面体の内包関係を図にしてみました。
図はこちら。
ここでは、内側の正多面体が外側の正多面体から外に飛び出さず、
さらに内側の正多面体の頂点が外側の正多面体の頂点もしくは辺上にあるものだけに限定しています。
つまり、針金や竹ひご等で模型を作れるようなものに限定しています。
このような内包の仕方に限ると、内包関係は図のようなものに限られます。
正12面体→立方体→正4面体→正8面体の包含関係はよく知られていますが、
一番内側の、正8面体に正20面体が含まれる図はあまり見かけないと思います。
解析関係
ロピタルの定理の反例について
ロピタルの定理は、いささか使用上の注意を要する定理であり、用いる際の一つの重要な条件として、
分母の微分が0にならない、という条件が必要です。
この条件が満たされない場合にロピタルの定理が成立しないような反例を紹介します。
良く知られている反例としては、xが限りなく大きくなる場合に、f(x)/g(x) が振動する一方で f'(x)/g'(x)
が収束するような例がありますが、ここでは、xが0に近づくときに、
f(x)/g(x) も f'(x)/g'(x) も収束するにも関わらず、収束先が異なるような例を作成しました。
作成した反例はこちら。
岡本による,いたるところ微分不可能な関数について
いたるところ微分不可能な関数としては、ワイエルシュトラス関数や高木関数などが知られていますが、
ここでは、京都大学数理解析研究所の岡本久教授が考案した興味深い関数を紹介します。
この関数は、パラメータによって滑らかさが変化し、パラメータの値によって、
ほとんどいたるところ微分可能になったり、
ほとんどいたるところ微分不可能になったり、
全ての点で微分不可能になったりします。
紹介はこちら。
バーゼル問題の初等解法
平方数の逆数の和 1/1+1/4+1/9+1/16+1/25+ … がπ2/6 に収束することは,
1735年にオイラーによって示されています。
バーゼル問題の証明は、sin関数の無限乗積展開を用いるもの、
ベルヌーイ数の母関数を用いるものなど、色々とありますが、
ここでは高校数学の範囲内での証明を考えてみました。
証明はディラックのデルタ関数のフーリエ級数展開を元にしたものですが、
もちろん高校数学の範囲内なので証明にはフーリエ級数は出てきません。
証明はこちらです。
円周率が3.14より大きく3.145より小さいことの証明
円周率はおよそ3.14であると言われていますが、
直接的な証明を見たことのある人は少ないと思いますので書いてみました。
具体的には、アルキメデスの考え方に基づき円に内接する96角形と外接する96角形を考え、
円周率の小数点以下3位を四捨五入しても切り捨てても3.14になる、すなわち、
円周率が3.14より大きく3.145より小さくなることを示しています。
円周率の定義については色々と考えられますが、最も基本的な定義である、
直径と円周の長さの比を採用しました。
あまり予備知識が無くても読めるように書いてあります。
証明はこちら。
二変数関数におけるC2級の条件
二変数関数 u(x,y) がC2$級、つまり二階連続微分可能であることの条件は
uxx,uxy,uyy が全て連続になることです(下付きの添え字は偏微分を表す)。
ここで、連続性の条件は uxx, uxy, uyy の全てについて必要です。
なんとなく uxx と uyy が連続ならば uxy も連続になりそうですが、
実は uxx と uyy が連続にも関わらず uxy が連続にならないような例が存在します。
具体例はこちら。
資産選択と伊藤の公式
確率論の伊藤の公式の応用としては、オプションの価格決定が有名ですが、
ポートフォリオの最適資産選択問題でも重要な役割を果たしています。
ここではそのなかでも最も簡単な例を紹介します。
具体的な計算はこちら。
Laplace 方程式の解の一意性について
Laplace方程式の古典解は存在すれば一意的であることが知られています。
古典解とはこの場合 C2級の解のことです。
Laplace方程式の未知関数に関する項は △u だけですので、一意性を言うには C2級まで条件を課さなくとも
△u の連続性だけで十分のようにも思えますが、
それだと解の一意性が成り立たないような例が作れてしまいます。
具体例はこちら。
Fourier 級数が発散する連続関数の例
連続関数で,Fourier級数が一点で発散するものが存在するという事実は Paul du Bois-Reymond(1876)
によってはじめて示されましたが,その構成法はやや複雑なので,もう少し簡単な例を考えてみました。
具体例はこちら。
なお現在では、この事実は具体例を作ることなく、Banach-Steinhausの定理から非構成的に証明することができます。
統計関係
両側検定と片側検定
両側検定と片側検定についてどのように考えればよいかのメモです。
こちらです。
情報関係
簡易線形演算ライブラリ
数値解析の授業でC言語を用いてプログラミングを行う際、行列やベクトルを手軽に用いることができるように、線形演算の簡易的なライブラリを制作しまた。
こちらです。
gnuplotのepslatexターミナルで図がずれる場合の対処法
TeXで論文を書くとき、図を作成するにはgnuplotのepslatexターミナルが非常に便利ですが、その際、図がずれる場合があるのでその対処法を紹介します。
こちらです。
ヨーロピアンオプションとインプライドボラティリティの数値計算
ヨーロピアンオプションの価格を計算したりインプライドボラティリティを計算したりするC言語のプログラムを作ってみました。
こちらです。
Embarcadero C++ コンパイラの使い方
無償でC言語もしくはC++のプログラミングをするにはどうしたらよいか、よく聞かれるので、Embarcadero社の C++ コンパイラの使い方を説明します。
こちらです。
疑似乱数の生成プログラム
モンテカルロ法のシミュレーション等で一様乱数や正規乱数、指数分布に従う乱数、ポアソン分布に従う乱数などが必要となることがあります。そこで、それらの疑似乱数の生成法について説明します。
こちらです。
BitCoinにおけるブロックハッシュの生成プログラム
BitCoinにおいて用いられるブロックハッシュを生成するサンプルプログラムを作りました。
需要があるかどうかわかりませんが載せておきます。
仕組みをよく理解するため、SHA256の部分も自前でプログラムしました。
こちらです。
C++ Builder の紹介
私が昔から愛用している、C++ Builder について紹介します。
また、C++ Builder による作成例として、与えられた領域にテトリスのブロックを詰めるプログラムも紹介します。
こちらです。
配列についての小技
C言語やC++の配列で、負の添え字の配列を用いたり、多次元配列を動的確保する方法について説明します。
具体的な方法はこちら。
誤差関数の計算
誤差関数 erf(x) は偏微分方程式などの様々な場面に現れますが、プログラミング言語によっては実装されていない場合もあります。
そこで、実用上十分な精度で計算する方法を紹介します。C言語のソースも付けておきました。
ちなみに、正規分布の累積密度関数も誤差関数を用いて表すことができます。
計算法はこちら。
SSHポートフォワーディング
SSHポートフォワーディングを利用することで、直接ウェブにアクセスするのではなく、
SSHサーバーを経由してウェブにアクセスする方法を説明します。
具体的な方法はこちら。