matlab迭代:x(k+1)=a*x(k)*(1-x(k));a的区间是2.5到4.画出a与x(k)的关系图。求解!急!谢谢
展开全部
% 首先需要知道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
至于为什么原先代码画出来的图不一样,希望你能仔细理解这两份代码的分别做了什么。
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询