• ベストアンサー

f(x)とF(a)が分かっていて、aを求めたいのだが、f(x)の積分が難しい

ある測定値Nから、ある値aを求めたい状況にあります(但しaを求めることは最終目的ではありません)。 いくつかの仮定に基づき、式を立て変形をしていったところ、N=∫[0~a]f(x)dxという関係式まで導けたのですが、 f(x)=[√{x×g(x)}]/h(x)という形になっていて私には原始関数を求めることができません(g(x),h(x)はxについての整式です)。 maximaという数式計算ソフトでも原始関数を求めることはできませんでした。 仮に原始関数を求めることができても、定積分が多項式になってしまうと解くのも大変ですから、何か他の方法はないものか考えています。 aは0に近い数であることは予想されているため、f(x)をx=0の周りで近似することは考えたのですが、√xを因数に持つため難しいのです。 また、N=∫[0~a]f(x)dxの両辺を微分する方法も考えましたが、aやNを変化させて測定することができないため、難しいと思います。 何か良いアイデアがありましたら、お教えください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.9

g(x)=-(x+2R-2r)(x+2R)(x-2r) h(x)=x+R+r 0<a<R-r<<r<R N=∫[0~a][√{x×g(x)}]/h(x)dx において、Nからaを求めたい。という事でいいのでしょうか? また、aが非常に小さい。 解析的な方法でやってみます。 しかし近似を使います。 N(0)=0でよいですね。 N=N(a)-N(0)=(N(a)-N(0))/(a-0)*(a-0) aが非常に0に近いという近似からとして N=d(N(a))/da*a=[√{a×g(a)}]/h(a)*a a<R-r<<rからa<<r ,h(a)=a+R+r=r(a/r+R/r+1) 1/h(a)=1/r*1/(a/r+R/r+1)→1/r*(1/(R/r+1)+(1/(R/r+1))^2*a/r)) a/r=b,R/r=dとすると、 1/h(a)=1/r*(1/(d+1)+(1/(d+1))^2*b)) a/r=bとしてbの二次は無視して、g(a)を算出すると g(a)=-(a+2R-2r)(a+2R)(a-2r) =-(a/r+2R/r-2)(a/r+2R/r)(a/r-2)*r^3 a/r=bとして =-r^3(b+2R/r-2)(b+2R/r)(b-2) →-r^3(b+2R/r-2)(-4R/r+b(-2+2R/r)) →-r^3([2R/r-2]*(-4R/r)+{[2R/r-2](-2+2R/r)-4R/r}b) R/r=dとして g(a)→-r^3([2d-2]*(-4d)+{[2d-2](-2+2d)-4d}b) N=[√{a×g(a)}]/h(a)*a =[√{br×g(a)}]/h(a)*br =√{br(-r^3([2d-2]*(-4d)+{[2d-2](-2+2d)-4d}b))}]*1/r*(1/(d+1)+(1/(d+1))^2*b))*br ながいので、続きをのちほどかきます

sak_sak
質問者

お礼

“連作”で回答いただきありがとうございました。 それなのに、私のほうで何度も式を間違えてしまい申し訳ありませんでした。

sak_sak
質問者

補足

ありがとうございます。 大変申し訳ないのですが、実はNo.4で書き間違いをまたしてしまっていました。 正しくは g(x)=-(x+2R-2r)(x+2R)(x-2r) h(x)=x+R-r 0<a<R-r<<r<R です。 要はrを基準に他の変数を割ってしまうということだと思いますので、それでやってみます。 rよりRの方が大きいのでRで割るかもしれませんが。

その他の回答 (14)

noname#26313
noname#26313
回答No.15

函数と定数の大小関係が分かったので、改めて積分に挑戦します。 0<a<R-r<<r<Rより 0<a<R-r<2(R-r)<<2r<2R x/(2R)<<1より x/(2R)を1に比して省略できるとする。 x+2R=2R[1+{x/(2R)}]≒2R 同様に、x/(2r)<<1より x-2r=-2r[1-{x/(2r)}]≒-2r 従って、 [√{x・g(x)}]/h(x)≒[√{2r・2R・x・(x+2R-2r)}]/(x+R-r) ={2√(Rr)}・[√{x・(x+2R-2r)}]/(x+R-r) x・(x+2R-2r)=x^2+2・x(R-r)=(x+R-r)^2-(R-r)^2 ∴[√{x・(x+2R-2r)}]/(x+R-r)=√[{(x+R-r)^2-(R-r)^2}/(x+R-r)^2] {(x+R-r)^2-(R-r)^2}/(x+R-r)^2=1-{(R-r)^2/(x+R-r)^2} 簡単化のために、L≡R-rと置くと、 [√{x・g(x)}]/h(x)={2√(Rr)}・√[1-{L^2/(x+L)^2}] ∴ ∫[0,a][√{x・g(x)}]/h(x)dx={2√(Rr)}・∫[0,a]√[1-{L^2/(x+L)^2}]dx この面倒な積分は、 http://integrals.wolfram.com/index.jsp を使わせてもらうと、 {2√(Rr)}・(√{a(2R-2r+a)}-2(R-r)・arctan[√{a/(2R-2r+a)}]) となります。

sak_sak
質問者

お礼

根号内を事実上2次式にしてしまうのがポイントでしょうか。 回答ありがとうございました。

noname#26313
noname#26313
回答No.14

失礼しました。 ∴ -(2R-2r)<0<x<2r ですね。 #13は無視してください。

noname#26313
noname#26313
回答No.13

xを0からaまで積分しようとしているので 0<x<aを前提にしていると考えてよいですね。 ところが、被積分函数は、f(x)=[√{x×g(x)}]/h(x)という形であり √内が正であるなら -x(x+2R-2r)(x+2R)(x-2r)>0、または、-x(x+2R-2r)(x+2R)(x-2r)=0 でなければなりません。 (x+2R)>0より (x+2R-2r)(x-2r)<0 ∴ 2R-2r<x<2r 0<a<R-r<<r<Rより 0<a<R-r<2(R-r)<<2r<2Rです。 つまり、積分範囲[0,a]は、被積分函数を複素数にする領域ということになります。 これで良いのですか?

sak_sak
質問者

補足

>∴ 2R-2r<x<2r -2R+2r<x<2r ではないですか?

回答No.12

さらに追加です。 a/r<<1は間違いないようなので、積分の中に関して、 0<c=x/r<a/r<<1というcに関して、 近似して、そのあと、cに関して積分すれば aが0にさほど近く無い場合での精度の良い式になるかと思います。 そして、近似後の式はcに対して一次の式なので、積分はたやすいかと 思います。 これが最後の僕の〆の回答です。

回答No.11

追加です a<<rから、a/r<<1、b<<1という近似を全てにおいて使いました。 r<Rから、1<R/r=dによって、ルートのなかが正であること。 aが十分小さいから高次のaの項に関する積和を無視して積分実行を回避。 と言うのを忘れていました。

回答No.10

続きです。 いっぱい近似できます。 N=[√{a×g(a)}]/h(a)*a =[√{br×g(a)}]/h(a)*br =[√{br(-r^3([2d-2]*(-4d)+{[2d-2](-2+2d)-4d}b))}]*1/r*(1/(d+1)+(1/(d+1))^2*b))*br →[√{br(-r^3([2d-2]*(-4d)+{[2d-2](-2+2d)-4d}b))}]*1/(d+1)*b =[√{br^4(([2d-2]*(4d)+{4d-4 -4d^2+4d}b))}]*1/(d+1)*b =[√{b(([2d-2]*(4d)+{4d-4 -4d^2+4d}b))}]*1/(d+1)*b*r^2 =[√{b[2d-2]*(4d)+{4d-4 -4d^2+4d}b^2}]*1/(d+1)*b*r^2 →[√{b[2d-2]*(4d)}]*1/(d+1)*b*r^2 =(2b)^(3/2)*r^2*[√{[d-1]*d}]/(d+1) となります。 よって、2b=(N*(d+1)/{r^2*[√{[d-1]*d}]}^(2/3) a=r/2*(N*(R/r+1)/{r^2*[√{[R/r-1]*R/r}]}^(2/3) という値を持つであろう。 N/r^2の値が十分小さければ、上の等式はかなりの精度で満足するだろう。 近似の勝利ですね。 本当に正しく導出できているかどうかわからないので、手でやってください。 パソコン上だときちんとおえていない可能性もありますので では

noname#26313
noname#26313
回答No.8

先のアドバイスを続けます。 B列を、 =SQRT(A1/(A1+2R-2r)/(A1+2R)/(A1-2r))/(A1+R+r)、 =SQRT(A2/(A2+2R-2r)/(A2+2R)/(A2-2r))/(A2+R+r)、 =SQRT(A3/(A3+2R-2r)/(A3+2R)/(A3-2r))/(A3+R+r)、 ・・・・・・ などとすると、aを求めることができると思います。

sak_sak
質問者

補足

回答ありがとうございます。 数値解は最終手段と考えておりますので、できるだけ解析解(あるいは微分形の式などそれに相当するもの)を 求める方法を知りたいのです(数学カテゴリに質問したのもそのためです)が、他に手はないでしょうか?

  • age_momo
  • ベストアンサー率52% (327/622)
回答No.7

一応、ここで数式 sqrt[x]/(x+k+r)/sqrt[(x+2k-2r)(x+2k)(x-2r)] を入力すると原始関数らしきものははじき出しましたが、ちょっとこれは、、、 というしろものです。数値積分しておいたほうがいいのではないですか? http://integrals.wolfram.com/index.jsp

sak_sak
質問者

補足

No.4の補足に書いた式が間違っていました。すみません。 積分以外に解く方法はないのですか?

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.6

#2です。 >単純にニュートン法か2分法などで解けばいいのでは。 >>定積分が求められないうちにニュートン法や2分法が使えるのですか? 数値積分すればよいです。 って、もしかして解析解が知りたいってことなんですか? そうだとすると、N(a)=X の逆関数 N^(-1)(X) を X=0 の周りで展開するのがいいでしょう。おそらくMaximaでもMapleでもそれなりの数式処理ソフトならうまいことやってくれるはずです。

sak_sak
質問者

補足

>数値積分すればよいです。 数値積分した場合に、ニュートン法はどうやって行うのですか? ニュートン法とは関数形が式として求められていない場合にもできるのですか? >N(a)=X の逆関数 N^(-1)(X) を X=0 の周りで展開するのがいいでしょう どうやったら逆関数 N^(-1)(X)を解析的に求められますか?

noname#26313
noname#26313
回答No.5

#1、#4です。 エクセルを使って最も簡単なオイラー法で数値積分を行い、その結果を基に 考察を加える一つの方法の例を示します。 仮に、g(x)=x^2+x+1、h(x)=x^3+x^2+x+1であるとします。 A列には、0、0.01、0.02、・・・・1.00 B列には、=SQRT(A1*(A1^2+A1+1))/(A1^3+A1^2+A1+1)、 =SQRT(A2*(A2^2+A2+1))/(A2^3+A2^2+A2+1)、 =SQRT(A3*(A3^2+A3+1))/(A3^3+A3^2+A3+1)、 ・・・・・・ を入力します。するとB列には、[√{x・g(x)}]/h(x)の値が求まります。 C列に、0.01*B1、0.01*SUM($B$1:B2)、0.01*SUM($B$1:B3)、・・・・ を入力すると、C101セルには Σ[n=1~100]<(x_'n'-x_'n-1')・[√{x_'n-1'・g(x_'n-1')}]/h(x_'n-1')>、 つまり、近似的に、xについて0~1まで積分した値が求まります。 ∫[0~1][√{x×g(x)}]/h(x)dxです。(これをSとします) この値をNと比較し、N>Sならば、S≒NになるまでC列の計算を追加します。 N<Sならば、既にC列101行までに、Nの値があることになります。 (精度を増したければ、0.001などとΔx=x_'n'-x_'n-1'の値を小さくすると良い) 積分値を確認後、A列、C列の計算結果をグラフ表示すれば、 aの函数としての[√{x・g(x)}]/h(x)の積分、 N(a)=∫[0~a][√{x×g(x)}]/h(x)dxを図で確認できます。 被積分函数、[√{x×g(x)}]/h(x)についても、B列の計算結果をグラフ表示 すれば、xの函数として図で確認できます。 もし、積分値S、あるいは被積分函数がある値を示す時のxの値を 求めたければ、それに対応したグラフからxの値を読み取ることによって、 求めることができます。 如何ですか?

関連するQ&A

専門家に質問してみよう