변수가 지수 위치에 있다.
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()


두함수를 합성

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 는 공간 위에 그려지는 그래프
-> 한공간에 그래프들이 겹쳐서 그려질 수 있으므로, 객체 지향적으로 그린다면 각각의 그래프에 접근할 수 있다.