ものすごくどうでもよい英文に関する質問 [お前らに質問]
Is Alice cuter than anybody?
( ), nobody is cuter than Alice.
の上の括弧の部分には、「YES」、「NO」のどちらが入るケロか?
かなり日本語としておかしいと思うけれど、「誰もアリスよりかわいいわけではない」は、
ところで、「Anybody is not cuter than Alice.」だと、「アリスよりかわいいヒトは存在しうるか否か?」、どっちだケロ?
Google翻訳では、「誰もがアリスよりかわいいわけではない」
MicroSoftのBing翻訳では、「誰もがアリスよりかわいいではありません」
excite翻訳では、「誰もアリスほどかわいくない」
Weblio翻訳では、「誰も、アリスよりかわいくありません」
Google翻訳とBing翻訳系の訳と、excite翻訳とWeblio翻訳系の訳のどちらの訳が正しいですか?
オレはわからないから(^^)
http://subpedia.org/translate/?sl=ja&tl=en&hl=ja
なるサイトで、「Nobody is not cuter than Alice.」という文を入力し、各種翻訳ソフトで自動翻訳してみると、非常に面白い結果が得られる。
Google翻訳:誰もアリスよりかわいいわけではありません。
Bing翻訳:誰もアリスよりかわいない。(関西弁ケロか?)
Excite翻訳:誰もアリスほどかわいくない。
Baidu翻訳:誰もアリスよりかわいくない。
などなど。
さらに、4次の項までとった計算結果 Fortranのプログラムつき [ひとこと言わねば]
初期値問題
に対し、テーラー展開を4次の項までとった
を使って、計算点の間隔hをh=0.5として、x=0からx=5まで計算した結果はこちら↓
h=0.5という粗い間隔でもかなりよく計算できていることがわかる。
この計算法は、4次のルンゲ・クッタ法と同程度の計算精度をもっているから、当たり前といえば当たり前なんだけれど、スゴイにゃ。
参考までに、スプレッドシートを使って、オイラー法と2次の項までとったテーラー展開に基づく、同一条件での計算結果のグラフは次のとおり。
その差は歴然!!
ということで、例によって、久しぶりに、ネムネコの自尊ソングを♪
なお、この計算に使用したForranのプログラムはこちら。
parameter(n=10)
real x(0:n),y(0:n)
x=0; y=0
a = 0; b = 5
h = (b-a)/n
do i=1,n
x(i)=a+h*i
end do
do i=0, n-1
dy1 = x(i)+y(i)
dy2 = 1+dy1
dy3 = 1+dy1
dy4 = 1+dy1
y(i+1)=y(i)+dy1*h+dy2/2*h*h+dy3/6*h*h*h+dy4/24*h**4
end do
write(*,*) ' x 数値解 厳密解 相対誤差'
do i=0,n
write(*,100) x(i),y(i),exp(x(i))-x(i)-1,abs(y(i)-(exp(x(i))-x(i)-1))
end do
100 format(3(f10.6,1x),e13.6)
end
function f(x,y)
f=x+y
end
この問題の場合、2次以上の高次微分が
と簡単になるので、
とすることによって、4次のルンゲ・クッタ法以上の高精度で計算することができると同時に、より高精度な計算への拡張が可能になる。
なのですが、
その反面、
から求められる3次以上の高次微分が複雑になる場合、この高次微分を自分で手計算で求めなければならないのでこの手間がかかると同時に、汎用的なプログラム化を妨げるという致命的な欠点を有しているのは事実。
とはいえ、
2次微分は、
から簡単に計算できるので、テーラー展開の2次の項までとって計算することはたいして苦にならないでしょう。
たとえば、f(x,y)=x+sin yとした
の場合、(4)式を使わず、この式の両辺をxで微分すれば、
と簡単に求められる。
そして、テーラー展開とこの結果に基づき
という漸化式を作り、前進的に解いてゆけば、修正オイラー法や2次のルンゲ・クッタ法を知らなくても、修正オイラー法や2次のルンゲ・クッタ法と同程度の精度で計算することができる。
テーラー展開という微分の比較的初歩的な知識を使うだけで、
というタイプの常微分方程式の初期値問題の比較的高精度の数値解を求められるのだから、この利点は大きいのではないか。
だ・か・ら、
お前らにだけは、
「常微分方程式の初期値問題の数値解を求められません」
なんてふざけたことは言わせない!!
計算に使用したスプレッドシートの公開(2月6日) [ひとこと言わねば]
興味のある奴はPCにダウンロードして計算してみるといいにゃ。
https://docs.google.com/spreadsheets/d/e/2PACX-1vSwlXja-G33aCk1SYHAKmVRGzBDr0AlZk65w9jtqjURX6zodmNDD5V49qalIGT4qfPBpJLgdYJHeR-B/pub?output=ods
「ネムネコは、きっと、このスプレッドシートにウィルスを仕込んでいるに違いない。危ない」と思うヒトは、Web版をクリックするといい。
Googleが提供するワープロソフト、表計算ソフトの使い方をよく知らないためにそう感じるのかもしれないけれど、Googleのこれらのただソフトは、使い勝手が悪く、機能面においても、M社のオフィースやオラクルのLibreOfficeよりも非常に劣るっているよね。ファイル共有ができるというメリットはあるけれど、こんな駄目なソフトを日常的に使うヒトはいるのかね。「Googleは世界で1、2を争うようなお金持ち企業なのだから、もっといいソフトに仕上げるべきだ」と思うのは、オレだけかね。
ということで、この曲も埋め込んでおこう。
テーラー展開を使って微分本方程式の初期値問題を解く2 [数値解析]
テーラー展開を使って微分本方程式の初期値問題を解く2
f(x)を級の関数とする。このとき、f(x+h)はxで次のようにテーラー展開が可能である。
特にn=1のとき、
で、これは平均値の定理と呼ばれる。
これから、
となり、f(x+h)をと近似したときの誤差がのオーダー、すなわち、であることがわかる。
また、f(x+h)をxのまわりで1次の項までテーラー展開すると、
となる。
したがって、h≡0のとき、
となり、
と近似したときの誤差がO(h)であることがわかる。
次に、
という常微分方程式の初期値問題について考えよう。
最もシンプルな方法は、
を用い、これを左辺におき、
と近似するものであろう。上述の議論から、
と近似したときの(打ち切り)誤差がh²程度であることがわかる。
と、点列を等間隔hに配置すれば、次の漸化式を得ることができる。
これがオイラー法と呼ばれるもので、オイラー法の局所的な打ち切り誤差はO(h²)、すなわち、h²程度である。
次の常微分方程式の初期値問題
を、h=0.1としてオイラー法で解いてみることにする。
このとき、オイラー法は
となり、
だから、
となる。
初期条件は
となるので、
を用いて、の値を定めることができる。
表計算ソフトを用いてx=2まで計算した結果は次のとおり。
オイラー法を用いて計算を進めるにつれ、厳密解
との誤差が増大してゆくことがわかる。
そこで、テーラー展開を利用して、より精度よく計算する手法を考えることにする。
であるから、合成関数の微分法よりy''は
となる。
一方、y(x+h)のxにおけるテーラー展開を2次の項までとると、
したがって、
これを微分方程式の左辺に代入すると、
となる。
そして、これから、次の漸化式を得ることができる。
この漸化式の局所打ち切り誤差はO(h³)なので、オイラー法よりも精度よく計算できるはずである。
この漸化式を用いて、常微分方程式の初期値問題
の近似解を求めることにする。
このとき、
となるので、
したがって、
h=-0.1として、表計算ソフトを用いて解いた結果は次の通りである。
この表とグラフを見ると――テーラー展開による方法の数値解と厳密解はほとんど一致しているので、このグラフでは同一の曲線に見える――、劇的に計算精度が向上していることがわかる。
この問題の場合、高次微分が
と求められるので、より高精度の
漸化式を得ることができる。
ちなみに、この漸化式の局所打ち切り誤差は。
h⁵の項までとれば、4次のルンゲ・クッタ方よりも高精度に計算することが可能である。