3

次のようにいくつかの機能を設定しています。

f(x):=1-2**-x$
g(y):=integrate(f(x), x, 0, y)$

そしてそれらを評価しました:

f(1)$float(%);
g(1)$float(%);

しかし、g(1) については、数値的な答えではなく記号的な答えが得られました。float() を使用することは、数値的な答えを得ようとする試みでしたが、積分のすべての項が浮動小数点数に変わっただけです。

g(1) を数値として取得するにはどうすればよいですか?

4

2 に答える 2

3

なぜ(定積分の定義によって)実行しないのですか?

f(x):=1-2**-x$
gg(x):=''(integrate(f(x), x))$
g(y):=gg(y) - gg(0)$

''(quote-quote)演算子は、代入の前に:=の右側の評価を強制するために使用されます。

于 2011-01-18T21:59:38.220 に答える
0

数値解のみに関心がある場合は、数値積分を使用できます。たとえば、 を使用できます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 です。

于 2013-09-14T23:30:18.007 に答える