関数(sinとかcosとか)それ自身は、Excelの関数に、必要に応じ四則演算や合成を用いて定義されているものとします。
この関数を、一階微分しようとした場合、たとえば
dt=0.00001
fplus=f(t+dt)
ft=f(t)
dfdt=(fplus-ft)/dt
のように計算すれば、そこそこの精度で計算結果がえられ、爆発のような不審な挙動は
なさそうな感じです。
一方、二階微分は数式で書くと
f''(t)=(f'(t+dt)-f'(t))/(dt)
で、
f'(t)=(f(t+dt)-f(t))/dt
f'(t+dt)=(f((t+dt)+dt)-f(t+dt))/dt
なので、結局
f''(t)=(f(t+2*dt)-f(t))/(dt*dt)
で計算できそうな気がするのですが、こうすると、
(dt*dt)の影響が大きくなりすぎて、計算結果が爆発的に大きくなってしまいます。
恐らく無限小の次数のようなものの影響なのではないかと思うのですが…。
対処方法を教えてください。よろしくお願いします。
■関連質疑
http://oshiete.goo.ne.jp/qa/1903228.html
No.1ベストアンサー
- 回答日時:
>f'(t)=(f(t+dt)-f(t))/dt
>f'(t+dt)=(f((t+dt)+dt)-f(t+dt))/dt
>なので、結局
>f''(t)=(f(t+2*dt)-f(t))/(dt*dt)
はおかしいです。
f''(t)= (f'(t+dt) - f'(t)) / (dt) = (f(t+2*dt) + f(t) - 2*f(t+dt))/(dt*dt)
が正しい。
この回答への補足
中心差分、前進差分、後退差分を含むExcelVBAのプログラムを作成しました。遅くなりもうしわけありません。
【Excelのワークシート上の設定】
ExcelのCellには、
B4セルにtの値が、
C4には関数が、例えば=sin(B4)のように入力されているものとします。
D4セルには、dtの値が、例えば0.00001のように入力されているものとする。
【表示結果】
下記マクロを実行すると、
E4セルに中心差分による一階微分の値が表示されます。
F4セルに中心差分による二階微分の値が表示されます。
G4セルに前進差分による一階微分の値が表示されます。
H4セルに前進差分による一階微分の値が表示されます。
I4セルに前進差分による一階微分の値が表示されます。
J4セルに前進差分による一階微分の値が表示されます。
【ソースコード】
Sub 二階微分()
t = Cells(4, 2)
dt = Cells(4, 4)
ft = Cells(4, 3)
'============一階微分============
Cells(4, 2) = t + dt
Lft = Cells(4, 3)
Cells(4, 2) = t - dt
Bft = Cells(4, 3)
dCft = (Lft - Bft) / (2 * dt)
dLft = (Lft - ft) / dt
dBft = (Lft - ft) / dt
Cells(i + 10, 4) = dft
Cells(i + 10, 7) = dgt
'============二階微分============
Cells(4, 2) = t + 2 * dt
LLft = Cells(4, 3)
Cells(4, 2) = t - 2 * dt
BBft = Cells(4, 3)
ddCft = (Lft - 2 * ft + Bft) / (dt ^ 2)
ddLft = (LLft - 2 * Lft + ft) / (dt ^ 2)
ddBft = (ft - 2 * Bft + BBft) / (dt ^ 2)
'============表示============
Cells(4, 5) = dCft
Cells(4, 6) = ddCft
Cells(4, 7) = dLft
Cells(4, 8) = ddLft
Cells(4, 9) = dBft
Cells(4, 10) = ddBft
End Sub
回答ありがとうございました。
おっしゃる通りです。大変恥ずかしいミスをしていました。
このまま、このスレを閉じてしまうと、単なるスレ汚しになってしまうので、
後で「補足」のところで、サンプルプログラム(VBA)と、簡単な考察を書きます。
のちに二階微分を計算しなきゃいけなくなった人のため…。
No.2
- 回答日時:
きちんと紙の上で計算すれば #1 の通り.
実際には中心差分
f''(t) = [f(t+dt) - 2f(t) + f(t-dt)]/dt^2
で計算する方がちょっとだけうれしい.
この回答への補足
下に、中心差分、後退差分も含んだソースコードを書きました。
遅くなりもうしわけありません。
後の人のために、参考にしたものを、以下に補足的に記載します。
■参考にしたWeb上の記事
http://ja.wikipedia.org/wiki/%E5%B7%AE%E5%88%86% …
http://d.hatena.ne.jp/nowokay/20080516/1210944893
http://d.hatena.ne.jp/nowokay/20080516/1210944893
http://okwave.jp/qa/q5935311.html
http://okwave.jp/qa/q4942769.html
http://workingout.jugem.jp/?cid=4
回答ありがとうございました。
大変恥ずかしいミスをしていました。後に、「補足入力」にて、
ExcelVBAのサンプルプログラム(中心差分版)を作成し、
後の人のためになるかならないかということで、公開します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
積分で1/x^2 はどうなるのでし...
-
e^-2xの積分
-
∫1/(x^2+1)^2 の不定積分がわ...
-
∫1/√x dx 積分せよ 教えて下さい
-
積分 Xの-2乗を積分するとどう...
-
1/X^2の積分ってlogX^2ですか?
-
微積分 dの意味
-
∫e^cos(x) dx の計算
-
項の右端につく縦棒の意味を教...
-
微分のdy/dxに二乗が付いたd^2y...
-
2次微分の変数変換
-
(dy/dx)+y=xの微分方程式はどの...
-
x−1分の2の微分の仕方を教えて...
-
置換した文字を元に戻すときに...
-
微分方程式の問題。 微分方程式...
-
台形の任意の高さにおける上辺...
-
数学の問題です!
-
面積分の問題が分かりません
-
留数定理による実定積分の計算...
-
数学についてです。 この二重積...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
積分で1/x^2 はどうなるのでし...
-
e^-2xの積分
-
∫1/(x^2+1)^2 の不定積分がわ...
-
∫1/√x dx 積分せよ 教えて下さい
-
積分 Xの-2乗を積分するとどう...
-
フーリエ級数の問題で、f(x)は...
-
1/X^2の積分ってlogX^2ですか?
-
項の右端につく縦棒の意味を教...
-
微積分 dの意味
-
2次微分の変数変換
-
フーリエ変換の問題について
-
∫e^cos(x) dx の計算
-
x/(a^2+x^2)の積分について
-
次の微分があってるかを教えて...
-
媒介変数の積分ってなぜあのよ...
-
台形の任意の高さにおける上辺...
-
g(x)g'(x)の積分はどうやるんで...
-
【数学Ⅱ・Ⅲ】微分の問題
-
√((y')^2+1)のx微分が分からな...
-
exp(-ax^2)*cosx の証明
おすすめ情報