数値への統合を評価するにはどうすればよいですか?
-
12-10-2019 - |
質問
このようにセットアップされた機能がいくつかあります。
f(x):=1-2**-x$
g(y):=integrate(f(x), x, 0, y)$
そしてそれらを評価しました:
f(1)$float(%);
g(1)$float(%);
しかし、G(1)については、数値の答えの代わりに象徴的な答えを得ました。 Float()を使用することは数値の答えを得ようと試みましたが、積分のすべての用語をフロートに変えました。
g(1)を数として取得するにはどうすればよいですか?
解決
なぜ(明確な積分の定義によって)だけではないのですか:
f(x):=1-2**-x$
gg(x):=''(integrate(f(x), x))$
g(y):=gg(y) - gg(0)$
''(QUOTE-QUOTE)オペレーターは、割り当ての前に:= 'の右側の評価を強制するために使用されます。
他のヒント
数値ソリューションのみに興味がある場合は、数値統合を使用できます。たとえば、使用できます quad_qag (f(x), x, a, b, key, [epsrel, epsabs, limit])
.
私は試した:
f(x) := 1-2^(-x);
g(y):= quad_qag(f(x), x, 0, y, 3, epsrel=10d-8)$
g(1);
返品:
[0.27865247955552,3.093663986714272*10^-15,31,0]
最初のエントリは数値ソリューションです。
2番目のエントリは、おおよその相対エラーです。
3番目のエントリは、ソリューションを実現するために必要な反復数です。
最後のエントリはエラーコードです。エラーコードはです
- 0問題が発生しなかった場合。
- 1あまりにも多くのサブインターバルが行われた場合。
- 2過剰なラウンドオフエラーが検出された場合。
- 3非常に悪いインテグランドの動作が発生した場合。
- 6入力が無効な場合。
ところで、正確なソリューションは1-1/(2*log(2))で、約0.27865です。
所属していません StackOverflow