How i implement Adams Predictor-Corrector Method from general code ?
조회 수: 38 (최근 30일)
이전 댓글 표시
Below is the Adams predictor-corrector formula and general code. How can I adapt this code to the above question? Can you please help?
%------------------------------------------------------
% 2-step Predictor-Corrector
% [T,Y]=dd2(f,definition,y,h); definition=[t1,tfinal]
%------------------------------------------------------
function [T,Y]=dd2(f,definition,Y1,h)
t1=definition(1);tfinal=definition(2);T=t1;Y=Y1;
t2=t1+h;
definition=[t1,t2];
[T,Y]=rk2(f,definition,Y1,h) ;
Y2=Y(2);
while t2 <tfinal
t3=t2+h;
P=Y2+h*(3/2*f(t2,Y2)-1/2*f(t1,Y1));
Y3=Y2+h/12*(5* f(t3,P)+8*f(t2,Y2)-f(t1,Y1));
Y1=Y2; Y2=Y3;t1=t2;t2=t3;
T=[T;t3];Y=[Y;Y3];
end
%
%----------------------------------------------
댓글 수: 2
Torsten
2022년 5월 27일
You know the correct result of your differential equation.
If you plot Y against T in the calling program and compare the plot with the analytical solution, both should be approximately the same.
If yes, your code is (most probably) correct, if not, it's not.
채택된 답변
Lateef Adewale Kareem
2022년 5월 29일
편집: Lateef Adewale Kareem
2022년 5월 30일
clc; clear all;
h = 0.01;
mu = 20;
f_m = @(t,y) mu*(y-cos(t))-sin(t);
exact = @(t) exp(mu*t)+cos(t);
[t,y_m] = dd2(f_m,[0, 1],exact(0), exact(h), h);
plot(t, exact(t)); hold
plot(t,y_m);
%plot(t,y,'-o');
legend('Exact Solution','Adams predictor-corrector formula')
xlabel('t')
ylabel('y')
title('When h = 0.01 and µ=20')
%------------------------------------------------------
% 2-step Predictor-Corrector
% [T,Y]=dd2(f,definition,y,h); definition=[t1,tfinal]
%------------------------------------------------------
function [T,Y] = dd2(f, definition, Y1, Y2, h)
t1 = definition(1); tfinal = definition(2); t = t1:h:tfinal;
T = t(1:2)'; Y = [Y1;Y2];
for i = 2:numel(t)-1
P = Y(i) + h/2*(3*f(t(i),Y(i))-f(t(i-1),Y(i-1)));
Y(i+1) = Y(i) + h/12*(5*f(t(i+1), P) + 8*f(t(i),Y(i)) - f(t(i-1),Y(i-1)));
T=[T;t(i+1)];
end
end
%
댓글 수: 4
Torsten
2022년 5월 30일
As far as I read in your assignment, you should use the exact solution for y1. So neither rk2 nor rk4 is needed.
Lateef Adewale Kareem
2022년 5월 30일
편집: Lateef Adewale Kareem
2022년 5월 30일
yeah. he should have sent it in. I have modified the solution to use the exact solution at h
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!