
No.2ベストアンサー
- 回答日時:
>> integ{f(x)}dxの値を再現する時にinteg{log(f(x))}dxのexpを取るといい
これは求める値が変わってしまいますからね。
>> ある複雑な数値計算の出力を積分する必要があるのですが、出力値が5桁くらいの幅
えっと,数値積分する際に,情報落ちするのではないかということですかね。
5桁くらいの足し算なら誤差はそれほど出ないと思いますよ。
どうしても心配なら,ソートして小さい順に足していったらいいのではないですかね。
-pi -- pi を 2n 等分して,h = pi / n, x_i = -pi + i * h (i = 0 -- 2n) とすれば,
例えばシンプソン法で求めるなら,
int_{-pi}^{pi} = (h / 3) * (
(y_0 + y_{2n})
+ 4 * sum_{i = 1}^{n} y_{2i - 1}
+ 2 * sum_{i = 1}^{n - 1} y_{2i}
)
となるので,あらかじめ y[i] に値を読み込んでおいて,
1. y[2i - 1] で昇順ソート,y[1] -- y[2n - 1] で総和を出す => S1
2. y[2i] で昇順ソート,y[2] -- y[2n - 2] で総和を出す => S2
3. S = (y[0] + y[2n] + 4 * S1 + 2 * S2) * (h / 3)
で求めれば,より誤差は小さくなると思いますよ。
y[0] と y[2n] も S2 に足しておいて,
あとで y[0] + y[2n] を引いたほうが安全ですかね。
あるいは,int を sum にして,S = sum f(x) (係数は無視)という発想でいくなら,
g(x) = -f(x) として,S' = sum g(x) = -S とできます。
この exp を取れば,
exp S' = exp (sum g(x)) = prod exp(g(x))
となるので,exp(g(x)) の積を取って,log を取っても求められますよ。
f(x) > 0 なら g(x) < 0 が保証されるので,exp(g(x)) < 1 となって,
小さい値に変換はできますが,この場合掛け算になるので桁落ちするでしょうね。
こんな感じで解決できませんか?
詳細な回答ありがとうございます。
数値計算についてはまだまだ学習が足りないのですが、上記の方法参考になります。
総和における情報落ち回避方法とprod exp(g(x))での計算、非常に参考になりました。
ありがとうございます。
No.1
- 回答日時:
なぜ t = log(x) とおいたのかよくわからないのですが…。
f(x) = x のときで,x と t を入れ替えたのですかね?
何も考えずに,一般解を出そうと思うと,f(x) = g(t) とおく。両辺微分して,
f'(x) dx = g'(t) dt
したがって,
f(x) dx = g(t) * g'(t) / f'(x) dt (x は f(x) = g(t) を満たす)
右辺が log(f(t)) dt になってほしいので,
g(t) * g'(t) / f'(x) = log(f(t))
となる g(t) を見つけることができれば,変換可能だと思います。
f(x) > 0 が保障されているのなら,
この変換の下では質問にあったような座標変換のエラーは起きないと思います。
で,しばらく考えたんですが,残念ながら g(t) が決定できるような f(x) は思いつきませんでした。
f(x) の形によって,その都度,都合のいい変換を考えた方がいいかなと思います。
私は数学が専門ではないので,そういった分野の方でしたら,
何か特殊な解法を持っているのかもしれませんが…。
色々調べていただきありがとうございます。
一般的に変換できるということでもなさそうなのですね。
実際にやりたかったことは、ある複雑な数値計算の出力を積分する必要があるのですが、出力値が5桁くらいの幅を持っています。log(y)としたら桁の変化が小さく抑えられて、その時に積分精度があがるのだろうか、という疑問を持ってこのような質問をしました。
integ{f(x)}dxの値を再現する時にinteg{log(f(x))}dxのexpを取るといい、ということでもないのでしょうね。
解析的な関数で自分で式変形を試みたのですが、積分がどうもうまく導出できませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ニュートン法について 初期値
-
微小量とはいったいなんでしょ...
-
マクローリンの定理の適用のし...
-
「次の関数が全ての点で微分可...
-
z^5=1の虚数解の一つをαと置く...
-
f(x) g(x) とは?
-
【数3 式と曲線】 F(x、y)=0と...
-
数学の f(f(x))とはどういう意...
-
xの多項式f(x)最高次の項の係数...
-
差分表現とは何でしょうか? 問...
-
微分について
-
マクローリン展開の問題です n=...
-
数学の洋書を読んでいて分から...
-
大学の問題です。
-
急いでます!!
-
極限、不連続
-
フーリエ変換できない式ってど...
-
数学の記法について。 Wikipedi...
-
数学の問題でこの問題を解いて...
-
定積分を習った時先生が「◯◯は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
f(x) g(x) とは?
-
数学の f(f(x))とはどういう意...
-
微小量とはいったいなんでしょ...
-
マクローリンの定理の適用のし...
-
"交わる"と"接する"の定義
-
【数3 式と曲線】 F(x、y)=0と...
-
差分表現とは何でしょうか? 問...
-
ニュートン法について 初期値
-
左上図、左下図、右上図、右下...
-
f(x)=sin(x)/x って、とくにf(0...
-
微分について
-
数学についてです。 任意の3次...
-
積分する前のインテグラルの中...
-
z^5=1の虚数解の一つをαと置く...
-
Gnuplotについて エラーメッセ...
-
関数方程式 未知関数
-
極限を調べるときプラス極限マ...
-
次の等式を満たす関数f(x)を求...
-
微分可能ならば連続の証明につ...
-
∫[x=0~∞]logx/(1+x^2)の広義積...
おすすめ情報