수치해석 연습문제 풀이 6장
- 최초 등록일
- 2009.07.02
- 최종 저작일
- 2009.07
- 23페이지/ MS 워드
- 가격 1,500원
소개글
한양대학교 기계공학부 수치해석 연습문제 풀이입니다
목차
없음
본문내용
이 과정을 10초까지 반복계산하는 프로그램을 다음과 같이 작성하였다.
#include<stdio.h>
#include<math.h>
#include <fstream.h>
float f(float y,float t); //y의 도함수 계산함수
float exact(float t); //엄밀해 계산함수
void main()
{
float t=0,h=0.1;
float k1,k2,k3,k4,y,ey;
float y0=1,error;
int i;
FILE *fout;
fout=fopen("Output.txt","w"); //출력 파일 OPEN
fprintf(fout," t 엄밀해y(t) 수치해y(t) 오차(%%)\n");
for(i=0;i<50;i++)fprintf(fout,"-");
fprintf(fout,"\n %3.2f\t%7.6f\t%7.6f\t%7.6f\n",t,exact(0),y0,t);
for(t=0;t<10;t+=h)
{
k1=h*f(y0,t); //k1계산
k2=h*f(y0+k1/2,t+h/2); //k2계산
k3=h*f(y0+k2/2,t+h/2); //k3계산
k4=h*f(y0+k3,t+h); //k4계산
y=y0+(k1+2*k2+2*k3+k4)/6; //수치해 계산
ey=exact(t+h); //엄밀해 계산
error=fabs(((ey-y)/ey)*100);
fprintf(fout," %3.2f\t%7.6f\t%7.6f\t%7.6f\n",t+h,ey,y,error);
y0=y; //초기값에 계산된 새로운값 입력
}
fclose(fout);
}
float f(float y,float t)
{
return(2*sin(t)+cos(t)-y);
}
float exact(float t)
{
return(0.5*(3*exp(-t)-cos(t)+3*sin(t)));
}
다음은 2초까지의 프로그램 실행 결과 이다.
참고 자료
없음