浅浅写一个切线飞行轨迹图,不能保证百分百正确!
%公众号:淘个代码
clear
clc
close all
% Mantegna方法模拟切线飞行
x = [0,0];
y = [0,0];
for i=1:1000
teta=rand.*pi/2.01; % % 如果这里除以2,会变成无穷大,因此这里可以在2后面加个很小的值。这里加的是0.01,这个值加的越小,那么正切搜索的步长就越大!
step = 0.5*sign(rand-0.5).*tan(teta); % 控制飞行方向与步长,sign是一个符号函数,tan(teta)就是步长
x(:,1) = x(:,2);
x(:,2) = x(:,1)+step;
teta=rand.*pi/2.01; % the tangent angle
step = 0.5*sign(rand-0.5).*tan(teta); %
y(:,1) = y(:,2);
y(:,2) = y(:,1)+step;
plot(x,y);
hold on;
end
xlabel('X');
ylabel('Y');
title('Tangent Flight Random Walk');
结果如下:
可以看到,相对于莱维飞行图来说,这里每一步的步长都会很大!
再来一次!(这里除以了2.001,这样步长更大了!可以看到,都干到1000了,正常的智能算法改进中,应该不用这么大)