- #1
Adel A
- 5
- 0
Hi!
I have a question about an assignment.
It is about throwing a rock which should land 20 meters away from the "shooter". My job is to find the angle "a" which makes the rock land 20 meters away.
The motion is given by a multivariable, second order differential equation which I have already "converted" into a first order differential equation. I am only allowed to use the Runge-Kutta-method, and not allowed to use ODE45.
I have managed to write a code which works fine, but I need help with making a loop of some sort, in order to find a precise angle, a, which makes the rock land 20 meters away from the shooter.
I know that the angle should be approximately 1 radian.
Here is the code:
I have a question about an assignment.
It is about throwing a rock which should land 20 meters away from the "shooter". My job is to find the angle "a" which makes the rock land 20 meters away.
The motion is given by a multivariable, second order differential equation which I have already "converted" into a first order differential equation. I am only allowed to use the Runge-Kutta-method, and not allowed to use ODE45.
I have managed to write a code which works fine, but I need help with making a loop of some sort, in order to find a precise angle, a, which makes the rock land 20 meters away from the shooter.
I know that the angle should be approximately 1 radian.
Here is the code:
Code:
clear all
close all
clc
format long
%g = 9.81;
a = pi/4;
a = 1;
x0 = [0;1.5];
xPrim0 = 19.*[cos(a);sin(a)];
K = [0.02 0; 0 0.065];
f = [0; -9.81];
x = []; % Vi ska räkna ut X (positionen), men vad skickar vi till funktionen?
xPrim = 19.*[cos(a);sin(a)]; % Ska det multipliceras med 19?
% xPrim är väl inte en funktion av vinkeln
% efter kastet?
h = 0.3;
T = 100;
hojd = 1.5;
%Q = [0.1 1 1.5 3.1];
%c0 = [0.1;0];
u = [x0; xPrim0];
u0 = [x0;xPrim0];
%F = [xPrim; f - norm(xPrim).*K*xPrim];
W = [];
% for i = 1:4
% u0 = [u(i);0];
u = u0;
U = u;
tt = 0:9;
for t=tt(1:end-1)
k1 = Fproj(u);
k2 = Fproj(u+0.5*h*k1);
k3 = Fproj((u+0.5*h*k2));
k4 = Fproj((u+k3*h));
u = u + (1/6)*(k1+2*k2+2*k3+k4)*h;
U = [U u];
end
% W = [W U];
plot(U(1,1:end),U(2,1:end))
hold on
line([0 25], [0 0])
line([20 20], [-5 5])