RangaKutta Method Vs Analytic Method plot problem

14 views (last 30 days)
x_a=linspace(0,2,n)
h=x_a(n)-x_a(n-1)
y_a=((x_a.^2+1/2.*x_a+1)).^2
y_r(1)=1;
for i=1:n-1 ;
x_r=linspace(0,2,n)
h_r=x_r(n)-x_r(n-1);
k2_x(i)=x_r(i)+h_r/2;
k1(i)=(1+4.*x_r(i)).*sqrt(y_r(i));
k2_y(i)=y_r(i)+k1(i)./2;
k2(i)=(1+4.*(k2_x(i)).*sqrt(k2_y(i)));
k3_y(i)=y_r(i)+k2(i)./2;
k3(i)=(1+4.*k2_x(i)).*sqrt(k3_y(i));
k4_x(i)=x_r(i)+h_r;
k4_y(i)=y_r(i)+k3(i);
k4(i)=(1+4.*k4_x(i)).*sqrt(k4_y(i));
y_r(i+1)=y_r(i)+h_r.*(k1./6+k4./6+k2./3+k3./3)
i=i+1;
plot(x_a,y_a,'--kd')
hold on
plot(x_r,y_r,'--y+')
end
This is program to plot graph between RangaKutta Method Vs Analytic Method.
But the dont know why the graph is not plotting.Its giving the value of y_r ,two times only.Although it should give the values n times.

Accepted Answer

Walter Roberson
Walter Roberson on 3 Jul 2021
n = 128;
x_a=linspace(0,2,n)
x_a = 1×128
0 0.0157 0.0315 0.0472 0.0630 0.0787 0.0945 0.1102 0.1260 0.1417 0.1575 0.1732 0.1890 0.2047 0.2205 0.2362 0.2520 0.2677 0.2835 0.2992 0.3150 0.3307 0.3465 0.3622 0.3780 0.3937 0.4094 0.4252 0.4409 0.4567
h=x_a(n)-x_a(n-1)
h = 0.0157
y_a=((x_a.^2+1/2.*x_a+1)).^2
y_a = 1×128
1.0000 1.0163 1.0338 1.0524 1.0722 1.0932 1.1155 1.1391 1.1639 1.1902 1.2178 1.2468 1.2774 1.3094 1.3429 1.3781 1.4148 1.4533 1.4935 1.5355 1.5792 1.6249 1.6725 1.7221 1.7738 1.8275 1.8834 1.9415 2.0020 2.0647
y_r(1)=1;
for i=1:n-1 ;
x_r=linspace(0,2,n)
h_r=x_r(n)-x_r(n-1);
k2_x(i)=x_r(i)+h_r/2;
k1(i)=(1+4.*x_r(i)).*sqrt(y_r(i));
k2_y(i)=y_r(i)+k1(i)./2;
k2(i)=(1+4.*(k2_x(i)).*sqrt(k2_y(i)));
k3_y(i)=y_r(i)+k2(i)./2;
k3(i)=(1+4.*k2_x(i)).*sqrt(k3_y(i));
k4_x(i)=x_r(i)+h_r;
k4_y(i)=y_r(i)+k3(i);
k4(i)=(1+4.*k4_x(i)).*sqrt(k4_y(i));
y_r(i+1)=y_r(i)+h_r.*(k1./6+k4./6+k2./3+k3./3)
i=i+1;
plot(x_a,y_a,'--kd')
hold on
plot(x_r,y_r(1:end-1),'--y+') %CHANGED
end
x_r = 1×128
0 0.0157 0.0315 0.0472 0.0630 0.0787 0.0945 0.1102 0.1260 0.1417 0.1575 0.1732 0.1890 0.2047 0.2205 0.2362 0.2520 0.2677 0.2835 0.2992 0.3150 0.3307 0.3465 0.3622 0.3780 0.3937 0.4094 0.4252 0.4409 0.4567
y_r = 1×2
1.0000 1.0190
x_r = 1×128
0 0.0157 0.0315 0.0472 0.0630 0.0787 0.0945 0.1102 0.1260 0.1417 0.1575 0.1732 0.1890 0.2047 0.2205 0.2362 0.2520 0.2677 0.2835 0.2992 0.3150 0.3307 0.3465 0.3622 0.3780 0.3937 0.4094 0.4252 0.4409 0.4567
Unable to perform assignment because the left and right sides have a different number of elements.
Notice in
y_r(i+1)=y_r(i)+h_r.*(k1./6+k4./6+k2./3+k3./3)
that the k* variables are vectors.

More Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!