7주차 math헤더파일.

Download Report

Transcript 7주차 math헤더파일.

컴퓨터프로그래밍 응용 7주
이번 주에서 학습할 내용
•
•
•
•
•
math.h를 이용한 계산
이분법
행렬의 계산
Euler법
구분구적법
math.h
 math.h
 여러 수학 함수들을 포함하는 c언어 표준 라이브러리.
 제곱근, 지수함수, 삼각함수 등을 계산하는 함수들을 갖고 있음.
함수
설명
double sqrt(double x);
x의 제곱근을 구한다
double pow(double x, double y);
𝑥 𝑦 를 구한다
double log(double x);
logex 를 구한다
double log10(double x);
log10x 를 구한다
double sin(double x);
사인 x를 구한다
double cos(double x);
코사인 x를 구한다
double tan(double x);
탄젠트 x를 구한다
문제 1
 math.h을 이용하여 다양한 수학 계산을 하는 프로그램을 작성하시오.
사용자로부터 사용하려는 연산과 값을 입력받아, 값을 출력한다. (단,
입력은 모두 실수이다.)
문제 1
이분법
 이분법
 방정식의 해를 구하는 방법중 하나
 중간 값 정리를 이용
 함수 f(x)가 구간 a<=x<=b에서 연속이고
부등식 f(a)f(b)<0을 만족하면
f(x)=0의 해는 구간 a<x<b사이에 존재
 유효숫자
 얻어진 수치 중, 의미를 갖는 숫자
문제 2
 이분법을 이용하여 방정식
리까지=유효숫자)를 구하시오.
의 근사해(소수 4번째자
문제 2
 hint(2분법 알고리즘)
A
START
f(x)를 정
의
f(x)=x^3+x-1
=
r=0
≠
b-a<e
a, b, e
B
<
c=(a+b)*0.5
c
b=c
r=f(c)
B
A
≥
r*f(a):0
<
>
a=c
END
문제 2
행렬의 계산
 행렬의 계산
 행렬은 2차원 배열을 이용하여 정의.
 행렬의 합, 차, 실수 곱, 역행렬을 구하는 공식은 다음과 같음.
 행렬의 합과 차
 행렬의 곱과 실수 곱
문제 3
 앞에서 배운 행렬의 계산을 이용하여, 행렬의 합과 곱의 결과를 출력
해주는 프로그램을 작성하시오. 사용자로부터 연산을 선택받고, 행
렬값을 입력받으면 결과를 출력한다.
문제 3
오일러 법
 오일러(Euler) 법
 미분방정식을 수치적 방법으로 푸는 법
 다음식과 같이 미분방정식과 초기값이 주어질 때,
미분방정식을 아래의 재귀 관계로 고치고,
을 식에 대입하여
을 구하는 방법
오일러 법
 오일러(Euler) 법
 미분방정식을 수치적 방법으로 푸는 법
 다음식과 같이 미분방정식과 초기값이 주어질 때,
미분방정식을 아래의 재귀 관계로 고치고,
을 식에 대입하여
을 구하는 방법
문제 4
 오일러 법을 이용하여 미분방정식
을 풀이하시오. 초기
값이 x=4, y=3일 때, x=4.1, 4.2, 4.3 …. 5.0에 대한 y의 근사값을
구하시오.
 풀이 hint
 미분방정식을 다음과 같이 변형시킨다.
 x축의 간격은
로 얻어지므로, 재귀식은
다음과 같이되고, 초기값을 넣고 계산하면 된다.
문제 4
 문제 4번 실행 예)
문제 4
 hint(오일러법 알고리즘)
START
A
표제
hx
𝑦 = 𝑦+( )
y
𝑦1 = √(25 − 𝑥 2 )
𝑥0 = 4 , 𝑦 = 3, ℎ = 0.1
B
k=0~9
𝑥 = 𝑥0 + 𝑘ℎ
A
B
𝑥, 𝑦, 𝑦1 , 𝑦 − 𝑦1
x
END
문제 4
구분구적법
 구분구적법
 함수 y=f(x)와 구간 a<=x<=b가 주어졌을 때, y=f(x)의 그래프, x
축, 직선 x=a, x=b로 둘러 쌓인 도형의 면적을 S라고 하자. 이 때
구간 a<=x<=b를 n등분하고, 사각형의 면적의 합으로 S를 근사화
하는 방법
문제 5
 구분구적법을 이용하여 구간 0<=x<=2에서 3차함수 y=x^3의 면
적 S를 구하시오.
 문제 hint
 x축의 간격 :
 사각형 하나의 면적은
 전체 면적의 근사값은 다음과 같다.
이고,
문제 5
 구분구적법을 이용하여 구간 0<=x<=2에서 3차함수 y=x^3의 면
적 S를 구하시오.
문제 5
문제 6
 이차방정식의 근을 판별하고, 2개의 실수와 중근일 때 근을 구하
는 프로그램을 작성한다
문제 6
문제 7
 호텔 예약 프로그램을 작성한다. 작업의 종류는 호텔 예약, 예약
취소, 방 예약여부 보기이다. 호텔의 방은 한 층있는 것으로 가정
하고 한 층에 있는 방은 1번부터 8번까지 총 8개이다. 각 방은 방
번호로 예약 및 예약 취소 할 수 있으며 방이 예약되었을 시 경고
를 내보낸다.
문제 7
랜덤함수 사용법
 랜덤함수는 임의의 숫자를 출력해주는 기능을 한다.
 랜덤함수를 이용하기 위해서는 아래와 같은 헤더파일을 인크루
드 해야한다.
 time.h, windows.h은 각각 시간 출력과 현재 시간을 연동해주
는 기능을 한다.
 랜덤함수는 rand()를 기본으로하여, srand()를 함께 사용한다.
srand()는 시간을 이용하여 시드를 설정하고, rand()는 seed값에
따라 임의의 수를 출력한다.
 두 함수의 사용은 다음과 같다.
문제 8
 랜덤함수를 이용하여 다음과 같은 가위바위보 프로그램을 작성
하시오.
문제 8
문제 9
 2진수 시프트 프로그램을 작성하시오.
 비트연산자를 이용하여 비트를 시프트 시키고, 시프트 된 비트
값을 화면에 표시한다.
 c언어 내부에서 2진수를 나타내는 연산자가 존재하지 않으므로,
비트 값은 %08x로 표시한다.
문제 9