목차
1.Euler법
2.Heun법
3.Runge-Kutta법
4.소스코드
2.Heun법
3.Runge-Kutta법
4.소스코드
본문내용
수치해석 과제
1.Euler법
2.Heun법
3.Runge-Kutta법
4.소스코드
Do it. 임의의 미분방정식 y\' = f(t, y)를 정하고, 아래 방식을 사용하여 구간 0 에서 4 까지 간격 1로 설정하여 적분하시오.
#11-1
▣ Euler 방식
접근 1.
접근 2.
#11-2
▣ Heun 방식
접근 1.
접근 2.
#11-3
▣ Range Kutta 방식
접근 1.
접근 2.
검증. 손풀이와 일치합니다.
한학기 고생하셨습니다 교수님!
남은 한해 마무리 잘하시고
내년에는 다른 자리에서 찾아뵙도록 하겠습니다!
% 여기서부터 끝까지 블록지정하여야합니다.
clear all
clc
F=\'9*t^2-y\' % 함수식
fprintf(\' 어느것으로 검증하시겠습니까? \\n\\n 1 .지정함수에 저의 구간과 초기값\\n 2 .지정함수에 다른 구간과 초기값 \\n\\n\');
start=input(\'번호를 입력하여 주십시오 (숫자만 입력하십시오) : \');
if start==1
fprintf(\'\\n 저의 구간은 [a,b]=[0,4] 이고 y0=1, h=1 입니다. \\n \');
a=0; b=4; y0=1; h=1;
else
fprintf(\'\\n 다음값을 차례로 입력하여 주십시오 \\n\\n\')
a=input(\'구간 최저값( a )을 입력하시오 : \'); % a
b=input(\'구간 최댓값( b )을 입력하시오 : \'); % b
y0=input(\'초기값( y0 )을 입력하시오 : \'); % y0
h=input(\'간격( h )을 입력하시오 : \'); % h
end
%------------------------------------------------ Euler 방식 --------------
n=0; Y=y0;
fprintf(\'\\n Euler 방식 \\n y%d = %2.6f \\n\',n,Y);
for i=a:h:b;
t=i; y=Y; f=eval(F);
yi=y+f*h; % 결과
n=n+1;
Y=yi;
fprintf(\' y%0.0f = %2.6f \\n\',n,yi);
end
%------------------------------------------------ Heun 방식 ---------------
yup0=y0; n=0; beforeY=yup0; Y=yup0;
fprintf(\'\\n Heun 방식 \\n y%d = %2.6f \\n\',n,Y);
for i=a:h:b;
t=i; y=Y; f=eval(F);
yup0=y+f*h; % 예측자 방정식 y임시값
t=i+h; y=yup0; g=eval(F);
yi=beforeY+((f+g)/2)*h; % 결과
n=n+1;
Y=yi;
beforeY=Y;
fprintf(\' y%0.0f = %2.6f \\n\',n,yi);
end
%--------------------------------------------- Runge-Kutta 방식 -----------
Y=y0; n=0;
fprintf(\'\\n Runge-Kutta 방식 \\n y%d = %2.6f \\n\',n,Y);
for i=a:h:b;
t=i; y=Y; f1=eval(F); k1=f1;
t=i+(h/2); y=Y+(k1*h/2); f2=eval(F); k2=f2;
t=i+(h/2); y=Y+(k2*h/2); f3=eval(F); k3=f3;
t=i+h; y=Y+k3*h; f4=eval(F); k4=f4;
yi=Y+(k1+2*k2+2*k3+k4)*(h/6); % 결과
n=n+1;
Y=yi;
fprintf(\' y%0.0f = %2.6f \\n\',n,yi);
end
1.Euler법
2.Heun법
3.Runge-Kutta법
4.소스코드
Do it. 임의의 미분방정식 y\' = f(t, y)를 정하고, 아래 방식을 사용하여 구간 0 에서 4 까지 간격 1로 설정하여 적분하시오.
#11-1
▣ Euler 방식
접근 1.
접근 2.
#11-2
▣ Heun 방식
접근 1.
접근 2.
#11-3
▣ Range Kutta 방식
접근 1.
접근 2.
검증. 손풀이와 일치합니다.
한학기 고생하셨습니다 교수님!
남은 한해 마무리 잘하시고
내년에는 다른 자리에서 찾아뵙도록 하겠습니다!
% 여기서부터 끝까지 블록지정하여야합니다.
clear all
clc
F=\'9*t^2-y\' % 함수식
fprintf(\' 어느것으로 검증하시겠습니까? \\n\\n 1 .지정함수에 저의 구간과 초기값\\n 2 .지정함수에 다른 구간과 초기값 \\n\\n\');
start=input(\'번호를 입력하여 주십시오 (숫자만 입력하십시오) : \');
if start==1
fprintf(\'\\n 저의 구간은 [a,b]=[0,4] 이고 y0=1, h=1 입니다. \\n \');
a=0; b=4; y0=1; h=1;
else
fprintf(\'\\n 다음값을 차례로 입력하여 주십시오 \\n\\n\')
a=input(\'구간 최저값( a )을 입력하시오 : \'); % a
b=input(\'구간 최댓값( b )을 입력하시오 : \'); % b
y0=input(\'초기값( y0 )을 입력하시오 : \'); % y0
h=input(\'간격( h )을 입력하시오 : \'); % h
end
%------------------------------------------------ Euler 방식 --------------
n=0; Y=y0;
fprintf(\'\\n Euler 방식 \\n y%d = %2.6f \\n\',n,Y);
for i=a:h:b;
t=i; y=Y; f=eval(F);
yi=y+f*h; % 결과
n=n+1;
Y=yi;
fprintf(\' y%0.0f = %2.6f \\n\',n,yi);
end
%------------------------------------------------ Heun 방식 ---------------
yup0=y0; n=0; beforeY=yup0; Y=yup0;
fprintf(\'\\n Heun 방식 \\n y%d = %2.6f \\n\',n,Y);
for i=a:h:b;
t=i; y=Y; f=eval(F);
yup0=y+f*h; % 예측자 방정식 y임시값
t=i+h; y=yup0; g=eval(F);
yi=beforeY+((f+g)/2)*h; % 결과
n=n+1;
Y=yi;
beforeY=Y;
fprintf(\' y%0.0f = %2.6f \\n\',n,yi);
end
%--------------------------------------------- Runge-Kutta 방식 -----------
Y=y0; n=0;
fprintf(\'\\n Runge-Kutta 방식 \\n y%d = %2.6f \\n\',n,Y);
for i=a:h:b;
t=i; y=Y; f1=eval(F); k1=f1;
t=i+(h/2); y=Y+(k1*h/2); f2=eval(F); k2=f2;
t=i+(h/2); y=Y+(k2*h/2); f3=eval(F); k3=f3;
t=i+h; y=Y+k3*h; f4=eval(F); k4=f4;
yi=Y+(k1+2*k2+2*k3+k4)*(h/6); % 결과
n=n+1;
Y=yi;
fprintf(\' y%0.0f = %2.6f \\n\',n,yi);
end
소개글