MATLAB绘制分数阶三维四维混沌系统的吸引子相图,以及随阶次变化和随参数变化下李雅普诺夫指数谱图以及SE、C0复杂度,adomain分解法以及预估矫正法两种方法下随参数和随阶次变化的的分岔图,以及双参数影响下的复杂度图谱。
最近在折腾分数阶混沌系统的可视化,发现用MATLAB画这些妖娆的相图比解微分方程本身还有意思。先来个最直观的分数阶Chen系统三维相图绘制,感受下混沌的几何之美:
function chen_attractor() h = 0.01; T = 1000; alpha = [0.9, 0.9, 0.9]; params = [35, 3, 28, -7]; f = @(t,x) [params(1)*(x(2)-x(1)) + x(4); params(3)*x(1) - x(1)*x(3) + params(4)*x(2); x(1)*x(2) - params(2)*x(3); -x(1) - x(2)]; % 四维系统拓展项 sol = fde12(alpha, f, [0 T], [1;0.5;0;0], h); plot3(sol.y(1,:), sol.y(2,:), sol.y(3,:), 'LineWidth',0.5); axis tight; view(20,30); set(gcf,'Color',[0.2 0.2 0.2]); % 暗色背景更带感 end这里的fde12是分数阶微分方程求解器,重点注意四维系统中我们选取前三维投影。当alpha参数在0.9附近时,系统会呈现典型的拉伸折叠结构,图像看起来像被猫抓过的毛线团。
想要量化混沌强度,李雅普诺夫指数谱得安排上。下面这段代码计算随阶次q变化的指数谱:
q_range = 0.7:0.02:1; lyap = zeros(length(q_range),4); for k = 1:length(q_range) [~, temp] = lyapunovExponent(@(x)chen_system(x,35,3,28), q_range(k)); lyap(k,:) = temp(1:4); end plot(q_range, lyap(:,1), 'o-', 'Color','#FF6B6B'); % 最大指数用亮红色 hold on; plot(q_range, lyap(:,2:4), '.-', 'MarkerSize',8);运行后会看到当q降到0.85左右时,最大李雅普诺夫指数突然翘头转正,系统进入混沌状态。有个坑要注意:计算时建议关掉MATLAB的实时脚本模式,否则迭代过程中窗口缩放会导致数据错位。
复杂度分析这块,C0复杂度计算可以用频域法实现:
function C0 = calc_C0(signal) F = fft(signal); threshold = 0.2*max(abs(F)); F_trimmed = F(abs(F) > threshold); C0 = sum(abs(F_trimmed).^2) / sum(abs(F).^2); end这个实现用20%能量阈值过滤高频噪声,实际调试时发现当系统进入周期态时C0值会突然下跌到0.3以下,和相图闭合轨迹的出现位置吻合。
分岔图绘制推荐用Adomian分解法的并行加速版本:
parfor k = 1:500 % 参数遍历并行加速 a = 28 + 0.1*k; x = adomian_solve(a); % 自定义Adomian求解器 bifurcation_data{k} = x(end-1000:end); end scatter(28:0.1:78, bifurcation_data, 1, 'k'); % 散点尺寸调小更清晰这里有个骚操作——把循环变量k和实际参数a做线性映射,避免parfor的变量传递限制。当参数a超过35时,分岔图上会出现密集的雪花点,暗示混沌区域到来。
最后来个双参数复杂度图谱压轴,用surf函数画三维山丘:
[a_grid,q_grid] = meshgrid(25:0.5:40, 0.8:0.02:1); C0_map = zeros(size(a_grid)); for i = 1:numel(a_grid) x = solve_system(a_grid(i), q_grid(i)); C0_map(i) = calc_C0(x(:,1)); end surf(a_grid, q_grid, C0_map, 'EdgeColor','none'); lighting phong; material shiny % 开启光影特效 colormap turbo % 使用炫酷的彩虹色图当同时调节系统参数a和阶次q时,复杂度峰值会沿着对角线分布,这说明参数耦合对混沌强度的影响是非线性的。记得把数据存成mat文件,不然16GB内存的电脑跑这个循环容易崩。
这些可视化手段组合使用,基本能扒光分数阶混沌系统的底裤。不过真正实操时会发现,图像渲染时间比计算还长——果然颜值即正义,在科研里也成立啊。