<?xml version="1.0" encoding="UTF-8" ?>
<rss version="0.91">
  <channel>
    <title>とある理系男児のブログ</title>
    <description>理系の若者が思ったことを書くブログです。
</description>
    <link>https://fabs.gjgd.net/</link>
    <language>ja</language>
    <copyright>Copyright (C) NINJATOOLS ALL RIGHTS RESERVED.</copyright>

    <item>
      <title>MEN IN BLACK(映画)で学んだ英語</title>
      <description>&lt;br /&gt;
①山ほど書類仕事がある。&lt;br /&gt;
②私は首席で卒業しました。&lt;br /&gt;
③それで？&lt;br /&gt;
④引き受けるよ。&lt;br /&gt;
⑤(レストランで6番テーブルが上がった時に)6番上がりだ。&lt;br /&gt;
⑥ベルトを締めろ。&lt;br /&gt;
⑦あなたって本当に鈍い男ね&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;①I've got tons of paperwork.&lt;br /&gt;
②I graduated with honors.&lt;br /&gt;
③Go on.&lt;br /&gt;
④I am in（例：He is in computer⇒彼はコンピュータの仕事をしている)&lt;br /&gt;
⑤Six is up.(例：Tea 's up)&lt;br /&gt;
⑥Fasten your seatbelt&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;⑦You're really not getting this.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
http://www.eonet.ne.jp/~syumi-eigo/meninblack.html</description> 
      <link>https://fabs.gjgd.net/%E8%8B%B1%E8%AA%9E%E5%AD%A6%E7%BF%92/men%20in%20black-%E6%98%A0%E7%94%BB-%E3%81%A7%E5%AD%A6%E3%82%93%E3%81%A0%E8%8B%B1%E8%AA%9E</link> 
    </item>
    <item>
      <title>温暖化とサイエンス</title>
      <description>温暖化については、色々な言説がある。&lt;br /&gt;
嘘だという言説も面白いのかもしれない。&lt;br /&gt;
厳しい意見を述べるけれども、&lt;br /&gt;
うそと決めつけるロジックが稚拙だと思う。&lt;br /&gt;
&lt;br /&gt;
例えば、東京大学のサステイナビリティ学に関するHPでは、&lt;br /&gt;
温暖化の懐疑論に関する意見がまとめられている。&lt;br /&gt;
&lt;br /&gt;
http://www.ir3s.u-tokyo.ac.jp/sosho&lt;br /&gt;
&lt;br /&gt;
こちらのHPを読む限りでは、温暖化が嘘だという&lt;br /&gt;
言説もいまいちだなと思う。&lt;br /&gt;
&lt;br /&gt;
もちろん、温暖化が嘘という言論をすべて否定するつもりもないが、&lt;br /&gt;
最低限、科学的な方法にのっとった主張をすべきであり、&lt;br /&gt;
明らかにミスリーディングな考察が多すぎるのではないか？</description> 
      <link>https://fabs.gjgd.net/%E7%A7%91%E5%AD%A6/%E6%B8%A9%E6%9A%96%E5%8C%96%E3%81%A8%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9</link> 
    </item>
    <item>
      <title>Excel VBAで素数を探索してみる。</title>
      <description>素数とは、1 と自分自身以外に正の約数を持たない、1 でない自然数のことです。&lt;br /&gt;
1～100までの素数は容易に探索できるかもしれません。&lt;br /&gt;
でも1～1000までの素数となるとちょっと骨が折れるでしょうね。&lt;br /&gt;
そこで、プログラミングの出番です。&lt;br /&gt;
&lt;br /&gt;
実を言うと素数を探索するアルゴリズムは複数あります。&lt;br /&gt;
したがって、素数はコンピュータ計算でも探索できます。&lt;br /&gt;
&lt;br /&gt;
ここでは、次の方法で素数を探索してみようと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#0000FF&quot;&gt;①　a_k = k (k = 1,2,3…1000)となる数列akを定義する。&lt;br /&gt;
②　k = 1であれば、素数ではないと判断する。&lt;br /&gt;
③　k = 2であれば、素数と判断する。&lt;br /&gt;
③　k ＞2であるa_kを2~kまでのすべての数で割っていく。&lt;br /&gt;
④　③のときに、割った数pに対してひとつでもa_k ≡ 0 (mod p) を満たせば&lt;br /&gt;
　　 素数でないと判断する。&lt;br /&gt;
※modの意味がわからない方はこちらへ⇒http://sur.ac/faq/mod.html&lt;br /&gt;
⑤　kの値を繰り上げて③～④を繰り返す。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上の計算方法をVBAプログラムにすると次のようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;Sub primenumber()&lt;br /&gt;
&lt;br /&gt;
Dim k, j As Long&lt;br /&gt;
Dim hantei As Long&lt;br /&gt;
Dim counter As Long&lt;br /&gt;
&lt;br /&gt;
counter = 0&lt;br /&gt;
&lt;br /&gt;
For k = 1 To 1000&lt;br /&gt;
&lt;br /&gt;
  If k = 1 Then&lt;br /&gt;
  &lt;br /&gt;
  hantei = 0&lt;br /&gt;
  &lt;br /&gt;
  '1は素数じゃない。&lt;br /&gt;
  &lt;br /&gt;
  End If&lt;br /&gt;
  &lt;br /&gt;
  If k = 2 Then&lt;br /&gt;
  &lt;br /&gt;
  hantei = 1&lt;br /&gt;
  counter = counter + 1&lt;br /&gt;
  &lt;br /&gt;
  Cells(counter, 1).Value = counter&lt;br /&gt;
  Cells(counter, 2).Value = k&lt;br /&gt;
  &lt;br /&gt;
  '2は素数である。&lt;br /&gt;
  &lt;br /&gt;
  End If&lt;br /&gt;
  &lt;br /&gt;
  If k = 3 Then&lt;br /&gt;
  &lt;br /&gt;
  hantei = 1&lt;br /&gt;
  counter = counter + 1&lt;br /&gt;
  Cells(counter, 1).Value = counter&lt;br /&gt;
  Cells(counter, 2).Value = k&lt;br /&gt;
  &lt;br /&gt;
  '3は素数である。&lt;br /&gt;
  &lt;br /&gt;
  End If&lt;br /&gt;
  &lt;br /&gt;
  If k &gt; 3 Then&lt;br /&gt;
  &lt;br /&gt;
  hantei = 1&lt;br /&gt;
  &lt;br /&gt;
     For j = 2 To k - 1&lt;br /&gt;
     &lt;br /&gt;
        Data = k Mod j&lt;br /&gt;
        &lt;br /&gt;
          If Data = 0 Then&lt;br /&gt;
          &lt;br /&gt;
          hantei = 0&lt;br /&gt;
          &lt;br /&gt;
          End If&lt;br /&gt;
        &lt;br /&gt;
     Next j&lt;br /&gt;
&lt;br /&gt;
     If hantei = 1 Then&lt;br /&gt;
     counter = counter + 1&lt;br /&gt;
     Cells(counter, 1).Value = counter&lt;br /&gt;
     Cells(counter, 2).Value = k&lt;br /&gt;
  &lt;br /&gt;
     End If&lt;br /&gt;
  '3以上の数の素数判定実施。&lt;br /&gt;
  End If&lt;br /&gt;
  &lt;br /&gt;
Next k&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
解析結果：&lt;br /&gt;
&lt;a href=&quot;http://file.fabs.gjgd.net/sosuu.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://file.fabs.gjgd.net/Img/1346583076/&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
このように、プログラミングを勉強すれば素数も簡単に探せるようになるのです。</description> 
      <link>https://fabs.gjgd.net/%E6%95%B0%E5%AD%A6/excel%20vba%E3%81%A7%E7%B4%A0%E6%95%B0%E3%82%92%E6%8E%A2%E7%B4%A2%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%E3%80%82</link> 
    </item>
    <item>
      <title>Excel VBAで土壌からの放射線リスクを計算する。</title>
      <description>京都市立芸術大学 の藤原隆男のHPを参考にすると&lt;br /&gt;
土壌中放射線物質によって人間に暴露される放射線の強さを計算できます。&lt;br /&gt;
&lt;br /&gt;
詳細：http://kcua.ac.jp/~fujiwara/nuclear/air_dose.html&lt;br /&gt;
&lt;br /&gt;
前回の日記で紹介した台形公式のロジックをもとに、数値積分法を応用して&lt;br /&gt;
土壌からの放射線の強さを計算するプログラミングを作ってみようと思う。&lt;br /&gt;
&lt;br /&gt;
まず、上記のHPより放射線の強さの式は：&lt;br /&gt;
&lt;br /&gt;
I =∫(0～∞) p*exp(-u*√(r^2 + h^2))*(2π*r*dr)/{4π(r^2 + h^2)｝&lt;br /&gt;
I =p*∫(0～∞) exp(-u*√(r^2 + h^2))*(r*dr)/{2*(r^2 + h^2)｝&lt;br /&gt;
&lt;br /&gt;
となります。これを計算してSvに換算できれば土壌による放射線のリスクを&lt;br /&gt;
正確に評価できます。本稿では、Iの計算方法まで論じます。&lt;br /&gt;
&lt;br /&gt;
さて、25℃の大気では、u = １/110.16 m^2であり、&lt;br /&gt;
p=1のときのIを計算すると次のプログラムを実行すればいいでしょう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;Sub intensity_calc()&lt;br /&gt;
&lt;br /&gt;
Dim R As Double&lt;br /&gt;
Dim dR As Double&lt;br /&gt;
Dim U As Double&lt;br /&gt;
Dim A, B As Double&lt;br /&gt;
Dim P, Q As Double&lt;br /&gt;
&lt;br /&gt;
H = 0.001&lt;br /&gt;
S = 0&lt;br /&gt;
U = 1 / 110&lt;br /&gt;
dR = 0.01&lt;br /&gt;
&lt;br /&gt;
Cells(2, 2).Value = &quot;h&quot;&lt;br /&gt;
Cells(2, 3).Value = &quot;I&quot;&lt;br /&gt;
&lt;br /&gt;
For i = 1 To 200&lt;br /&gt;
&lt;br /&gt;
S = 0&lt;br /&gt;
R = 0&lt;br /&gt;
&lt;br /&gt;
'台形公式計算&lt;br /&gt;
&lt;br /&gt;
  A = Exp(-U * (R ^ 2 + H ^ 2) ^ 0.5)&lt;br /&gt;
  B = 2 * (R ^ 2 + H ^ 2)&lt;br /&gt;
  S = S + (A / B) * R * dR * 0.5&lt;br /&gt;
  R = R + dR&lt;br /&gt;
  &lt;br /&gt;
  For j = 1 To 10000&lt;br /&gt;
  A = Exp(-U * (R ^ 2 + H ^ 2) ^ 0.5)&lt;br /&gt;
  B = 2 * (R ^ 2 + H ^ 2)&lt;br /&gt;
  S = S + (A / B) * R * dR&lt;br /&gt;
  R = R + dR&lt;br /&gt;
  Next j&lt;br /&gt;
&lt;br /&gt;
S = S - (A / B) * R * dR * 0.5&lt;br /&gt;
  &lt;br /&gt;
Cells(2 + i, 2).Value = H&lt;br /&gt;
Cells(2 + i, 3).Value = S&lt;br /&gt;
&lt;br /&gt;
H = H + 0.1&lt;br /&gt;
&lt;br /&gt;
Next i&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
解析結果：&lt;br /&gt;
&lt;a href=&quot;http://file.fabs.gjgd.net/914a7e51.jpeg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://file.fabs.gjgd.net/Img/1345975155/&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
この図は紹介したHPにも載っていますが、数学的な導出がありません。&lt;br /&gt;
理論的には、こういった計算を行えば解析できるということを&lt;br /&gt;
このブログで示しました。この解析結果をそのまま読みとめれば、&lt;br /&gt;
土壌のBq/m2から、高さあたりの被ばく量を概算できるのです。&lt;br /&gt;
次回は、土壌中のBq/m2とSvの関係を評価します。</description> 
      <link>https://fabs.gjgd.net/%E6%94%BE%E5%B0%84%E6%80%A7%E7%89%A9%E8%B3%AA%E3%81%AE%E7%89%A9%E7%90%86%E5%8C%96%E5%AD%A6/excel%20vba%E3%81%A7%E5%9C%9F%E5%A3%8C%E3%81%8B%E3%82%89%E3%81%AE%E6%94%BE%E5%B0%84%E7%B7%9A%E3%83%AA%E3%82%B9%E3%82%AF%E3%82%92%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B%E3%80%82</link> 
    </item>
    <item>
      <title>台形公式と土壌からの放射線リスク(PART1)</title>
      <description>PART1はあくまで台形公式についてのみ書きます。&lt;br /&gt;
&lt;br /&gt;
今、y = x^2を0から1の範囲で積分せよという問題を考える。&lt;br /&gt;
この積分は簡単だと思う。何故なら、∫x^2dx =x^3/3+Cより、&lt;br /&gt;
1/3だとすぐ確認できるからである。&lt;br /&gt;
&lt;br /&gt;
では、y=√(x＾4-ｘ+sinx)に変更するとどうだろうか？&lt;br /&gt;
こういう式になった途端にどうすればいいかわからなくなるだろう。&lt;br /&gt;
このように、数学的にちゃんと積分する方法がわからない式だってたくさんある。&lt;br /&gt;
しかし、y=f(x)がどんな式であれ、近似的に精度よく積分できる方法も存在する。&lt;br /&gt;
&lt;br /&gt;
台形公式は、そういった手法の一つである。台形公式は、&lt;br /&gt;
積分範囲を何点かに分割して台形をつくり、その台形の面積を求めることで&lt;br /&gt;
数値積分する方法である。&lt;br /&gt;
&lt;br /&gt;
具体例：今、y=f(x)をa～b( a&lt;b)の範囲で積分する場合を考えよう。&lt;br /&gt;
x = aからx = bの区間をN+1個の点x0~xNで分割し、図のようにN個の台形を作る。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://file.fabs.gjgd.net/308b91d8.jpeg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://file.fabs.gjgd.net/Img/1345907186/&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
この図から台形の面積の総和Stを調べると、数学的に下記の式であらわせる。&lt;br /&gt;
&lt;br /&gt;
St = {(f(x0)+f(x1))*(x1-x0)/2}+…+{(f(xN)+f(xN-1))*(xN-xN-1)/2}…(1)&lt;br /&gt;
&lt;br /&gt;
今分割をx1-x0 = x2 - x1 = …xk+1-xk　=　ｘN - x0 = hとなるように行うのであれば、&lt;br /&gt;
&lt;br /&gt;
St = {f(x0) + f(xN)}/2*h + Σf(xk)*h/2  (k=1 ~ k = N-1)…(2)&lt;br /&gt;
&lt;br /&gt;
がなりたつ。分割数を増やしていけば、この台形の面積の総和は積分結果に近づく。&lt;br /&gt;
&lt;br /&gt;
この(2)式を実行するプログラミングとf(x)を定義すれば、&lt;br /&gt;
&lt;br /&gt;
どんな式でも簡単に積分できるようになるでしょう。&lt;br /&gt;
</description> 
      <link>https://fabs.gjgd.net/%E6%95%B0%E5%AD%A6/%E5%8F%B0%E5%BD%A2%E5%85%AC%E5%BC%8F%E3%81%A8%E5%9C%9F%E5%A3%8C%E3%81%8B%E3%82%89%E3%81%AE%E6%94%BE%E5%B0%84%E7%B7%9A%E3%83%AA%E3%82%B9%E3%82%AF-part1-</link> 
    </item>
    <item>
      <title>Excel VBAで学ぶRunge-Kutta法(PART2)ロトカ・ボルテラ方程式を解く。</title>
      <description>ロトカ・ボルテラ方程式とは、捕食生物および被捕食生物の個体数変動を&lt;br /&gt;
数式化した方程式であり、1階の二元連立微分方程式の代表的な問題です。&lt;br /&gt;
この方程式を解く際もRunge－Kutta法が大活躍します。具体的な方法論については&lt;br /&gt;
ゴッドフット企画さまのHPを引用させていただきます。&lt;br /&gt;
&lt;br /&gt;
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝&lt;br /&gt;
引用元：http://homepage1.nifty.com/gfk/rungekutta.htm&lt;br /&gt;
次の１階２元連立微分方程式で説明する。&lt;br /&gt;
&lt;br /&gt;
　dφ/dt = F( t , φ, ω)&lt;br /&gt;
　dω/dt = G( t , φ, ω)&lt;br /&gt;
&lt;br /&gt;
　F,Gは時間tと変数φ、ωの関数&lt;br /&gt;
&lt;br /&gt;
初期値　t=t0　の時、φ=φ0, ω=ω0とすると、Δt後の変数値は下式となる。&lt;br /&gt;
&lt;br /&gt;
　　k1 = Δt・F( t0, φ0, ω0)&lt;br /&gt;
　　m1 = Δt・G( t0, φ0, ω0)&lt;br /&gt;
&lt;br /&gt;
　 k2 = Δt・F( t0+Δt/2, φ0+k1/2, ω0+m1/2)&lt;br /&gt;
　　m2 = Δt・G( t0+Δt/2, φ0+k1/2, ω0+m1/2)&lt;br /&gt;
&lt;br /&gt;
　　k3 = Δt・F( t0+Δt/2, φ0+k2/2, ω0+m2/2)&lt;br /&gt;
　　m3 = Δt・G( t0+Δt/2, φ0+k2/2, ω0+m2/2)&lt;br /&gt;
&lt;br /&gt;
　　k4 = Δt・F( t0+Δt, φ0+k3, ω0+m3)&lt;br /&gt;
　　m4 = Δt・G( t0+Δt, φ0+k3, ω0+m3)&lt;br /&gt;
&lt;br /&gt;
　　k = (k1+2・K2+2・k3+k4)/6&lt;br /&gt;
　　m = (m1+2・m2+2・m3+m4)/6&lt;br /&gt;
&lt;br /&gt;
Δt後の変数値φ1,ω1は&lt;br /&gt;
&lt;br /&gt;
　　φ1 = φ0 + k&lt;br /&gt;
　　ω1 = ω0 + m&lt;br /&gt;
&lt;br /&gt;
となる。&lt;br /&gt;
&lt;br /&gt;
この手続きを繰り返せば、離散的だが、すべての時間での変数値が求まります。&lt;br /&gt;
ちなみに、Δtは0.0001秒のような微小値を設定する必要があります。&lt;br /&gt;
Δtが大きすぎると解が発散する場合があります。&lt;br /&gt;
&lt;br /&gt;
計算量が多いので、手計算は困難です。EXCELなどを使って計算しましょう。&lt;br /&gt;
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝&lt;br /&gt;
&lt;br /&gt;
このゴットフット企画さまのHPの理論を応用すれば、ロトカ・ボルテラ方程式の&lt;br /&gt;
解析コードが作成できます。そこで、方程式例として&lt;br /&gt;
dx/dt = (8 - 3 * y) * x         &lt;br /&gt;
dy/dt = (-18 + 4 * x) * y　&lt;br /&gt;
初期条件t = 0, x = 10 , y = 7&lt;br /&gt;
を考えましょう。この微分方程式の数値計算用プログラミングのソースコードを&lt;br /&gt;
下記に記します。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;Sub RungeKutta()&lt;br /&gt;
&lt;br /&gt;
Dim t, dt As Single&lt;br /&gt;
Dim x, y As Single&lt;br /&gt;
Dim K1, K2, K3, K4 As Single&lt;br /&gt;
Dim L1, L2, L3, L4 As Single&lt;br /&gt;
Dim i As Long&lt;br /&gt;
&lt;br /&gt;
'初期値の入力&lt;br /&gt;
&lt;br /&gt;
t = 0&lt;br /&gt;
x = 10#&lt;br /&gt;
y = 7#&lt;br /&gt;
dt = 0.01&lt;br /&gt;
&lt;br /&gt;
Cells(1, 1).Value = &quot;t&quot;&lt;br /&gt;
Cells(1, 2).Value = &quot;x&quot;&lt;br /&gt;
Cells(1, 3).Value = &quot;y&quot;&lt;br /&gt;
&lt;br /&gt;
Cells(2, 1).Value = t&lt;br /&gt;
Cells(2, 2).Value = x&lt;br /&gt;
Cells(2, 3).Value = y&lt;br /&gt;
&lt;br /&gt;
For i = 0 To 5000&lt;br /&gt;
&lt;br /&gt;
K1 = F(t, x, y) * dt&lt;br /&gt;
L1 = G(t, x, y) * dt&lt;br /&gt;
&lt;br /&gt;
K2 = F(t + dt / 2, x + K1 / 2, y + L1 / 2) * dt&lt;br /&gt;
L2 = G(t + dt / 2, x + K1 / 2, y + L1 / 2) * dt&lt;br /&gt;
&lt;br /&gt;
K3 = F(t + dt / 2, x + K2 / 2, y + L2 / 2) * dt&lt;br /&gt;
L3 = G(t + dt / 2, x + K2 / 2, y + L2 / 2) * dt&lt;br /&gt;
&lt;br /&gt;
K4 = F(t + dt, x + K3, y + L3) * dt&lt;br /&gt;
L4 = G(t + dt, x + K3, y + L3) * dt&lt;br /&gt;
&lt;br /&gt;
t = t + dt&lt;br /&gt;
x = x + (K1 + 2 * K2 + 2 * K3 + K4) / 6&lt;br /&gt;
y = y + (L1 + 2 * L2 + 2 * L3 + L4) / 6&lt;br /&gt;
&lt;br /&gt;
Cells(3 + i, 1).Value = t&lt;br /&gt;
Cells(3 + i, 2).Value = x&lt;br /&gt;
Cells(3 + i, 3).Value = y&lt;br /&gt;
&lt;br /&gt;
Next i&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Function F(t, x, y)&lt;br /&gt;
&lt;br /&gt;
F = (8 - 3 * y) * x&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Function G(t, x, y)&lt;br /&gt;
&lt;br /&gt;
G = (-18 + 4 * x) * y&lt;br /&gt;
&lt;br /&gt;
End Function&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
解析結果：&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://file.tafel.gjgd.net/655bd58f.jpeg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://file.tafel.gjgd.net/Img/1345894434/&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
※特定のxに対してyは周期的に変化していることが確認できる。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://file.tafel.gjgd.net/5622b494.jpeg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://file.tafel.gjgd.net/Img/1345894440/&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
※ｘ、yの経時変化をみると図のようになっている。&lt;br /&gt;
&lt;br /&gt;
このようにして、Runge-Kutta法を応用すると連立微分方程式のような&lt;br /&gt;
複雑な方程式も解析できます。</description> 
      <link>https://fabs.gjgd.net/%E6%95%B0%E5%AD%A6/excel%20vba%E3%81%A7%E5%AD%A6%E3%81%B6runge-kutta%E6%B3%95-part2-%E3%83%AD%E3%83%88%E3%82%AB%E3%83%BB%E3%83%9C%E3%83%AB%E3%83%86%E3%83%A9%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%82%92%E8%A7%A3%E3%81%8F%E3%80%82</link> 
    </item>
    <item>
      <title>Excel VBA で学ぶRunge-Kutta法(PART1)</title>
      <description>Runge-Kutta法とは、微分方程式の解法の一つです。&lt;br /&gt;
(原理の詳細：http://hooktail.org/computer/index.php?Runge-Kutta%CB%A1)&lt;br /&gt;
例えば、任意の微分方程式に対して、&lt;br /&gt;
&lt;br /&gt;
dy/dx = f(x,y)に対して&lt;br /&gt;
&lt;br /&gt;
k1 =  f(x,y)&lt;br /&gt;
k2 =  f(x+Δx/2,y+k1*Δx/2)&lt;br /&gt;
k3 =  f(x+Δx/2,y+k2*Δx/2)&lt;br /&gt;
k4 =  f(x+Δx,y+k3*Δx)&lt;br /&gt;
Δy = (Δx/6)*(k1+2k2+2k3+k4)&lt;br /&gt;
&lt;br /&gt;
とすることでΔxに対するΔyを予想し、y=f(x)を正確に近似する方法です。&lt;br /&gt;
&lt;br /&gt;
具体的にExcelのマクロを作って計算してみましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;問い:微分方程式dy/dx = xyをRunge-Kutta法で解け。ただし、x = 0ならy=10とする。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
解法：上記計算のルールを用いてマクロをつくると下のようになる。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;Sub RungeKutta()&lt;br /&gt;
&lt;br /&gt;
Dim K1, K2, K3, K4 As Single&lt;br /&gt;
Dim x, y As Single&lt;br /&gt;
Dim dx, dy As Single&lt;br /&gt;
Dim i As Long&lt;br /&gt;
&lt;br /&gt;
Cells(2, 2).Value = &quot;x&quot;&lt;br /&gt;
Cells(2, 3).Value = &quot;y&quot;&lt;br /&gt;
&lt;br /&gt;
x = 0&lt;br /&gt;
y = 10&lt;br /&gt;
Cells(3, 2).Value = x&lt;br /&gt;
Cells(3, 3).Value = y&lt;br /&gt;
dx = 0.01&lt;br /&gt;
&lt;br /&gt;
For i = 1 To 300&lt;br /&gt;
&lt;br /&gt;
K1 = F(x, y)&lt;br /&gt;
K2 = F(x + dx / 2, y + dx / 2 * K1)&lt;br /&gt;
K3 = F(x + dx / 2, y + dx / 2 * K2)&lt;br /&gt;
K4 = F(x + dx, y + dx * K3)&lt;br /&gt;
dy = (K1 + 2 * K2 + 2 * K3 + K4) * (dx / 6)&lt;br /&gt;
x = x + dx&lt;br /&gt;
y = y + dy&lt;br /&gt;
Cells(3 + i, 2).Value = x&lt;br /&gt;
Cells(3 + i, 3).Value = y&lt;br /&gt;
&lt;br /&gt;
Next i&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Function F(x, y)&lt;br /&gt;
&lt;br /&gt;
F = -2 * x * y&lt;br /&gt;
&lt;br /&gt;
End Function&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
計算結果&lt;br /&gt;
&lt;a href=&quot;http://file.fabs.gjgd.net/36e9d697.jpeg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://file.fabs.gjgd.net/Img/1345756195/&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
このような簡素なプログラミングでも微分方程式は精度よく計算できます。&lt;br /&gt;
とくに、Runge-Kutta法は常微分方程式であれば、&lt;br /&gt;
複雑な式でも解析が容易です。以後、Runge-Kutta法の解析例を&lt;br /&gt;
紹介していきたいと思います。</description> 
      <link>https://fabs.gjgd.net/%E6%95%B0%E5%AD%A6/excel%20vba%20%E3%81%A7%E5%AD%A6%E3%81%B6runge-kutta%E6%B3%95-part1-</link> 
    </item>
    <item>
      <title>固有粘度とHuggins Plot</title>
      <description>前回、溶媒の粘度をη0、溶液の粘度をηとして、&lt;br /&gt;
オストワルドの粘度計の原理を示した。&lt;br /&gt;
&lt;br /&gt;
今日は固有粘度について語ろうと思う。&lt;br /&gt;
&lt;br /&gt;
溶液の溶質の濃度をCとすると、実はηとη0の間には、一般的に&lt;br /&gt;
&lt;br /&gt;
η = η0(1+[η]C+[η2]C^2+…)…(1)&lt;br /&gt;
&lt;br /&gt;
が成り立ち、状態方程式をビリアル展開した式に似た近似式が成り立つ。&lt;br /&gt;
&lt;br /&gt;
よって、高分子溶液のようにCが十分に小さい場合、&lt;br /&gt;
C^2&lt;&lt;1なので、C^2≒0と近似してよい。この場合、&lt;br /&gt;
&lt;br /&gt;
η = η0(1+[η]C)⇔[η]= {(η-η0)/η0}/C より[η]は次式のようになる。&lt;br /&gt;
&lt;br /&gt;
∴　[η]　 =　Lim{C⇒0}　(η/η0 - 1)/C　…(2)&lt;br /&gt;
&lt;br /&gt;
このような[η]のことを固有粘度と呼ぶ。&lt;br /&gt;
固有粘度は、Huggins Plotというデータ解析で解析することができる。&lt;br /&gt;
&lt;br /&gt;
これは、Cに対して(η/η0-1)/Cをプロットすることで固有粘度を解析する方法である。&lt;br /&gt;
&lt;br /&gt;
例えば、下表にEXCELでポリスチレン-トルエン溶液を用いて&lt;br /&gt;
(η/η0-1)/Cを解析した例を記す。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://file.fabs.gjgd.net/abc.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
この表に対して、ポリスチレン濃度と計算②をプロットしたものがHuggins Plotであり、&lt;br /&gt;
Excelでグラフ化すると図のようになる。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://file.fabs.gjgd.net/def.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
グラフの切片は、Lim{C⇒0}　(η/η0 - 1)/Cと同じであり、&lt;br /&gt;
&lt;br /&gt;
固有粘度[η]は、[η]=0.0501となっていることが確認できた。&lt;br /&gt;
&lt;br /&gt;
実験的にはこのようにして固有粘度を求められる。&lt;br /&gt;
&lt;br /&gt;
</description> 
      <link>https://fabs.gjgd.net/%E7%A7%91%E5%AD%A6/%E5%9B%BA%E6%9C%89%E7%B2%98%E5%BA%A6%E3%81%A8huggins%20plot</link> 
    </item>
    <item>
      <title>オストワルドの粘度計とその原理について</title>
      <description>趣味の勉強日記です。&lt;br /&gt;
&lt;br /&gt;
オストワルドの粘度計とは、下記動画で紹介されているガラス器具であり、&lt;br /&gt;
Ostwald　viscometerともいいます。&lt;br /&gt;
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/ScriptLoader?type=YouTube&amp;amp;id=TPfjX9EtmyA&amp;amp;width=400&amp;amp;height=300&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
この器具は、溶液の粘度測定で幅広く利用されます。&lt;br /&gt;
英語で何を言ってるか分からない方のために図を用意しました。&lt;br /&gt;
詳細は下記をご覧ください。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://file.fabs.gjgd.net/xyz.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
はじめに、右側から液体を入れます。注意してほしいのですが、&lt;br /&gt;
粘度測定を正確に行うなら恒温槽内で行いましょう。&lt;br /&gt;
次にa部にゴム管等をつけて溶液をb部まで吸い上げます。&lt;br /&gt;
温度が安定したところで、aを開放し液体を自由落下させます。&lt;br /&gt;
その際に液体がbからc部を通過する時間Δtをストップウォッチで測定することで&lt;br /&gt;
粘度を導くことが可能になるのです。なぜでしょうか？&lt;br /&gt;
&lt;br /&gt;
はじめに、b部まで液体を吸い上げる際の圧力ΔPを計算しましょう。&lt;br /&gt;
このときの圧力変化ΔPは、ニュートンの運動方程式より導くことが可能であり、&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;ΔP = mg/S = ρgV/S = ρg(S・h)/S = ρgh…(1)&lt;br /&gt;
m…吸い上げた液体の質量&lt;br /&gt;
g…重力定数&lt;br /&gt;
S…bからc部までの平均断面積&lt;br /&gt;
V…bからc部の体積&lt;br /&gt;
h…bからc部までの高さ&lt;br /&gt;
ρ…液体の密度&lt;/span&gt;&lt;br /&gt;
となります。この流体の運動をハーゲンポアズイユの式で近似すると、&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;V/Δt = (πR^4/8η)*ΔP/h…(2)&lt;/span&gt;&lt;br /&gt;
を得ることができます。ここで、Rはb からcまでの容器断面における平均半径とします。(1)を(2)に代入すると、&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;η=(πρgR^4h)Δt/(8h)=ρAΔt　…(3)&lt;/span&gt;※A　= (πgR^4h)/(8h)であり定数&lt;br /&gt;
&lt;br /&gt;
となり、粘度という物理量は非常にシンプルな関数で表現できました。&lt;br /&gt;
&lt;br /&gt;
ふつう、溶媒の粘度をη0、溶液の粘度をηとして相対的に粘度を求めることが多いです。&lt;br /&gt;
なぜかというと、Aを決定しなくて済むからです。&lt;br /&gt;
上の式を考えればわかるけれども、溶媒の密度をρ0、落下時間をΔt0、&lt;br /&gt;
溶液の密度をρ、落下時間をΔtとすると&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;η0　=　A*ρ0*Δt0　…(4)&lt;br /&gt;
η　　=　A*ρ*Δt　…(5)&lt;/span&gt;&lt;br /&gt;
が導けます。(4)および(5)式からAを消去すると、&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#FF0000&quot;&gt;η/η0 = (ρ/ρ0)*(Δt/Δt0)…(6)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
のような式を得ることができます。このη/η0 を相対粘度といいます。&lt;br /&gt;
オストワルドの粘度計は、このような相対粘度の解析に大変すぐれた&lt;br /&gt;
装置です。&lt;br /&gt;
&lt;br /&gt;
</description> 
      <link>https://fabs.gjgd.net/%E7%A7%91%E5%AD%A6/%E3%82%AA%E3%82%B9%E3%83%88%E3%83%AF%E3%83%AB%E3%83%89%E3%81%AE%E7%B2%98%E5%BA%A6%E8%A8%88%E3%81%A8%E3%81%9D%E3%81%AE%E5%8E%9F%E7%90%86%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6</link> 
    </item>
    <item>
      <title>奇数を並べると-part2(3乗の和の公式を作ってみる。)</title>
      <description>奇数を今度は次のように並べてみよう&lt;br /&gt;
&lt;br /&gt;
1番目:1&lt;br /&gt;
2番目:3,5&lt;br /&gt;
3番目:7,9,11&lt;br /&gt;
4番目:13,15,17,19&lt;br /&gt;
&lt;br /&gt;
規則性は理解できただろうか？&lt;br /&gt;
奇数列1,3,5,7,9,11,13,15,17,19…に対して&lt;br /&gt;
1番目の列は、奇数列の左から数字を1個取り出して1のみ&lt;br /&gt;
2番目の列は、先ほど取り出した1個を除き、奇数列の左から数字を2個取り出して3，5&lt;br /&gt;
…&lt;br /&gt;
といった具合で奇数を取り出しています。&lt;br /&gt;
&lt;br /&gt;
前回と同じように、この和を見てみよう。&lt;br /&gt;
&lt;br /&gt;
1番目:1 = 1 = 1×1×1&lt;br /&gt;
2番目:3+5 = 8 = 2×2×2&lt;br /&gt;
3番目:7+9+11 =27 = 3×3×3&lt;br /&gt;
4番目:13+15+17+19 = 64　=4×4×4&lt;br /&gt;
:&lt;br /&gt;
:&lt;br /&gt;
なんと、今度は3乗の数になっていました。&lt;br /&gt;
私は、このルールを発見した時、感動するとともに奇数は奇なる数と思いましたね。&lt;br /&gt;
&lt;br /&gt;
この数列を利用して1^3+2^3+3^3+…+n^3を求めることが可能です。&lt;br /&gt;
n^3までの和は、1～n番目までの列に存在するすべての奇数の和と同じです。&lt;br /&gt;
また数列のルールにもどると、1からスタートして奇数列から&lt;br /&gt;
1+2+3+4+…+n個の奇数を取り出しています。&lt;br /&gt;
よってpart1より、奇数列の和は足した個数の二乗になるので&lt;br /&gt;
1^3+2^3+3^3+…+n^3　=(1+2+3+4+…+n)^2となることが容易に確認できるでしょう。&lt;br /&gt;
&lt;br /&gt;
詳細：&lt;a href=&quot;http://fabs.gjgd.net/Entry/21/&quot; target=&quot;_blank&quot;&gt;奇数を並べると-part1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
こういう方法を用いても高校数学の数列の公式をつくることができるのです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</description> 
      <link>https://fabs.gjgd.net/%E6%95%B0%E5%AD%A6/%E5%A5%87%E6%95%B0%E3%82%92%E4%B8%A6%E3%81%B9%E3%82%8B%E3%81%A8-part2-3%E4%B9%97%E3%81%AE%E5%92%8C%E3%81%AE%E5%85%AC%E5%BC%8F%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E3%80%82-</link> 
    </item>

  </channel>
</rss>