我的帐篷地图代码是否正确

时间:2015-03-09 15:09:07

标签: matlab

%这里是解释帐篷地图http://en.wikipedia.org/wiki/Tent_map

的链接
 %hi am new to mat lab and i want know is the code is right for tent map
    %the given equation is ![TENT MAP][1]
    u = 1.99;
    N = 100;
    x(1)=0.5;

    for ii=1:N
        if x(ii) < 0.5 %and condition
            x(ii+1)=u*x(ii); %is it right
        else
            if x(ii) >= 0.5 %and this condition 
            x(ii+1)=u*(1-x(ii)); %is it right
            end
        end
    end


  [1]: http://i.stack.imgur.com/Qz6wh.png

1 个答案:

答案 0 :(得分:0)

虽然您的公式在技术上是正确的,但如果要绘制此函数,则无法获得预期的图形。原因是你沿着x轴以1为步长(在for循环中),并且你提供的链接中整个帐篷地图函数的宽度是1.因此,你的函数中只有前两个点是有用。您可以通过为x方向设置不同的步长来解决此问题:

u = 1.99;
N = 100;
x = linspace(0,1,N);    % create a vector of x-positions

for ii=1:N
    if x(ii) < 0.5 
        y(ii)=u*x(ii); 
    elseif x(ii) >= 0.5
        y(ii)=u*(1-x(ii)); 
    end
end

plot(x,y)

但是你可以使用这个更短的代码使它更简单:(这是维基百科文章开头提到的非递归公式):

N = 100;
x = linspace(0,1,N);
u = 2;

y = u*min(x,(1-x));

plot(x,y)