2022/01/05/WED
def myadd(a,b):
return a+b
myadd(1,2)
myadd?
- Type이 function
- myadd 는 function class의 instance이다.
- 결국 myadd 역시 하나의 오브젝트에 불과하다.
myadd의 입력 1,2는 int class의 인스턴스 오브젝트였음.
즉 문법의 논리로 보면 함수의 입력에 들어갈 수 있는것은 오브젝트이면 된다.
그런데 함수 자체도 오브젝트이다 $\to$ 함수도 함수의 입력으로 쓸 수 있다?
- 예제1
def calc(function,a,b):
return function(a,b)
calc(myadd,-3,3)
이처럼 함수자체를 입력으로 받거나 출력으로 보내는 함수를 higher-order function이라고 한다.
- 예제2
미분: 아래의 함수
$$f(x)=3x^2-2x+5$$에서 $x=2$에의 접선의 기울기는 아래와 같이 대략적으로 구할 수 있다.
$$\frac{f(2+h)-f(2)}{h}, \quad h=0.0000001$$
$h$의 값을 더 0에 가깝게 만든다면 접선의 기울기의 정확도는 올라간다.
미분에 익숙하다면 이론적으로 아래와 같이 $x=2$일때 접선의 기울기를 구할 수 있다.
- $f'(x)=6x-2$
- $f'(2)=12-2=10$
즉 $x=2$일때 이론적으로 구한 접선의 기울기값은 10이다.
미분을 계산해주는 코드를 구현하자.
def f(x):
return 3*x**2-2*x+5
def derivative(fx,x):
h=0.00000001
return (fx(x+h)-fx(x))/h
derivative(f,2)
- $g(x)=x^2$와 같은 함수를 미분하고 싶다면?
def g(x):
return x**2
derivative(g,0)