6/14 Today I Learned - 2

boks·2024년 6월 14일

수학

목록 보기
6/7
post-thumbnail

📖 학습한 내용

  • 함수와 그래프 그리기

📖 핵심내용

📌 함수

다항함수

지수함수

  • 변수가 지수 위치에 있다.

  • x의 기호가 바뀌면 좌우 대칭이 된다.

  • 자연상수
    (1+1/x)**x

    -> 어떤 큰값을 넣어도 2.71828..에 수렴한다.
    -> x를 무한대로 보내며 자연상수 e라고한다.

로그함수

로그의 밑의 기본은 e 이다.

  • 넘파이는 로그 밑을 지정하는 것을 지원하지 않는다.

    -> 밑이a인 로그 = 로그상수/로그a

  • 함수의 형태

    -> y에 부호가 반대이므로 x축 대칭이다.

시그모이드 함수


0과 1사이의 값을 가지고, 매우 부드러운 형태를 띄고 있다.

함수의표현

y가 하나나오면 스칼라 함수, y가 여러개가 나오면 벡터함수이다.

  • 벡터의 표현

  • 단일 변수 스칼라 함수

  • 다중 변수 스칼라 함수

    -> x가 여러개의 값을 열벡터로 가지고 있다. 출력이 숫자하나로 나오면 스칼라이다.

  • 다변수 벡터 함수

  • meshgrid

import numpy as np

x = np.array([1, 2, 3])
y = np.array([4, 5, 6])

X, Y = np.meshgrid(x, y)

print(X)
print(Y)

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)

X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

plt.contourf(X, Y, Z, levels=50, cmap='viridis')
plt.colorbar()
plt.title('Contour plot of $z = \sin(\sqrt{x^2 + y^2})$')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

  • meshgrid 사용 이유
    numpy의 기본 기능에서는 1차원 배열을 다루는 것이 주로 사용됩니다. 하지만, meshgrid는 여러 개의 1차원 배열을 2차원 또는 그 이상의 차원으로 확장하여 모든 가능한 좌표 조합을 만들 수 있게 합니다.

함수의합성

두함수를 합성

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


x= np.linspace(-4,4,100)
y = x**3 - 15*x +30
z= np.log(y)

fig, ax = plt.subplots(1,2,figsize=(12,6))

ax[0].plot(x,z, '--', label=r'$\log(f(x))$', color='k')

ax[1].plot(x,y, label=r'$x^3-15x+30$', color='k')

ax_tmp = ax[1].twinx() # ax[1] 과 똑같은 축을 만들어라.
ax_tmp.plot(x, z, '--', label=r'$\logf(x))$', color='k'); # 만든 축에 그래프 그리기 -> 결국 겹쳐서 그리기


-> log함수는 커질수록 증가폭이 줄어든다. 그 결과가 반영되어서 갈수록 폭이 얇아지는 결과가 나왔다.

📖 흥미로운 점 / 새로 알게된 점

-그래프 그리기
보고서 쓰기 좋은 matplotlib.pyplot 의 기능
1) '$원하는수식$' : 수식을 적을 수 있다. matplotlib에서 제공한다.
2) fonsize=원하는크기 : 원하는 사이즈를 정할 수 있다. matplotlib에서 제공한다.
3) lw=원하는두께 : 그래프의 원하는 선두께
4) ls='원하는스타일' : 그래프의 원하는 선스타일, '--', ':' 등등

  • 객체 지향적 그래프 그리기
fig, ax = plt.subplots()

ax.plot(x, y)
ax.set_title("객체지향 방식으로 그린 그래프")
ax.set_xlabel("X축 라벨")
ax.set_ylabel("Y축 라벨")

-> fig는 Figure 객체를, ax는 Axes 객체를 나타냅니다.
-> Figure는 그래프 그리는 공간, Axes 는 공간 위에 그려지는 그래프
-> 한공간에 그래프들이 겹쳐서 그려질 수 있으므로, 객체 지향적으로 그린다면 각각의 그래프에 접근할 수 있다.

  • 객체 지향적 그래프 그리기장점
    1) 명확성: 어떤 객체에 어떤 설정을 적용하는지 명확하게 알 수 있습니다.
    2) 유연성: 하나의 Figure에 여러 개의 Axes를 추가하거나, 여러 개의 Figure를 관리하는 것이 더 쉽습니다.
    3) 재사용성: 동일한 Axes 객체를 재사용하거나, 다른 Figure에 추가할 수 있습니다.

📖 이후 학습 계획

  • box plot
  • Regression - 회귀, OLS
  • 통계적 회귀
profile
설계엔지니어의 변신

0개의 댓글