Python과 Sympy로 중적분
기본 형태
from sympy import *
x = symbols('x')
y = symbols('y')
f = x**2 + y**2 + 1
integrate(f,(x, 0, 1),(y,0,1))
덧붙여서
x = symbols('x')
y = symbols('y')
부분은
x = Symbol('x')
y = Symbol('y')
또는
x,y = symbols('x y')
하지만 괜찮습니다.
또한 다음과 같이 쓰면 z=f의 곡면을 그릴 수 있습니다.
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = y = np.linspace(-5,5)
X,Y = np.meshgrid(x,y)
f = X**2 + Y**2 + 1
fig = plt.figure(figsize = (10,10))
ax = fig.add_subplot(1,1,1,projection="3d")
ax.plot_surface(X, Y, f)
적분 영역이 삼각형
from sympy import *
x = symbols('x')
y = symbols('y')
f = x**2 + x*y*2 + 1
#左に書いてある変数から積分する。
integrate(f,( x, 0, 2-y),(y, 0, 2))
적분 영역이 부채꼴
from sympy import *
x = symbols('x')
y = symbols('y')
f = x**2 + y**2 + 1
#積分領域を不等式で書いてもうまくいかない。
integrate(f,(x, 0, sqrt(1-y**2)),(y,0,1))
스칼라장의 면적분
\vec{r}(u,v) = ( \cos u, \sin u, v)\\
D:0 \leq u \leq \pi,~~0 \leq v \leq 1\\
におけるスカラー場~f=\sqrt{x^2+y^2+z^2}の面積分の値を求めよ。
from sympy import *
u = symbols('u')
v = symbols('v')
r =Matrix([ cos(u), sin(u), v])
A = [0]*3
A[0] = diff(r,u)[0]
A[1] = diff(r,u)[1]
A[2] = diff(r,u)[2]
B = [0]*3
B[0] = diff(r,v)[0]
B[1] = diff(r,v)[1]
B[2] = diff(r,v)[2]
C = np.cross(A,B)
print(C)
#よってAとBの外積の長さは1
#pythonはcos(u)**2+sin(u)**2=1を使ってはくれないので自分で式変形。
f = sqrt(1+r[2]**2)
integrate(f,(v, 0, 1),(u,0,pi))
Reference
이 문제에 관하여(Python과 Sympy로 중적분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/naoya_ok/items/cb3bc2e212bde8a18b81텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)