関数(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で質問しましょう!
似たような質問が見つかりました
- 数学 x=r・cosθの2回微分 θ=ωtとすると? 5 2022/05/10 23:53
- 数学 初歩がわからない 分数の計算 1 2022/03/26 11:47
- 物理学 レイノルズ数の導出においての疑問 1 2023/04/16 15:59
- 数学 単振り子とルンゲ・タック法 1 2022/07/15 00:05
- 工学 周波数fで表現したフーリエ変換の対称性に関する質問です。 1 2022/09/14 12:27
- 物理学 フーリエ変換の振幅について 1 2022/09/04 08:56
- 物理学 物体に一定の大きさfの力をx軸の正の向きに加える。またこの物体には抵抗係数がγの速度に比例する抵抗力 2 2023/07/06 04:01
- 物理学 相対論的運動方程式 1 2022/07/04 06:20
- 数学 R上の実数値連続関数fが周期pを持つならば次式か成り立つことを示せ。 ∫[x→x+p] f(t)dt 2 2022/09/13 10:38
- 数学 f(x)=2x+∮(0~1)(x+t)f(t)dt を満たす関数f(x)を求めよ。 3 2022/07/05 22:54
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
積分で1/x^2 はどうなるのでし...
-
e^-2xの積分
-
フーリエ級数の問題で、f(x)は...
-
∫1/(x^2+1)^2 の不定積分がわ...
-
項の右端につく縦棒の意味を教...
-
1/X^2の積分ってlogX^2ですか?
-
∫1/√x dx 積分せよ 教えて下さい
-
積分 Xの-2乗を積分するとどう...
-
何が違いますか?
-
微積分 dの意味
-
(dy/dx)+y=xの微分方程式はどの...
-
dy/dx=-2xy の一般解を求めよ ...
-
exp(-ax^2)*cosx の証明
-
2次微分の変数変換
-
∫r/(a^2+r^2)^3/2drの計算の解...
-
ある積分の問題。∫1/√(x^2+A) =...
-
確率変数XとYは独立で一様分布U...
-
連続確率変数Xの確率密度関数fx...
-
∫e^cos(x) dx の計算
-
極座標の全微分
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
積分で1/x^2 はどうなるのでし...
-
e^-2xの積分
-
∫1/(x^2+1)^2 の不定積分がわ...
-
積分 Xの-2乗を積分するとどう...
-
∫1/√x dx 積分せよ 教えて下さい
-
項の右端につく縦棒の意味を教...
-
微積分 dの意味
-
確率密度関数をf(x)=1-|x-1|と...
-
1/X^2の積分ってlogX^2ですか?
-
台形の任意の高さにおける上辺...
-
解が10になる定積分の問題(難易...
-
x/(a^2+x^2)の積分について
-
∫e^cos(x) dx の計算
-
g(x)g'(x)の積分はどうやるんで...
-
媒介変数の積分ってなぜあのよ...
-
フーリエ級数の問題で、f(x)は...
-
「急募!」数学 微分方程式 dy/dx...
-
dy/dxについて
-
数IIの積分法について
-
定積分∫[3→0]|x^2-4|dxの答え...
おすすめ情報