목차
1. 다음 초기치 문제를 0t 2에서 구간간격을 h=0.1로 하여 Taylor 급수법으로 풀어라.
만약 엄밀해가 존재한다면 그 해와 수치결과를 비교하라.
2. 다음 초기치 문제를 0t 2에서 구간간격을 h=0.1과 h=0.01로 하여 Euler 법의 양함수법과 음함수법으로 각각 풀어라. 또한, Euler법의 양함수법으로 풀 때 구간간격을 얼마 이하로 하여야만 수치해가 안정되는지를 조사하여라.
3. 문제 2를 수정 Euler 법으로 다시 풀어라.
9. 다음 초기치 문제를 구간 0t 10에서 구간간격을 h=0.1로 하여 4계 Runge-Kutta법으로 풀어라. 또한, 적응 구간간격 제어를 이용하여 Runge-Kutta-Fehlberg법으로 풀어라. 단, 적응구간간격 제어를 이용할 때 최대허용오차는 0.05%이고 최소허용오차는 0.005%이다.
만약 엄밀해가 존재한다면 그 해와 수치결과를 비교하라.
2. 다음 초기치 문제를 0t 2에서 구간간격을 h=0.1과 h=0.01로 하여 Euler 법의 양함수법과 음함수법으로 각각 풀어라. 또한, Euler법의 양함수법으로 풀 때 구간간격을 얼마 이하로 하여야만 수치해가 안정되는지를 조사하여라.
3. 문제 2를 수정 Euler 법으로 다시 풀어라.
9. 다음 초기치 문제를 구간 0t 10에서 구간간격을 h=0.1로 하여 4계 Runge-Kutta법으로 풀어라. 또한, 적응 구간간격 제어를 이용하여 Runge-Kutta-Fehlberg법으로 풀어라. 단, 적응구간간격 제어를 이용할 때 최대허용오차는 0.05%이고 최소허용오차는 0.005%이다.
본문내용
ource >
#include
#include
void main()
{
int i=0;
double j,t,h=0,yr,E;
double y[2000]={0};
y[0]=2;
printf(\" \\n***Euler법으로 풀어보기!!***\\n\");
printf(\" \\n(2) 음함수법 \\n\");
printf(\" \\n y(0)값을 입력하세요 \",y[0]); scanf(\"%d\",&y[0]);
printf(\" \\n 구간간격 h 값을 입력하세요 \",h); scanf(\"%lf\",&h);
printf(\" \\n =============================================\\n \");
for (t=0;t<0.1;t=t+0.01)
{
j=t;
j=t+0.01;
y[i+1]=(y[i]+h*j-h*j*j)/(1-4*h);
i=i+1;
printf(\"\\n t가 %lf 일 때 함수 값은 %lf 입니다.\",t+0.01,y[i]);
yr=1.90625*exp(4*(t+0.01))+0.09375-0.125*(t+0.01)+0.25*(t+0.01)*(t+0.01);
E=fabs(yr-y[i])*100/yr;
printf(\"\\n엄밀해는 %lf이고 상대오차는 %lf 퍼센트입니다.\\n\",yr,E);
}
}
3. 문제 2를 수정 Euler 법으로 다시 풀어라.
y\' - 4y = t - t2, y(0) = 2
*** h=0.1 일 때의 Source ***
< C++ Source >
#include
#include
void main()
{
int i=0;
double y0,t,yp,yt,yc,f,h,yr,E;
printf(\" \\n***수정 Euler법으로 풀어보기!!***\\n\");
printf(\" \\n y(0)값을 입력하세요 \",y0); scanf(\"%lf\",&y0);
printf(\" \\n 구간간격 h 값을 입력하세요 \",h); scanf(\"%lf\",&h);
printf(\" \\n =============================================\\n \");
for (t=0.1;t<2.1;t=t+0.1)
{
f=4*y0+(t-0.1)-(t-0.1)*(t-0.1);
yp=y0+h*f;
yt=4*yp+t-t*t;
yc=y0+0.5*h*(f+yt);
y0=yc;
printf(\"\\n t가 %lf 일 때 함수 값은 %lf 입니다.\",t,yc);
yr=1.90625*exp(4*t)+0.09375-0.125*t+0.25*t*t;
E=fabs(yr-yc)*100/yr;
printf(\"\\n엄밀해는 %lf이고 상대오차는 %lf 퍼센트입니다.\\n\",yr,E);
}
}
*** h=0.01 일 때의 Source ***
< C++ Source >
#include
#include
void main()
{
int i=0;
double y0,t,yp,yt,yc,f,h,yr,E;
printf(\" \\n***수정 Euler법으로 풀어보기!!***\\n\");
printf(\" \\n y(0)값을 입력하세요 \",y0); scanf(\"%lf\",&y0);
printf(\" \\n 구간간격 h 값을 입력하세요 \",h); scanf(\"%lf\",&h);
printf(\" \\n =============================================\\n \");
for (t=0.01;t<2.01;t=t+0.01)
{
f=4*y0+(t-0.01)-(t-0.01)*(t-0.01);
yp=y0+h*f;
yt=4*yp+t-t*t;
yc=y0+0.5*h*(f+yt);
y0=yc;
printf(\"\\n t가 %lf 일 때 함수 값은 %lf 입니다.\",t,yc);
yr=1.90625*exp(4*t)+0.09375-0.125*t+0.25*t*t;
E=fabs(yr-yc)*100/yr;
printf(\"\\n엄밀해는 %lf이고 상대오차는 %lf 퍼센트입니다.\\n\",yr,E);
}
}
(너무 길어서 중간 생략...)
9. 다음 초기치 문제를 구간 0t 10에서 구간간격을 h=0.1로 하여 4계 Runge-Kutta법으로 풀어라. 또한, 적응 구간간격 제어를 이용하여 Runge-Kutta-Fehlberg법으로 풀어라. 단, 적응구간간격 제어를 이용할 때 최대허용오차는 0.05%이고 최소허용오차는 0.005%이다.
(d) y\' - y = 1 - sin t + e-t, y(0) = 0
< C++ Source >
#include
#include
void main()
{
int i=0;
double k[4]={0};
double t,t2,y0=0,y2,f,h=0,y,yr,E;
printf(\" \\n***Runge-Kutta법으로 풀어보기!!***\\n\");
printf(\" \\n y(0)값을 입력하세요 \",y0); scanf(\"%lf\",&y0);
printf(\" \\n 구간간격 h 값을 입력하세요 \",h); scanf(\"%lf\",&h);
printf(\" \\n =============================================\\n \");
for (t=0.1;t<10;t=t+0.1)
{
f=y0+1-sin(t-0.1)+exp(-1*(t-0.1));
k[0]=f;
t2=(t-0.1)+0.5*h;
y2=y0+0.5*h*k[0];
f=y2+1-sin(t2)+exp(-1*t2);
k[1]=f;
y2=y0+0.5*h*k[1];
f=y2+1-sin(t2)+exp(-1*t2);
k[2]=f;
t2=(t-0.1)+h;
y2=y0+h*k[2];
f=y2+1-sin(t2)+exp(-1*t2);
k[3]=f;
y=y0+h*(k[0]+2*(k[1]+k[2])+k[3])/6;
printf(\"\\n t가 %lf 일 때 함수 값은 %lf 입니다.\",t,y);
yr=exp(t)-0.5*exp(-1*t)+0.5*cos(t)+0.5*sin(t)-1;
E=fabs((yr-y)/yr)*100;
printf(\"\\n엄밀해는 %lf 이며, 상대오차는 %lf 퍼센트입니다.\\n\",yr,E);
y0=y;
}
}
(너무 길어서 중간생략....)
#include
#include
void main()
{
int i=0;
double j,t,h=0,yr,E;
double y[2000]={0};
y[0]=2;
printf(\" \\n***Euler법으로 풀어보기!!***\\n\");
printf(\" \\n(2) 음함수법 \\n\");
printf(\" \\n y(0)값을 입력하세요 \",y[0]); scanf(\"%d\",&y[0]);
printf(\" \\n 구간간격 h 값을 입력하세요 \",h); scanf(\"%lf\",&h);
printf(\" \\n =============================================\\n \");
for (t=0;t<0.1;t=t+0.01)
{
j=t;
j=t+0.01;
y[i+1]=(y[i]+h*j-h*j*j)/(1-4*h);
i=i+1;
printf(\"\\n t가 %lf 일 때 함수 값은 %lf 입니다.\",t+0.01,y[i]);
yr=1.90625*exp(4*(t+0.01))+0.09375-0.125*(t+0.01)+0.25*(t+0.01)*(t+0.01);
E=fabs(yr-y[i])*100/yr;
printf(\"\\n엄밀해는 %lf이고 상대오차는 %lf 퍼센트입니다.\\n\",yr,E);
}
}
3. 문제 2를 수정 Euler 법으로 다시 풀어라.
y\' - 4y = t - t2, y(0) = 2
*** h=0.1 일 때의 Source ***
< C++ Source >
#include
#include
void main()
{
int i=0;
double y0,t,yp,yt,yc,f,h,yr,E;
printf(\" \\n***수정 Euler법으로 풀어보기!!***\\n\");
printf(\" \\n y(0)값을 입력하세요 \",y0); scanf(\"%lf\",&y0);
printf(\" \\n 구간간격 h 값을 입력하세요 \",h); scanf(\"%lf\",&h);
printf(\" \\n =============================================\\n \");
for (t=0.1;t<2.1;t=t+0.1)
{
f=4*y0+(t-0.1)-(t-0.1)*(t-0.1);
yp=y0+h*f;
yt=4*yp+t-t*t;
yc=y0+0.5*h*(f+yt);
y0=yc;
printf(\"\\n t가 %lf 일 때 함수 값은 %lf 입니다.\",t,yc);
yr=1.90625*exp(4*t)+0.09375-0.125*t+0.25*t*t;
E=fabs(yr-yc)*100/yr;
printf(\"\\n엄밀해는 %lf이고 상대오차는 %lf 퍼센트입니다.\\n\",yr,E);
}
}
*** h=0.01 일 때의 Source ***
< C++ Source >
#include
#include
void main()
{
int i=0;
double y0,t,yp,yt,yc,f,h,yr,E;
printf(\" \\n***수정 Euler법으로 풀어보기!!***\\n\");
printf(\" \\n y(0)값을 입력하세요 \",y0); scanf(\"%lf\",&y0);
printf(\" \\n 구간간격 h 값을 입력하세요 \",h); scanf(\"%lf\",&h);
printf(\" \\n =============================================\\n \");
for (t=0.01;t<2.01;t=t+0.01)
{
f=4*y0+(t-0.01)-(t-0.01)*(t-0.01);
yp=y0+h*f;
yt=4*yp+t-t*t;
yc=y0+0.5*h*(f+yt);
y0=yc;
printf(\"\\n t가 %lf 일 때 함수 값은 %lf 입니다.\",t,yc);
yr=1.90625*exp(4*t)+0.09375-0.125*t+0.25*t*t;
E=fabs(yr-yc)*100/yr;
printf(\"\\n엄밀해는 %lf이고 상대오차는 %lf 퍼센트입니다.\\n\",yr,E);
}
}
(너무 길어서 중간 생략...)
9. 다음 초기치 문제를 구간 0t 10에서 구간간격을 h=0.1로 하여 4계 Runge-Kutta법으로 풀어라. 또한, 적응 구간간격 제어를 이용하여 Runge-Kutta-Fehlberg법으로 풀어라. 단, 적응구간간격 제어를 이용할 때 최대허용오차는 0.05%이고 최소허용오차는 0.005%이다.
(d) y\' - y = 1 - sin t + e-t, y(0) = 0
< C++ Source >
#include
#include
void main()
{
int i=0;
double k[4]={0};
double t,t2,y0=0,y2,f,h=0,y,yr,E;
printf(\" \\n***Runge-Kutta법으로 풀어보기!!***\\n\");
printf(\" \\n y(0)값을 입력하세요 \",y0); scanf(\"%lf\",&y0);
printf(\" \\n 구간간격 h 값을 입력하세요 \",h); scanf(\"%lf\",&h);
printf(\" \\n =============================================\\n \");
for (t=0.1;t<10;t=t+0.1)
{
f=y0+1-sin(t-0.1)+exp(-1*(t-0.1));
k[0]=f;
t2=(t-0.1)+0.5*h;
y2=y0+0.5*h*k[0];
f=y2+1-sin(t2)+exp(-1*t2);
k[1]=f;
y2=y0+0.5*h*k[1];
f=y2+1-sin(t2)+exp(-1*t2);
k[2]=f;
t2=(t-0.1)+h;
y2=y0+h*k[2];
f=y2+1-sin(t2)+exp(-1*t2);
k[3]=f;
y=y0+h*(k[0]+2*(k[1]+k[2])+k[3])/6;
printf(\"\\n t가 %lf 일 때 함수 값은 %lf 입니다.\",t,y);
yr=exp(t)-0.5*exp(-1*t)+0.5*cos(t)+0.5*sin(t)-1;
E=fabs((yr-y)/yr)*100;
printf(\"\\n엄밀해는 %lf 이며, 상대오차는 %lf 퍼센트입니다.\\n\",yr,E);
y0=y;
}
}
(너무 길어서 중간생략....)
키워드
추천자료
경제사 인물정리 테일러 간트 길브레드 부부 뮌스터버그 인물 길브레드 훼이욜
테일러의 과학적 관리론과 페이욜의 관리 과정론 비교
조직이론의 변천과정
조직이론에 관한 정리
전통적 관리와 총체적 품질관리(TQM)의 의미와 주요 차이점
조직이론의 전개
[TQM][총체적품질경영][총체적품질관리]TQM(총체적품질경영, 총체적품질관리) 심층 분석(TQM(...
생산관리론
경영학 연구 시험자료
스토리텔링(구연동화, 동화구연)의 정의와 종류, 스토리텔링(구연동화, 동화구연)의 가치, 스...
영국 낭만파 시의 특징(한국과 동일)
[인문과학] 조직이론
테일러 시스템과 포드 시스템
소개글