# Euler method error in code Index exceeds the number of array elements (1). in my my code

1 view (last 30 days)
Anas Lunat on 17 Nov 2019
Answered: Fabio Freschi on 17 Nov 2019
my code
b=input('enter the starting value of b here ')
a=input('enter the starting value of a here ')
h= 15
i=600
x(1)= 0
y(1)= 0
for n=1:h:i
x(n+1)=x(n)+(a(400-x(n)))/(sqr((400-x(n))^2+(y(n)^2)))*h
y(n+1)=y(n)+(b-((a*y(n))/(sqr((400-x(n))^2+(y(n)^2)))))*h
if x <= 400
break
end
end
plot(x,y,'r')
##### 2 CommentsShowHide 1 older comment
Anas Lunat on 17 Nov 2019
Edited: Anas Lunat on 17 Nov 2019
boatman is charged with operating a ferry across the river Nile in a place where the river is 400 m wide. The boat is navigated from starting point (A) such that it is always pointing at the destination of end point (B) at a speed of a m2 There is a current running in the river of b ms-1 that carriesthe vessel downstream. Using an X, Y coordinate system as shown in Figure 1, write a MATLAB script that adopts Euler’s method to find locations of the vessel as it crosses the river and plots the path of the ferry. Test the script using different speeds for the vessel and current, in each case finding how long it takes to cross the river.
the graph starting point for x and y would b '0' using euler new values would be generated for x and y

Fabio Freschi on 17 Nov 2019
Checking the sintax of the code only I see 3 issues
1) In the for loop you wrote a(400-x(n)), that is you are addressing the position 400-x(n) = 400 when n = 1 of the variable a. but a is a scalar. so I guess you forgot an operator like, for example a*(400-x(n)) or a+(400-x(n))...
2) you are using sqr instead of sqrt to extract the square root
3) you should preallocate your vectors x and y as x = zeros(i,1); y = zeros(i,1);
Note also that using i as variable can be misleading because it is often used as index