该回答引用ChatGPT GPT-4
运行结果
代码如下
% 参数设置
lambda_min = 2.8;
lambda_max = 4;
lambda_step = 0.01;
x0_min = 0.01;
x0_max = 0.99;
num_iter = 1000;
num_skip = 50;
% 初始化
lambdas = lambda_min:lambda_step:lambda_max;
num_lambda = length(lambdas);
x0s = linspace(x0_min, x0_max, 10);
xk = zeros(num_iter, num_lambda);
% 迭代计算
for idx = 1:num_lambda
lambda = lambdas(idx);
x = x0s;
for k = 1:num_iter
x = lambda * x .* (1 - x);
if k > num_skip
xk(k, idx) = x(1);
end
end
end
% 画图
figure;
hold on;
for idx = 1:num_lambda
plot(lambdas(idx) * ones(num_iter - num_skip, 1), xk(num_skip+1:end, idx), '.', 'MarkerSize', 1);
end
xlabel('λ');
ylabel('x_k');
title('不同λ情况下x_k (k>50)的图形');
import matplotlib.pyplot as plt
# 设置迭代次数
n = 200
# 定义迭代函数
def f(x, r):
return r * x * (1 - x)
# 定义初始值和参数范围
x0 = 0.5
r_min = 2.8
r_max = 4.0
# 生成r值的数组
r_values = []
r = r_min
while r <= r_max:
r_values.append(r)
r += 0.01
# 循环计算迭代结果
for r in r_values:
x = x0
results = []
for i in range(n):
x = f(x, r)
results.append(x)
# 绘制结果图形
plt.plot([r] * n, results, '.', color='blue', alpha=0.2)
# 设置图形参数并显示图像
plt.xlabel('r')
plt.ylabel('x')
plt.title('Logistic Map')
plt.show()
以下回答引用自chatGpt, 有用的话,请采纳哇!!!
以下是 MATLAB 实验代码及注释:
clear; % 清除变量
n = 200; % 迭代次数
x = zeros(16, n); % 存储不同 a 值下的迭代结果
for j = 1:16
a = 2.8 + 0.031 * (j - 1); % 计算 a 值
x(j, 1) = 0.1; % 初始值为 0.1
for i = 2:n
x(j, i) = a * x(j, i-1) * (1 - x(j, i-1)); % 迭代公式
end
end
figure; % 新建图形窗口
plot(x(1:16, 51:n)'); % 画出迭代结果图像
title('不同 a 值下的迭代结果'); % 添加标题
legend('a=2.8', 'a=2.831', 'a=2.862', 'a=2.893', 'a=2.924', 'a=2.955', 'a=2.986', 'a=3.017', 'a=3.048', 'a=3.079', 'a=3.11', 'a=3.141', 'a=3.172', 'a=3.203', 'a=3.234', 'a=3.265', 'a=3.296', 'a=3.327', 'Location', 'SouthEast'); % 添加图例并设置位置
xlabel('迭代次数'); % 添加横轴标签
ylabel('迭代结果'); % 添加纵轴标签
代码实现的主要思路是先通过循环计算出不同 a 值下的迭代结果,并存储到一个矩阵中。然后,利用 plot 函数画出迭代结果图像,并添加标题、图例和轴标签等。最终输出的图像可以帮助我们观察和分析迭代的复杂性,进而初步认识到混沌现象。
我写了一个代码,运行结果如下,您可以试试:
% 设定参数
num_points = 1000; % 每个 λ 值下的迭代次数
num_lambdas = 100; % λ 的数量
lambdas = linspace(2.8, 4, num_lambdas); % 在 [2.8, 4] 区间内均匀分布的 λ 值
x0 = 0.5; % 初始值
num_skip = 50; % 前 num_skip 个迭代点会被跳过,因为初始点可能会对迭代结果产生较大影响
% 循环计算不同 λ 值下的迭代结果
for i = 1:num_lambdas
lambda = lambdas(i);
x = zeros(1, num_points);
x(1) = x0;
for j = 2:num_points
x(j) = lambda * x(j-1) * (1 - x(j-1));
end
plot(lambda * ones(1, num_points-num_skip), x(num_skip+1:end), '.', 'MarkerSize', 1);
hold on;
end
% 设定图形参数
xlabel('\lambda');
ylabel('x');
title('Logistic Map');
xlim([min(lambdas), max(lambdas)]);
ylim([0, 1]);
set(gca, 'FontSize', 12);
% 绘制完整的 logistic 映射函数
x = linspace(0, 1, 1000);
y = x .* (1 - x);
plot(x, y, 'k--', 'LineWidth', 2);
legend('迭代结果', 'Logistic 映射函数');
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';