積分関数を求めるには(不定積分)

2015-12-12 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
6、3、0、0、1、 0、0、0、0、0(41)で、換算ポイント 86pt 。
「Firefox」5位にダウン。「化学業界」「硝子業界」「e-radio」、
「グルコサミン」「Python」「FM COCOLO」bg値変動のみ。
「C言語」「Perl」「FM青森」全く変化無し。
・-・ - -・

さて、本文。

前回(15-12-09)の記事:
導関数を求めるには(微分の話し)
で、“微分”について学習した。

今回は、逆の“積分”について。

Python 積分」と検索すると、・・・・・

2.10. Sympy : Python での記号計算 - Scipy lecture notes
とか、
Pythonで数値積分 ~ ・・・・・
とか、
3. 常微分方程式(scipy) - Pythonで数値計算
とか、
Pythonで積分 - Qiita
とか、とか、・・・・・

4番目を見てみた。

  ・・・・・
  ・・・・・
  手法
  ・ SciPyscipy.integrate.quad を利用する。
  ・・・・・
  ・・・・・

先ずは、“Python”コマンド・インタプリタを立ち上げて、
from scipy import integrate
x2 = lambda x: x**2
integrate.quad(x2, 0, 4)
と打ち込んでみた。

  (21.333333333333336, 2.3684757858670001e-13)

と出た。

続けて、

  print(4**3 / 3.)

とすると、

  21.3333333333

ですね。


それから、続けて“Qiita”の例を!
import numpy as np
x3 = lambda x: 1/(1+x**2)
integrate.quad(x3, 0, 1)
では、

  (0.7853981633974484, 8.719671245021584e-15)

そして、

  print np.pi/4.0

は、

  0.785398163397


これで、「数値積分(定積分)」はOKでしょうか。


では、本題の? 積分関数(=不定積分)???


これは、上記検索結果1番目ですネ。

その中の「2.10.3.5. 積分」パラグラフ。

  SymPy は初等関数, 特殊関数の有限無限区間での積分も
  integrate() でサポートしています,
  これは強力な Risch-Norman の拡張アルゴリズムと
  いくつかの発見的方法とパターンマッチングを利用しています。
  初等関数は以下のように積分できます:
>>> integrate(6*x**5, x)
x**6
>>> integrate(sin(x), x)
-cos(x)
>>> integrate(log(x), x)
-x + x*log(x)
>>> integrate(2*x + sinh(x), x)
cosh(x) + x**2
  特殊関数も容易に扱うことができます:
>>> integrate(exp(-x**2)*erf(x), x)
pi**(1/2)*erf(x)**2/4
  有限区間での積分も計算できます:
>>> integrate(x**3, (x, -1, 1))
0
>>> integrate(sin(x), (x, 0, pi/2))
1
>>> integrate(cos(x), (x, -pi/2, pi/2))
2

この3番目は、上記と同じ。つまり、数値積分。

1番目、2番目が欲しかった事。

前回記事で、微分した(=導関数を求めた)関数:

  x / sqrt( A**2 + x**2 )

の結果(即ち導関数):

  - x**2 / ( A**2 + x**2 )**(3/2) + 1 / sqrt( A**2 + x**2 )

を積分してみる。

  integrate( - x**2 / ( A**2 + x**2 )**(3/2) + 1 / sqrt( A**2 + x**2 ), x )

ダメだ。

0.282094791772901*sqrt(pi)*A**2*log(A**2/x**2)/(1.0*A**2 + 1.0*x**2) - 0.564189583547911*sqrt(pi)*A**2*log(sqrt(A**2/x**2 + 1) + 1)/(1.0*A**2 + 1.0*x**2) + 0.564189583547911*sqrt(pi)*x**2*sqrt(A**2/x**2 + 1)/(1.0*A**2 + 1.0*x**2) + 0.282094791772901*sqrt(pi)*x**2*log(A**2/x**2)/(1.0*A**2 + 1.0*x**2) - 0.564189583547911*sqrt(pi)*x**2*log(sqrt(A**2/x**2 + 1) + 1)/(1.0*A**2 + 1.0*x**2) + asinh(x/A)

こんな結果!

これを simplify したところで、・・・・・

1.0*(0.282094791772901*sqrt(pi)*A**2*log(A**2/x**2) - 0.564189583547911*sqrt(pi)*A**2*log(sqrt((A**2 + x**2)/x**2) + 1) + 0.564189583547911*sqrt(pi)*x**2*sqrt((A**2 + x**2)/x**2) + 0.282094791772901*sqrt(pi)*x**2*log(A**2/x**2) - 0.564189583547911*sqrt(pi)*x**2*log(sqrt((A**2 + x**2)/x**2) + 1) + 1.0*(A**2 + x**2)*asinh(x/A))/(A**2 + x**2)

これでは、変わり映えしない!!!


なにか学習が不足しているのか?
そもそも出来ないのか?


出直しですネ。



因みに、・・・・・
“Mathematica”では?????


  Integrate[ - x^2 / ( A^2 + x^2 )^(3/2) + 1 / Sqrt[ A^2 + x^2 ], x ]

を実行した結果は、・・・・・

  x / Sqrt[ A^2 + x^2 ]


出来ちゃった。流石! 超高価な有償製品


本日はここまで。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


151206
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク