반응형

Computational Intelligence/수치계산 8

경사하강법 (Steepest descent method, 最急降下法)

"경사하강법"이란 함수의 기울기로 최소값을 찾아내는 알고리즘으로, 뉴럴네트워크를 공부하면서 나오는 기초 알고리즘 중의 하나이다. 값을 찾기위한 경사하강법의 수식은 아래와 같다. 여기서 (nabla) 는 벡터공간에 대한 스칼라 장의 구배를 의미한다. 간편한 프로그래밍의 예를 들기위해 사용을 할 것은 2차함수이므로, x항에 대한 편미분 항 이외는 무시 할 수 있다. 따라서 아래와 같이 간략하게 나타낼 수 있다. 여기서 는 학습계수로써, 값을 크게 할 수록 반복계산 횟수는 짧아지지만, 결과값에 최대한 근접하기 위해서 결과가 진동을 하게 된다. 이와는 반대로, 값을 작게 하면 결과는 좀 더 정확하게 나오지만, 값을 찾기까지의 시간이 더 오래걸린다. 따라서, 자기가 해결하고 싶은 상황에 따라서 값을 구하는 것을 ..

유클리드 호제법 두번째 (Euclidean algorithm)

유클리드 호제법을 이용한 최대공약수 구하기 두번째 : 나눗셈을 이용하여 구하기. 일단 증명은 위키페디아 참조... 1. 두개의 수치를 입력2. i÷j의 나머지를 k라고 둔다.3. i=j, j=k로 대입을 한다. 4. i가 0이되면 루프를 벗어난다. Colored By Color Scripter™1234567891011121314151617181920212223242526272829//// main.c// Euclidean_algorithm//// Created by robot on 2014/05/21.// Copyright (c) 2014年 Rocke. All rights reserved.// #include int main(int argc, const char * argv[]){ int i,j,k; p..

호너법(Horner's Method)의 C프로그래밍

호너법에 대한 위키백과 간단한 다항식 계산에 대한 프로그래밍이다.f(x)=5x^4+4x^3+3x^2+2x+1 에 대한 계산을 c언어로 해주려면 아래와 같이... x=5*(x*x*x*x)+4*(x*x*x)+3*(x*x)+2*x+1 로 해 주어도 되나, 프로그래밍을 할 경우 효율이 상당히 떨어진다.f(x)는 아래와 같이, 이므로 곱셈과 덧셈이 반복되는 계산식으로 바꿔줄 수 있으므로, 이걸 이용하면 f(x)를 아래와 같이 간단한 소스코드로 작성이 가능하다. f=(f*x)+a[i]; 여담으로 [조립제법]이란 단어가 [組立除法]이라고 똑같은 단어가 일본어 교과서에 있더라.한자권에서 원래 있던 단어인지, 일본어를 그대로 들여온건지 확실한건 잘 모르겠지만,영어도 그렇고 수학도 그렇고 일본의 영향을 많이 받은듯하다. ..

Secant Method법에 관한 C언어 정리

Secant Method 위키백과 링크 앞서 설명했던 뉴턴법은 미분을 이용하는 방법으로,미분이 간단하게 계산이 되지 않을 경우에 문제가 발생하므로,미분형태를 [ f'(x) = f(x1)-f(x1-1) / x1-x0 ] 라는 근이식으로 바꿔서 계산하는 방법이 Secant 방법이다.f'(x) = f(x1)-f(x1-1) / x1-x0 를 앞서 뉴턴법에서 본 x1 = x0 - f(x0)/f'(x0) 식에 대입하면,x2 = x1 - (f(x1)*(x1-x0) / f(x1)-f(x0)) 라는 식이 나온다.(과정생략) 초기 추정값 x0, x1를 선택해서 대입하면 루프안에서 계산된다. 여기서 사용한건 y=x^2-2 식 이므로, 해가 두개가 나오도록 초기 추정값을 설정할 경우무한루프에 빠져드므로 주의. Colored ..

뉴턴법(Newton's Method)의 C프로그래밍

뉴턴법 위키백과 링크 미분가능한 연속함수의 해를 구하는 방법.임의의 점 x 를 구하면 (x, f(x))의 좌표를 알게된다.함수를 미분하면 이 좌표에서의 기울기를 알게 되므로,(기울기 = y변화량 / x변화량) 의 식을 이용하여, f'(x0) = f(x0)/x0-x1의 값이 되므로 식을 변형하여.x1 = x0 - f(x0)/f'(x0)의 추정점의 식이 나오게된다. 여기서 나온 x1을 이용하여 또다시 기울기를 구해주는 것을 반복하면결과적으로 점점 해의값에 근접하게 된다. 아래에는 뉴턴법에대한 소스코드이다. y=x^2-2의 함수에 대한 예시로 입력한 수에 따라 얼추 1.414..., -1.414... 가 나온다.(0을 넣으면 기울기가 0이 되므로 재입력창이 생긴다.) Colored By Color Script..

반응형