matlab迭代:x(k+1)=a*x(k)*(1-x(k));a的区间是2.5到4.画出a与x(k)的关系图。求解!急!谢谢

 我来答
百度网友c3efede
2012-06-15 · TA获得超过1460个赞
知道小有建树答主
回答量:535
采纳率:100%
帮助的人:571万
展开全部

% 首先需要知道x(1)的值才能进行迭代

% 这里我们假设x(1)=0.5

N = 300; % 求到迭代100步,这里可以自己修改

x = zeros(N,1);

x(1) = 0.5; % 初始值设置,也可以修改

figure(1);hold on;

% for a = linspace(2.5,4,3); % 绘画a从2.5到4中间取10个点。按照需求修改

% 由于在一张图上话出很多a的情况下很混乱,可以按照下面所示,a只取一个值进行运算。

for a = 3

    for k = 1:N-1

        x(k+1)=a*x(k)*(1-x(k));

    end

    plot(1:N,x,'*-')

end

% 按照该程序取值计算后图像如下图所示

更多追问追答
追问
老师已经给了结果图。但图不是这样的。我先编了个m文件:function [xk]=diedai(x0,k,a0)
x=x0;
for i=1:k
x=a0.*x.*(1-x);
end
xk=x;
还要再编个文件,在这个文件中调用前面的文件。
function y=miaodian(x0,k) %这里可能错的,但是我不会改。
a0=2.5:0.001:4;
for n=1:1500;
plot((a0(n),@diedai(x0,k,a0(n)))
hold on
end 运行后有错误,不知道怎么改。求解!
追答
function main()
x0=0.5;
k=1000;
miaodian(x0,k);
end

function y=miaodian(x0,k) %这里可能错的,但是我不会改。
a0=2.5:0.001:4;

for n=1:length(a0);
plot(a0(n),diedai(x0,k,a0(n)),'*');
hold on
end
end

function [xk]=diedai(x0,k,a0)
x=x0;
for i=1:k
x=a0.*x.*(1-x);
end
xk=x;
end

至于为什么原先代码画出来的图不一样,希望你能仔细理解这两份代码的分别做了什么。
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式