'Finance/numerical methods'에 해당되는 글 5건

  1. 2009.10.27 Horner's Rule
  2. 2009.09.30 Bisection method(이분법) 1
  3. 2008.02.02 IMSL 6.0 설치 - 비공개
  4. 2008.02.02 IMSL 6.0 설치 및 VS2005 환경 설정(static library , dll)
  5. 2007.12.18 수치해석 주요 내용
1. 설명
다항식을 빠르게 계산하는 방법 중 하나



위의 식을 아래처럼 정리하여 a_{n-1} + a_n x 부터 역으로 계산하면 다항식의 값을 구할 수 있다.


2. 코드
    
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define POWERS 10

int main(int argc, _TCHAR* argv[])
{

    double coefficients[POWERS],result[POWERS];
    double sum = 0.0;
    double variable_x=2;

    srand(1000);

    for(int n=0; n < POWERS ; n++)
    {
        coefficients[n] = rand()%50;
        result[n] = coefficients[n];

        printf("%d = %g \n",n,coefficients[n]);
    }

    //horner's rule
    sum = 0;
    for(int n=POWERS-1; n > 0 ; n--)
    {
        sum = ( sum + coefficients[n])*variable_x;
    }

    sum += coefficients[0];
    printf("horner's rule : %g\n",sum);

    //normal
    sum = 0.0;
    for(int n=0; n < POWERS ; n++)
    {
        sum = sum + result[n] * pow(variable_x, n);
    }

    printf("polynomial : %g\n",sum);
  
    return 0;
}


3. 참고자료
http://en.wikipedia.org/wiki/Horner_scheme
Posted by Gu Youn
,
너무 간단한 로직이어서 뭘로 구현하든 큰 차이가 없으니 매트랩 소스만 를 올린다.

function root = Bisection(start_point, end_point)

% Exit Condition %
tolerance = 1.0e-20;
numofsteps = 100;

mid_point = start_point + (end_point - start_point) / 2.0;   

error = abs(mid_point - start_point);
value = target_func(mid_point);

i = 0;
while (error > tolerance) && i < numofsteps

    if( value * target_func(end_point) > 0)
        end_point = mid_point;
    elseif ( value * target_func(end_point) < 0 )
        start_point = mid_point;
    end;
   
    mid_point = start_point + (end_point - start_point) / 2.0;   
    value = target_func(mid_point);
    error = abs(mid_point - start_point);
   
    i = i + 1;
end

% outpout %
i

format long
root = mid_point
error

end

function value = target_func(x)
    value = x^5 - 5.5*x^4 + 12.1*x^3 - 13.31*x^2 + 7.3205*x - 1.61051;
end

'Finance > numerical methods' 카테고리의 다른 글

Horner's Rule  (0) 2009.10.27
IMSL 6.0 설치 - 비공개  (0) 2008.02.02
IMSL 6.0 설치 및 VS2005 환경 설정(static library , dll)  (0) 2008.02.02
수치해석 주요 내용  (0) 2007.12.18
Posted by Gu Youn
,

IMSL 6.0 설치 - 비공개

2008. 2. 2. 17:33

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

수치해석 복습을 위해서 주요 키워드 정리. 자세한 것은 수치해석 관련 책을 참고한다.

 (1). 다항식을 근을 찾는 데는 다음의 다섯 가지 방법이 있다.
  1. 이분법(bisection method)
  2. 선형 보간법(Linear Interpolation)
  3. 선형 수정 Interpolation
  4. 뉴튼 (Newton method)
  5. 시컨트 (Secant method)


(2).
행렬을 사용한 연산

  1. 기본 연산
    1. 더하기, 빼기, 덧셈, 곱셈
  2. 추가 연산
    1. 전치행렬(transpose)
    2. 역행렬(inverse)
    3. 행렬식(determinant)
      1. 3 by 3 행렬인 경우 오른쪽 방향은 더하고 왼쪽 방향은 뺀다.
      2. 행렬식 연산
      3. /하삼각 행렬의 행렬식은 대각 성분의
  3. 행렬로 equation 풀기
    1. 자코비 반복법(Jacobi)
    2. 가우스 소거법(Gauss elimination)
      1. Elementary row operations 사용하여 소거 backward 대입하여 푼다.
    1. Gauss - Jordan
      1. 풀고자 하는 system equations 항등행렬을 이용하여 푼다.

    연산 모두 대각 행렬이 0이면 없다.


(3). 
적합 곡선 찾기(Curve Fitting)

  1. 라그랑주 보간(Lagrange interpolation)
  2. 큐빅-스프라인(cubic spline)
  3. 최소 자승법(least square)

    Curve fitting 부분 읽어 보기


(4).
미분과 적분

  1. 차분
    1. 뉴튼 전진 차분
    2. 뉴튼 후진 차분
  2. 사다리꼴

    미분 주제 추가

'Finance > numerical methods' 카테고리의 다른 글

Horner's Rule  (0) 2009.10.27
Bisection method(이분법)  (1) 2009.09.30
IMSL 6.0 설치 - 비공개  (0) 2008.02.02
IMSL 6.0 설치 및 VS2005 환경 설정(static library , dll)  (0) 2008.02.02
Posted by Gu Youn
,