C / C++ 이분법 code (code, 주석포함, 알고리즘, 실행화면, 재귀적방법 추가 코드)
- 최초 등록일
- 2009.06.23
- 최종 저작일
- 2009.06
- 8페이지/ 한컴오피스
- 가격 3,000원
소개글
본 레포트는 멀티미디어 응용 수학 또는 수치해석, 선형대수 과목에서 배우는 이분법
알고리즘에 대한 내용을 다룬 레포트로서 visual C++ 을 이용하여 구현하였으며
소스 코드 및 주석, 그리고 재귀적 방법을 사용한 코드 및, 알고리즘 분석, 실행화면이
담겨있습니다.
목차
1. 이분법 코드
2. 실행화면
3. 이분법 알고리즘 분석
4. 재귀적 이분법 코드
5. 실행화면
6. 참고화면
본문내용
#include <stdio.h> //standard input / output -> 입출력관련 함수선언
#include <stdlib.h> // atof, atoi 문자열을 숫자로 변환... (문자열 --> string.h)
#include <math.h> // 수학함수사용(본 코드에서는 로그함수 사용)
//대상함수선언
float f(float);
//메인함수
void main(int argc, char **argv)
{
float xh, xl, xm, e; //xh : 큰값, xl : 작은값, xm : 중간값, e : 에러값
//xh,xl,xm,e --> 프로그램 실행시 명령인자로 받아들임
int i = 0; //반복문을 돌리는 횟수 표시
if(argc < 4) //프로그램 실행시 전달되는 인수가 4개보다 작을시 ↓
{
printf("Usage : %s xh xl e n", argv[0]);
//0번째 명령어에 4가지 파라미터를 받지 않으면 프로그램 종료
exit(0);//프로그램종료!
}
xh = (float)atof(argv[1]);
//"3"--> 3 / atof 문자열을 실수로 바꾸는 함수 (큰값을 3으로 지정)
xl = (float)atof(argv[2]);
//"-3"--> -3 / atof 문자열을 실수로 바꾸는 함수 (작은값을 -3으로 지정)
e = (float)atof(argv[3]);
////////////////////////////////////////////////////////////////////////////////
To find a solution to f(x) = 0 on [a,b] where f(a)f(b)<0
f(x)의 근을 찾기 위해 이분법을 사용하게 되면 우선 임의의 한구간의 두 경계값
a와 b를 대입하여 나온 f(a)와 f(b)의 값을 구하게 된다.
이때 나온 값의 곱이 음수라면, 즉 f(a)와 f(b)의 부호가 다르다면 그 사이에 근이 있음을 의미한다.
Given a,b,ε,n
set a1=a, b1=b
따라서 경계값 a,b와 허용오차 ε, 그리고 구간분할 횟수를 표시할 n을 가지고
반복문을 통하여 근을 찾게 된다.
While (bi-ci)>ε
while 문을 통하여 경계값 a와 b의 차이가 허용오차보자 작거나 같을 때 까지
즉 거의 근에 근사한 값이 될 때까지 아래 반복문을 반복하게 된다.
참고 자료
공학도를 위한 알기 쉬운 수치해석 - 청문사 / 백태현 -