diff --git a/#README.md# b/#README.md# new file mode 100644 index 0000000..6e5910d --- /dev/null +++ b/#README.md# @@ -0,0 +1,153 @@ +# 06_initial_value_ode + +## Problem 2 + +### Script: +```matlab +%Part a. +y_analytical = @(t) exp(-t); + +%Part b. +dt = 0.01; %step size +a = figure(1); +set(0, 'defaultAxesFontsize', 16) +set(0, 'defaultTextFontsize', 16) +set(0, 'defaultLineLineWidth', 2) +t = [0:dt:3]'; +y_n = zeros(size(t)); +y_n(1) = 1; %initial condition +for i = 2:length(t) + dy = ode2(t, y_n(i-1)); + y_n(i) = y_n(i-1) + dt*dy; +end +plot(t, y_analytical(t), 'k-', t, y_n, 'o-'); +title('Analytical vs. Euler') +legend('Analytical', 'Euler', 'Location', 'Northeast') +saveas(a, 'euler.png'); + +%Part c. +b = figure(2); +y_heun = heun_sol_order1(@(t,y) ode2(t,y), dt, 1, [0 3]); +plot(t, y_analytical(t), 'k-', t, y_heun, 'o-'); +title('Analytical vs. Heun') +legend('Analytical', 'Heun', 'Location', 'Northeast') +saveas(b, 'heun.png'); +``` + +### Part b. +![Analytical vs. Euler](./euler2.png) + +### Part c. +![Analytical vs. Heun](./heun2.png) + +## Problem 3 + +### Script: +```matlab +%Part a. +y_analytical = @(t) cos(3*t); + +%Part b. +dt = 0.001; %step size +a = figure(1); +set(0, 'defaultAxesFontsize', 16) +set(0, 'defaultTextFontsize', 16) +set(0, 'defaultLineLineWidth', 2) +t = [0:dt:3]'; +y_n = zeros(length(t), 2); +y_n(1, :) = [1 0]; %initial condition +for i = 2:length(t) + dy = ode3(t, y_n(i-1, :)); + y_n(i, :) = y_n(i-1, :) + dt*dy; +end +plot(t, y_analytical(t), 'k-', t, y_n(:,1), 'o-'); +title('Analytical vs. Euler') +legend('Analytical', 'Euler', 'Location', 'Northeast') +saveas(a, 'euler3.png'); + +%Part c. +b = figure(2); +dt = 0.001; +t = [0:dt:3]; +y_heun = heun_sol_order2(@(t,y) ode3(t,y), dt, [1 0], [0 3]); +plot(t, y_analytical(t), 'k-', t, y_heun(:,1), 'o-'); +title('Analytical vs. Heun') +legend('Analytical', 'Heun', 'Location', 'Northeast') +saveas(b, 'heun3.png'); +``` + +### Part b. +![Analytical vs. Euler](./euler3.png) + +### Part c. +![Analytical vs. Heun](./heun3.png) + +## Problem 4 + +### Script: +```matlab +%part a. +g = 9.81; %m/s^2 +cd = 0.25; %kg/m +m = 60; %kg +v_term = sqrt(m*g/cd); +x_analytical = @(t) ((v_term^2)/g)*log(abs(cosh((g*t)/v_term))) + 100; + +%part b. +dt = 0.01; %step size +a = figure(1); +set(0, 'defaultAxesFontsize', 16) +set(0, 'defaultTextFontsize', 16) +set(0, 'defaultLineLineWidth', 2) +t = [0:dt:12]'; +y_n = zeros(length(t), 2); +y_n(1, :) = [100 0]; %initial condition +for i = 2:length(t) + dy = ode4(t, y_n(i-1, :)); + y_n(i, :) = y_n(i-1, :) + dt*dy; +end +plot(t, x_analytical(t), 'k-', t, y_n(:,1), 'o-'); +title('Analytical vs. Euler') +legend('Analytical', 'Euler', 'Location', 'Northeast') +saveas(a, 'euler4.png'); + +%Part c. +b = figure(2); +dt = 0.01; +t = [0:dt:12]; +y_heun = heun_sol_order2(@(t,y) ode4(t,y), dt, [100 0], [0 12]); +plot(t, x_analytical(t), 'k-', t, y_heun(:,1), 'o-'); +title('Analytical vs. Heun') +legend('Analytical', 'Heun', 'Location', 'Northeast') +saveas(b, 'heun4.png'); +``` + +### Part b. +![Analytical vs. Euler](./euler4.png) + +### Part c. +![Analytical vs. Heun](./heun4.png) + +## Problem 5 + +### Part a. +```matlab +function dy = phugoid_ode(t,y) + %glider equations describing phugoid path + %y = [v, theta, x, y] + g = 9.81; %m/s^2 + vt = 5.5; %m/s + cl = 5.2; + cd = 1; + dy = zeros(size(y)); + dy(1) = -g*sin(y(2)) - cd/cl*g/vt^2*y(1)^2; + dy(2) = -(g/y(1))*cos(y(2)) + g/vt^2*y(1); + dy(3) = y(1)*cos(y(2)); + dy(4) = y(1)*sin(y(2)); +end +``` + +### Part b. +```matlab + + diff --git a/HW6Problem2.m b/HW6Problem2.m index 85c37d8..7a79859 100644 --- a/HW6Problem2.m +++ b/HW6Problem2.m @@ -14,7 +14,7 @@ for i = 2:length(t) dy = ode2(t, y_n(i-1)); y_n(i) = y_n(i-1) + dt*dy; end -plot(t, y_analytical(t), 'k-', t, y_n, 'o-'); +plot(t, y_n, 'o', t, y_analytical(t), 'k-'); title('Analytical vs. Euler') legend('Analytical', 'Euler', 'Location', 'Northeast') saveas(a, 'euler2.png'); @@ -22,7 +22,7 @@ saveas(a, 'euler2.png'); %Part c. b = figure(2); y_heun = heun_sol_order1(@(t,y) ode2(t,y), dt, 1, [0 3]); -plot(t, y_analytical(t), 'k-', t, y_heun, 'o-'); +plot(t, y_heun, 'o', t, y_analytical(t), 'k-'); title('Analytical vs. Heun') legend('Analytical', 'Heun', 'Location', 'Northeast') saveas(b, 'heun2.png'); diff --git a/HW6Problem3.m b/HW6Problem3.m index 8ef85a8..343a489 100644 --- a/HW6Problem3.m +++ b/HW6Problem3.m @@ -12,9 +12,9 @@ y_n = zeros(length(t), 2); y_n(1, :) = [1 0]; %initial condition for i = 2:length(t) dy = ode3(t, y_n(i-1, :)); - y_n(i, :) = y_n(i-1, :) + dt(k)*dy; + y_n(i, :) = y_n(i-1, :) + dt*dy; end -plot(t, y_analytical(t), 'k-', t, y_n(:,1), 'o-'); +plot(t, y_n(:,1), 'o', t, y_analytical(t), 'k-'); title('Analytical vs. Euler') legend('Analytical', 'Euler', 'Location', 'Northeast') saveas(a, 'euler3.png'); @@ -24,7 +24,7 @@ b = figure(2); dt = 0.001; t = [0:dt:3]; y_heun = heun_sol_order2(@(t,y) ode3(t,y), dt, [1 0], [0 3]); -plot(t, y_analytical(t), 'k-', t, y_heun(:,1), 'o-'); +plot(t, y_heun(:,1), 'o-', t, y_analytical(t), 'k-'); title('Analytical vs. Heun') legend('Analytical', 'Heun', 'Location', 'Northeast') saveas(b, 'heun3.png'); \ No newline at end of file diff --git a/HW6Problem4.m b/HW6Problem4.m index e7712a9..6971b1c 100644 --- a/HW6Problem4.m +++ b/HW6Problem4.m @@ -16,9 +16,9 @@ y_n = zeros(length(t), 2); y_n(1, :) = [100 0]; %initial condition for i = 2:length(t) dy = ode4(t, y_n(i-1, :)); - y_n(i, :) = y_n(i-1, :) + dt(k)*dy; + y_n(i, :) = y_n(i-1, :) + dt*dy; end -plot(t, x_analytical(t), 'k-', t, y_n(:,1), 'o-'); +plot(t, y_n(:,1), 'o-', t, x_analytical(t), 'k-'); title('Analytical vs. Euler') legend('Analytical', 'Euler', 'Location', 'Northeast') saveas(a, 'euler4.png'); @@ -28,7 +28,7 @@ b = figure(2); dt = 0.01; t = [0:dt:12]; y_heun = heun_sol_order2(@(t,y) ode4(t,y), dt, [100 0], [0 12]); -plot(t, x_analytical(t), 'k-', t, y_heun(:,1), 'o-'); +plot(t, y_heun(:,1), 'o-', t, x_analytical(t), 'k-'); title('Analytical vs. Heun') legend('Analytical', 'Heun', 'Location', 'Northeast') saveas(b, 'heun4.png'); \ No newline at end of file diff --git a/HW6Problem5.m b/HW6Problem5.m index 35bead7..dd462a6 100644 --- a/HW6Problem5.m +++ b/HW6Problem5.m @@ -1,16 +1,30 @@ %Part b. -dy = ode3(0, [1;0]); -dt = [0.1 0.01]; -figure() -hold on -for k = 1:length(dt) - t = [0:dt(k):20]'; - y_n = zeros(length(t), 4); - y_n(1, :) = [10 0 0 2]; %initial condition - for i = 2:length(t) - dy = phugoid_ode(t(i-1), y_n(i-1, :)); - y_n(i, :) = y_n(i-1, :) + dt(k)*dy; - end - [t23, y23] = ode23(@(t,y) phugoid_ode(t,y), [0,20], [10 0 0 2]); - plot(y_n(:,3), y_n(:, 4), '.', y23(:,3), y23(:,4), 's'); -end \ No newline at end of file +dt = 0.1; +t = [0:dt:20]'; +y_n1 = zeros(length(t), 4); +y_n1(1, :) = [10 0 0 2]; %initial condition +for i = 2:length(t) + dy = phugoid_ode(t(i-1), y_n1(i-1, :)); + y_n1(i, :) = y_n1(i-1, :) + dt*dy; +end + +dt = 0.01; +t = [0:dt:20]'; +y_n2 = zeros(length(t), 4); +y_n2(1, :) = [10 0 0 2]; %initial condition +for i = 2:length(t) + dy = phugoid_ode(t(i-1), y_n2(i-1, :)); + y_n2(i, :) = y_n2(i-1, :) + dt*dy; +end + +a = figure(1); +set(0, 'defaultAxesFontsize', 16) +set(0, 'defaultTextFontsize', 16) +set(0, 'defaultLineLineWidth', 2) +[t23, y23] = ode23(@(t,y) phugoid_ode(t,y), [0,20], [10 0 0 2]); +plot(y_n1(:,3), y_n1(:, 4), '.', y_n2(:,3), y_n2(:, 4), 'o', y23(:,3), y23(:,4), '-'); +title('Height of Plane vs. Distance') +xlabel('Distance (m)') +ylabel('Height (m)') +legend('dt = 0.1', 'dt = 0.01', 'analytical', 'Location', 'Northeast') +saveas(a, 'problem5.png'); \ No newline at end of file diff --git a/euler2.png b/euler2.png new file mode 100644 index 0000000..3399ccd Binary files /dev/null and b/euler2.png differ diff --git a/euler3.png b/euler3.png index 43dd612..c88aaf2 100644 Binary files a/euler3.png and b/euler3.png differ diff --git a/euler4.png b/euler4.png index 38b90cb..9a70051 100644 Binary files a/euler4.png and b/euler4.png differ diff --git a/heun2.png b/heun2.png new file mode 100644 index 0000000..45786f0 Binary files /dev/null and b/heun2.png differ diff --git a/heun3.png b/heun3.png index f355257..453182e 100644 Binary files a/heun3.png and b/heun3.png differ diff --git a/heun4.png b/heun4.png index 99d9e4f..682129c 100644 Binary files a/heun4.png and b/heun4.png differ diff --git a/problem5.png b/problem5.png new file mode 100644 index 0000000..a6cf22d Binary files /dev/null and b/problem5.png differ