기본 콘텐츠로 건너뛰기

라벨이 수학인 게시물 표시

통계관련 함수와 메서드 사전

A B C d E F G H I K L M N O P Q R S T U V W Z A statsmodels.ap.stats.anova_lm(x) statsmodels.formula.api.ols 에 의해 생성되는 모형 즉, 클래스 인스턴스(x)를 인수로 받아 anova를 실행합니다. np.argsort(x, axis=-1, kind=None) 객체 x를 정렬할 경우 각 값에 대응하는 인덱스를 반환합니다. Axis는 기준 축을 지정하기 위한 매개변수로서 정렬의 방향을 조정할 수 있음(-1은 기본값으로 마지막 축) pandas.Series.autocorr(lag=1) lag에 전달한 지연수에 따른 값들 사이의 자기상관을 계산 B scipy.stats.bernoulli(x, p) 베르누이분포에 관련된 통계량을 계산하기 위한 클래스를 생성합니다. x: 랜덤변수 p: 단일 시행에서의 확률 scipy.stats.binom(x, n, p) 이항분포에 관련된 통계량을 계산하기 위한 클래스를 생성합니다. x: 랜덤변수 n: 총 시행횟수 p: 단일 시행에서의 확률 C scipy.stats.chi2.pdf(x, df, loc=0, scale=1) 카이제곱분포의 확률밀도함수를 계산 $$f(x, k) =\frac{1}{2^{\frac{k}{2}−1}Γ(\frac{k}{2})}x^{k−1}\exp\left(−\frac{x^2}{2}\right)$$ x: 확률변수 df: 자유도 pd.concat(objs, axis=0, join=’outer’, …) 두 개이상의 객체를 결합한 새로운 객체를 반환. objs: Series, DataFrame 객체. Axis=0은 행단위 즉, 열 방향으로 결합, Axis=1은 열단위 즉, 행 방향으

elementary function_sympy

Elementary function(초등함수) 대수함수와 지수 함수, 로그함수에 사칙연산 및 함수의 합성으로 만들수 있는 단변수 함수(univariate function)입니다. complex number(복소수) re(객체): 실수영역을 나타냄 im(객체): 허수영역을 나타냄 객체.as_real_imag(): (실수부분, 허수부분)의 쌍을 튜플로 반환 cojugate(객체): 켤레복소수를 반환 >>> type(E) #E=exp를 나타냄 sympy.core.numbers.Exp1 >>> 2*E 2*E >>> N(2*E) 5.43656365691809 >>> re(2*E) 2*E >>> type(I) #복소수의 허수 단위(numpy 등에서는  j로 나타냄)  sympy.core.numbers.ImaginaryUnit >>> eq=17+3*I >>> re(eq) #실수부분을 나타냄  17 >>> im(eq) #허수부분을 나타냄  3 >>> eq.as_real_imag() (17, 3) >>> conjugate(eq) 17 - 3*I sign() 식의 부호를 반환합니다. 식이 양수 : 1 식이 음수: -1 식이 0 : 0 복소수에서 허수부분의 부호는 다음과 같습니다. im(식) >0: I im(식) <0: -I >>> sign(-8) -1 >>> sign(0) 0 >>> sign(10) 1 >>> eq 17 + 3*I >>> sign(im(eq)) 1 Abs(): 절대값을 반환합니다.

Sympy객체의 단순화(2)

식의 단순화 simplify(x): 식 x를 간단히 정리 합니다. div> from sympy import * x, y, z=symbols("x, y, z") simplify(2*sin(x)**2+2*cos(x)**2)       2 simplify((x**3+x**2-x-1)/(x**2+2*x+1))       x - 1 위와 같이 simplify()는 기본공식이나 공통사항을 찾아 그 부분에 대한 정리를 기본으로 합니다. 그러나 아래의 결과와 같이 단일한 식의 인수분해는 실행되지 않습니다. simplify(x**3+x**2-x-1) x**3 + x**2 - x - 1 simplify(x**2+2*x+1)        x**2 + 2*x + 1 인수분해를 위해 factor()를 사용합니다. factor(x**3+x**2-x-1)       (x - 1)*(x + 1)**2 factor(x**2+2*x+1)       (x + 1)**2 simplify()는 식을 단순화 시키기 위해 거의 모든 알고리즘을 적용하므로 다른 함수들에 비해 느리다는 단점을 가집니다. 그러므로 단일한 알고리즘을 사용하는 factor(),collect() 함수 등을 사용하는 것이 유리합니다. factor()함수 등을 사용할 경우 계수가 유리수일 경우 더 이상 간단히 할 수 없는 기약분수를 계수로 하는 결과를 반환합니다. 그러나 simplify()의 경우 이러한 결과는 보장하지 못한다는 것입니다. simplify()는 대화식으로 사용할 때, 표현식을 더 간단한 형식으로 바꾸고 싶을 때 가장 좋습니다. 좀 더 정확한 결과를 얻으려면 simplify()가 반환하는 것을 확인한 후에 특정 함수를 적용하도록 선택할 수 있습니다. simplify()는 표현식이 어떤 형식인지 알지 못하는 경우 유용하며 그 식의 형식을 파악 후에는 특정한 함수가 필요할 수 있습니다. 다항식과 유리식의 단순화 expand(

부분적분

미분의 곱 법칙과 연관 (fg)'=f'g+fg' $\int (fg)'dx=\int f'g dx+\int fg'dx \rightarrow fg=\int  f'g dx+\int fg'dx $ 위 식을 다음과 같이 다시 정렬할 수 있습니다. $\int fg' dx=fg-\int f'g dx $  Eq(1) 부분적분 위 식에서 f(x), g(x)를 각각 u, v로 치환하면 다음과 같이 정리됩니다. f(x)=u, g(x)=v → f'(x)dx=du, g'(x)dx=dv Eq(1)에 치환을 적용하면 $\int u dv=uv - \int v du$ 위 식을 지정한 구간 [a, b]의 정적분은 다음과 같이 계산됩니다. $\int^b_a u dv=uv|^b_a - \int^b_a v du$ 위 부분 적분의 절차를 프로그램 함수로 작성하면 다음과 같습니다. def partIntegralS(u, dv, Symbolvar, loup=0):     du=diff(u, Symbolvar)     v=integrate(dv, Symbolvar)     uv=u*v     vdu=integrate(v*du, Symbolvar)     if loup==0:         re=uv-vdu         return(re)     else:         re=uv-vdu         re1=re.subs(Symbolvar, loup[1])-re.subs(Symbolvar, loup[0])         return(re1) 예) 다음을 적분? 1) $\int xe^{6x}dx=x\frac{1}{6}e^{6x}-\int\frac{1}{6}e^{6x} dx\\=\frac{x}{6}e^{6x}-\frac{1}{36}e^{6x}+c\\ \because u=x, \;dv=e^{6x} \;\rightarrow\; du=dx,\; v=\frac{1}{6}e^{6x}$

Newton's Method

Newton's Method 모든 방정식이 정확한 해를 가지지는 않습니다. 이러한 경우 근사해(approximate solution)을 계산할 필요가 있습니다. 이러한 근사해를 계산하는 다양한 방법들 중에 가장 많이 사용되는 방법이 뉴턴의 방법입니다.  위 그림에서 파란선의 경우 x_0에서의 접선, 초록선의 경우는 x_1에서의 접선을 나타냅니다. 이 접선이 x축과 만나는 점을 기준으로 함수f(x)와의 점에서의 접선의 기울기는 f'(x_1)이 됩니다. 함수 f(x)의 해를  x_n이라고 하면 다음과 같이 초기 임의의 점 x_0에서 시작하여 x_n까지의 근사시킬 수 있습니다.  tangent line at x_0 : y=f(x_0)+f'(x_0)(x-x_0) x_1: 0=f(x_0)+f'(x_1)(x_1-x_0) → x_1=x_0-\frac{f(x_0)}{f'(x_1)} tangent line at x_1: y=f(x_1)+f'(x1)(x-x_1) 위 식을 적용하여 x_2는 다음과 같이 계산됩니다.  0=f(x_1)+f'(x1)(x_2-x_1)→ x_2=x_1-\frac{f(x_1)}{f'(x_2)} 위 과정은 x_n을 계산할 수 있을 때까지 반복할 수 있습니다.  위 과정을 다음과 같이 일반화 할 수 있습니다.  x_n이 f(x)=0의 근사해이고 f'(x_n) ≠ 0 이 아니면 다음식이 성립됩ㄴ다.  $x_{n+1}=x_n -\frac{f(x_n)}{f'(x_n)} 근사해를 계산하기 위해 위의 식을 적용할 경우 위 과정의 반복정도를 결정해야 합니다. 이 식은 근해를 계산하는 것으로서 반복수에 대한 일반적인 기준을 설정할 수는 없지만 각 반복의 결과의 차이가 매우 작을 경우까지 반복 계산을 합니다.  예) 뉴턴방법을 적용하여 구간 [0, 2] 에서  f(x)=cos(x)-x의 근사해를 계산합니다.  >>> i

삼각함수 미분공식

1. $ f(x)=x^n → f′(x)=nxn-1 or  \frac{d}{dx}(x^n)=nx^{n-1}$ 위 식을 증명하기 위해서는  n이 양수라고 가정합니다. 또한 이항정리를 사용합니다.  <이항정리>  $(a+b)^n=\sum^n_{k=0}\left(^n_k \right) a^{n-k}b^{k}\\=a^n+\left(^n_1 \right)a^{n-1}b+\left(^n_2 \right)a^{n-2}b^2+ \cdots +\left(^n_{n-1} \right)ab^{n-1}+\left(^n_n \right)ab^n\\=a^n+na^{n-1}b+\frac{n(n-1)}{2!}a^{n-2}b^2+\frac{n(n-1)(n-2)}{3!}a^{n-3}b^3+\cdots+nab^{n-1}+b^n$ 위 식의 전개에서  $\left( \begin{matrix} n \\k  \end{matrix} \right) =\frac { n! }{ k!(n-k)! } ,\quad n!=n\cdot (n-1)\cdot \cdots \cdot 2\cdot 1$ f(x)=xn 이라고 하면  $f^\prime(x)=\lim_{h \to 0}\frac{(x+h)^n-x^n}{h} \\=\lim_{h \to 0}\frac{(x^n+nx^{n-1}h+\frac{n(n-1)}{2!}x^{n-2}h^2+\frac{n(n-1)(n-2)}{3!}x^{n-3}h^3+\cdots+nxh^{n-1}+h^n)-x^n}{h} \\=\lim_{h \to 0} \; nx^{n-1}+\frac{n(n-1)}{2!}x^{n-2}h+\frac{n(n-1)(n-2)}{3!}x^{n-3}h^2+\cdots+nxh^{n-2}+h^{n-1} \\=nx^{n-1}$ 2. $\lim_{\theta \to 0} \frac{sin \theta}{\theta}=1$    위 그림은 원위의 두 접선을 기준으로 작성된 것으로 다음을 유도 할 수 있습니다. 증명과정을 간단히

무한대와 극한

1. 무한 극한  x=a 점으로 충분히 근접할 경우 극한값이 양(positive)의 무한대로 증가하면 또는 음(negative)의 무한대로 확장되는 것을 다음과 같이 나타냅니다. $\lim_{x \to a}f(x) = \infty \, \;  \lim_{x \to a}f(x) = -\infty$ 이러한 경우 그 함수에 의해 x=a는 정의되지 않습니다. 1. $ f(x)=\frac{1}{x}$함수의 그래프를 그려보면 다음과 같습니다. 이 함수는 x가 0에 접근할 수록 값이 양의 무한대와 음의 무한대로 확장됩니다. 즉. $\lim_{x \to 0^+}\frac{1}{x} = +\infty, \; \lim_{x \to 0^-}\frac{1}{x} = -\infty$ 위의 결과와 같이 0에 대해 오른쪽 극한과 왼쪽 극한이 일치하지 않습니다. 즉, 그 점에서는 불연속이므로 x=0에서의 극한 값은 존재하지 않습니다. $\lim_{x \to 0^+}\frac{1}{x} \; \text{doesn't exist}$ 2. $ f(x)=\frac{1}{x^2}$? 위 함수는 극한은 다음과 같이 나타낼 수 있습니다. $\lim_{x \to 0^+}\frac{1}{x} = \infty, \; \lim_{x \to 0^-}\frac{1}{x} = \infty$ 위 결과와 같이 x=0에 대해 왼쪽극한과 오른쪽 극한은 같습니다. 그러므로 0에 대한 극한은 $ \infty$입니다.  $\lim_{x \to 0^+}\frac{1}{x} = \infty$ 위 두 문제로 부터 다음을 정의할 수 있습니다. x=a에서 다음이 성립하면 함수 f(x)는 x=a를 기준으로 대칭입니다. $\lim_{x \to a^-} f(x) = \pm \infty, \;  \lim_{x \to a^+} f(x) = \pm \infty, \;  \lim_{x \to a} f(x) = \pm \infty$ 3. 함수 $f(x) = \frac{3}{(4-x)^3}$에 대

sympy와 미분

미분 sympy 에서 미분은  diff()  함수를 사용합니다 . diff( 식 ,  기준이 되는 변수 ) >>> from sympy import * >>> x, y, z = symbols('x y z') >>>  diff(cos(x),x) -sin(x) >>>  diff(exp(x**2), x) 2*x*exp(x**2) 위의  diff() 에 의한 미분은  1 차 미분을 나타낸 것이고 다중 미분역시 이 함수를 사용하여 수행할 수 있습니다 .  다중 미분을 위해서 미분을 위한 변수를 여러차례 전달해야 한다 .  즉 ,  변수를 전달하는 횟수만큼 미분이 실행됩니다 .  다음은  4 제곱인  x 를  4 번 미분한 것으로 결과는  24 입니다 . >>>  diff(x**4, x) 4*x**3 >>>  diff(x**4, x,x,x,x) 24 즉, 위의 경우는$((((x^4)^{\prime})^{\prime})^{\prime})^{\prime})$과 같습니다. 이와같은 다중 미분은 다음과 같이  diff(식, 변수, 미분횟수) 로 사용할 수 있습니다.  >>>  diff(x**4, x,4) 24 미분을 여러번 시행할 경우 횟수만큼 변수를 전달하는 대신 대상이 되는 변수와 함께 미분의 횟수를 전달하는 것으로 동일한 효과를 나타낼 수 있습니다 . 이 방법으로 다중의 변수에 대해 미분을 실행할 수 있습니다. 즉,  함수에 전달하는 변수의 순서에 따라 미분이 실행됩니다 .  예를들어 다음을 실행합니다 . >>> eq=exp(x*y*z) >>> diff(eq, x) y*z*exp(x*y*z) $eq1=frac{d(e^{xyz})}{dx}=yz e^{xyz}$ >>> diff(eq, x, y) z*(x*y*z + 1)*e

다항식과 인수분해

내용 하나의 변수를 가진 다항식 두개의 변수를 가진 다항식 연산 다항식의 인수분해 (factoring polynomials) 다항식(plynomial) 하나의 변수를 가진 다항식 식 1은 하나의 변수를 가진 다항식을 표현한 것입니다. $$\begin{align}\tag{1}&ax^n\\ &a: \text{계수(coeficient)}\\ &x: \text{변수(variable)}\\ &n: \text{차수(degree)}\end{align}$$ 다항식의 차수는 0을 포함하는 양의 정수이어야 합니다. 다항식 전체의 차수를 표현할 경우는 가장 높은 것으로 나타냅니다. 예 1) (1) A = 5 x 12 - 2 x 6 + 5 x 5 - 198 x + 1: 식 A의 차수는 12입니다. (2) B=-8: B는 -8x 0 와 같습니다. 그러므로 차수는 0입니다. (3) 5x-7: 역시 다항식입니다. 차수는 1입니다. 이와 같이 다항식은 변수의 차수가 반드시 1이상일 필요는 없으며 차수가 0으로 변수를 포함하지 않는 경우 역시 다항식으로 표현됩니다. 예 2)   다음식들은 다항식이 아닙니다. (1)$4x^6+15x^{-4}+7$ : 음수(-4) 차수를 포함 (2)$5\sqrt{x} -x+3$: 차수 $\frac{1}{2}$는 정수가 아닌 차수 (3)$\frac{3}{x}+x^3-2$: 음수인 차수(-1) 물론 계수에는 이러한 제한이 없습니다. 두개의 변수를 가진 다항식 식 2는 두개의 변수를 가진 다항식의 일반 형태입니다. $$\begin{align}\tag{2}&ax^ny^m\\ &a:\text{계수}\\ &x,y: \text{변수}\\ &n, m: \text{차수}\end{align}$$ 두 변수를 가진 다항

지수(Exponents) 계산

내용 지수 계산 지수함수들의 연산특성 지수함수의 계수 지수 계산 $a^n=a \cdot a \cdot \cdots a$ 즉, a를 n번 곱하는 것을 의미합니다. 이 식의 a를 밑수, n을 지수라고 합니다. 지수는 python에서는 a**n , 내장함수인 pow(밑수, 지수) 또는 numpy 모듈의 power(밑수, 지수) 를 적용할 수 있습니다. 또한 sympy 모듈의 Pow(밑수, 지수) 를 적용하여 미지수를 포함한 지수를 표현할 수 있습니다. import numpy as np from sympy import * 2**5, pow(2, 5), np.power(2, 5) (32, 32, 32) a, n=symbols("a, n") eq=Pow(a, n) eq $\quad \color{navy}{a^{n}}$ eq.subs({a:2, n:5}) $\quad \color{navy}{32}$ 지수가 분수로 나타낼 수 있을 경우 식 1과 같이 거듭제곱근(radical)로 나타낼 수 있습니다. $$\begin{equation}\tag{1}a^{\frac{1}{n}}=\sqrt[n]{a}\end{equation}$$ np.power(2, 1/2) 1.4142135623730951 eq.subs({a:2, n:1/2}) $\quad \color{navy}{1.4142135623731}$ 지수가 음수일 경우는 식 2와 같이 계산됩니다. $$\begin{equation}\tag{2} a^{-n}=\frac{1}{a^n} \end{equation}$$ 2**(-2) 0.25 1/np.power(2, 2) 0.25 지수함수들의 연산특성 지수함수들은 식 2와 같은 특성으로 연산할 수 있습니다. $$\begin{align}\tag{2}\displaystyle &a^na^m=a^{n+m}&\quad(2.1)\\&(a^n)^m=a^{n+m}&\quad(2.2)\