## The string is made up of two different mass density strings
## seperated in the middle. Choose the right one to be ligther
## than the left. So, since velocity is inversely propotional
## to the mass density, than the rigth one is faster also.
## r1=c1*dt/dx and r2=c1*dt/dx
function ynext=propagate_two_parts(ynow,yprev,r1,r2)
## initiallization for, take y as previos one
ynext=ynow;
## we have two parts, hence two loops are needed
## the first part is between x=0 and
## let y(now)/2 for better visiulation.
## floor(x) returns the largest integer not greater than x
## length(x) determines the number of column
## or rows in matrix or vector
##I started the 'for' from x=0 but didn't work
##then started from x=1
## but in this case the
## string_two_parts didn't work
## let x0=i0=2
for i=2:floor(length(ynow)/2)
ynext(i) = 2*(1-r1^2)*ynow(i)-yprev(i)+r1^2*(ynow(i+1)+ynow(i-1));
endfor
## the second part is between x0=(L1+L2) /2 and L1+L2 where
## L1 and L2 are string lenghts respectively
## I started the 2nd for from N2steps
## and finished it by 'ynow' but it
## didn't work. So i tried the following
for i=floor(length(ynow)/2)+1:floor(length(ynow))-1
ynext(i) = 2*(1-r2^2)*ynow(i)-yprev(i)+r2^2*(ynow(i+1)+ynow(i-1));
endfor
endfunction
Comments
Post a Comment