0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Sympyでの積分計算(y=0の線に接する円r)

Last updated at Posted at 2023-03-26

Y=0の線に接する円r

前提条件

Y=0の線に接する円rをx, y ,rの代数で式で表すとこうなる。

x^2 + (y-r)^2 = r^2 

これを変形して$x = f(y)$の形にすると

x = \sqrt{r^2-(y-r)^2}

となる、これをy軸方向に積分していくと蒲鉾を積み重ねた時の体積が出るはずである。つまり0から無限まで積分する。

\int_{0}^{\infty}x dy = \int_{0}^{\infty}\sqrt{r^2-(y-r)^2} dy

Sympyによる計算

この計算は非常に複雑でありsympyライブラリに任せてしまった方がいい。
そこでこの積分をしてもらうコードを如何に示す。

int_circle.py
from sympy import symbols, integrate, sqrt


x, y, r = symbols('x y r')
i = integrate(sqrt(r**2-(y-r)**2), y)
print(i)

その出力を以下に示す。

result.py
Piecewise(
	(-I*r**2*acosh((-r + y)/r)/2 - I*r*(-r + y)/(2*sqrt(-1 + (-r + y)**2/r**2)) + I*(-r + y)**3/(2*r*sqrt(-1 + (-r + y)**2/r**2)),
         Abs((r - y)**2/r**2) > 1), 
	(r**2*asin((-r + y)/r)/2 + r*sqrt(1 - (-r + y)**2/r**2)*(-r + y)/2,
         True)
)

一見複雑そうな結果が出てきたので解釈する。まずPiecewiseとは部分的という意味であるから。
この積分結果は場合分けの必要がある事が分かる。
でタプルの2段目は整理浮上剣であるから、Piecewise[0][1]はこの式が成立する条件である。一見複雑であるがy>2rの式なので今回の目的からは外れる。となるとPiecewise[1][0]が目的の式に当たる。ずいぶんと複雑そうであるのでTexで形を示してみる。

\int_{0}^{2r}x dy = \frac{r^2}{2}*\arcsin \frac{y-r}{r} + \frac{r(y-r)}{2}\sqrt{1 - \frac{(y-r)^2}{r^2}}

つまりこの円の式の値を返すにはPythonのifで2r以下であることを確認した上で対応することになる。
実際は

correcta\value.py
func(value: float) -> float:
if value > 2r:
    value = 2r 
~~~
~~~

という形にすれば良さそうである。これ、デコレータにした方がいいな。
にしても複雑……

cap_value.py
def cap_value(max_value: float):
    def decorator(func):
        def wrapper(value):
            if value > max_value:
                value = max_value
            return func(value)
        return wrapper
    return decorator

Chat GPT思考のORMに成っとる……

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?