4

この領域の面積が指定された数値に等しくなるように、2 つの関数の曲線の下にある領域を見つけようとしていますm。たとえば、次の 2 つの機能を統合します。

f(x) = 3x - 3x^2
g(x) = x

a から b までを記号的に表し、それぞれを m と同等にします (例: m=1/3)。系を解いて a と b の値を見つけることができます。

1.5 b^2 - b^3 - 1.5 a^2 + a^3 = 1/3
0.5 b^2 - 0.5 a^2 = 1/3

私がこれに到達した肯定的な解決策は、おおよそ次のとおりです。a = 0.364823, b = 0.894294

さて、私の質問は次のとおりです。 f と g がシンボリック関数ではなくベクトル (または Python の配列) として与えられた場合、どうすれば a と b を見つけることができますか? trapz()ベクトルの領域を見つけるために使用する方法は知っていますが、それを使用して上記の問題を数値的aに見つける方法があるかどうかはわかりません。b

ありがとう!

4

2 に答える 2

2

sympyを試すことができます

>>> from sympy import *
>>> x,a,b = symbols('x a b')
>>> fx = "3*x - 3*x**3"
>>> gx = "x"
>>> m = 1/3
>>> int_fx = integrate(fx, (x,a,b))
3*a**4/4 - 3*a**2/2 - 3*b**4/4 + 3*b**2/2
>>> int_gx = integrate(gx, (x,a,b))
-a**2/2 + b**2/2
>>> solve([Eq(int_fx, m), Eq(int_gx, m)],(a, b))
[(-0.577350269189626, -1.00000000000000), (-0.577350269189626, 1.00000000000000), (0.577350269189626, -1.00000000000000), (0.577350269189626, 1.00000000000000)]

ちなみに、どうやって定積分解を得ることができたのか理解するのに苦労しています。

1.5 b^2 - b^3 - 1.5 a^2 + a^3 = 1/3

にとって

f(x) = 3x - 3x^3

以内に

[a,b]
于 2012-12-15T18:22:18.170 に答える
0

積分方程式を見る必要があると思います。たとえば、数値レシピSOです。

于 2012-12-15T18:05:36.117 に答える