|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Get[FileNameJoin[{NotebookDirectory[], "ChaosSim.nb"}]]
|
|
|
| Print["Visualization suite initialized."]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| VisualizeBernoulliChaos[iterations_Integer: 1000, complexity_Integer: 12] := Module[
|
| {data, plot1, plot2, plot3},
|
|
|
| data = SimulateBernoulliChaos[iterations, complexity];
|
|
|
|
|
| plot1 = ListPlot[data,
|
| PlotStyle -> {Blue, PointSize[Small]},
|
| PlotLabel -> Style["Bernoulli Chaos Time Series", Bold, 16],
|
| AxesLabel -> {Style["Iteration", 14], Style["State Value", 14]},
|
| ImageSize -> Large,
|
| GridLines -> Automatic,
|
| GridLinesStyle -> LightGray
|
| ];
|
|
|
|
|
| plot2 = ListPlot[
|
| Partition[data, 2, 1],
|
| PlotStyle -> {Red, PointSize[Tiny]},
|
| PlotLabel -> Style["Bernoulli Phase Space", Bold, 16],
|
| AxesLabel -> {Style["x(t)", 14], Style["x(t+1)", 14]},
|
| ImageSize -> Large,
|
| AspectRatio -> 1
|
| ];
|
|
|
|
|
| plot3 = Histogram[data,
|
| PlotLabel -> Style["Bernoulli Chaos Distribution", Bold, 16],
|
| AxesLabel -> {Style["State Value", 14], Style["Frequency", 14]},
|
| ImageSize -> Large,
|
| ChartStyle -> Blue
|
| ];
|
|
|
| GraphicsGrid[{{plot1}, {plot2}, {plot3}}, ImageSize -> Full]
|
| ]
|
|
|
|
|
|
|
| VisualizeBernoulliAttractor3D[steps_Integer: 2000] := Module[
|
| {points, plot},
|
|
|
| points = BernoulliAttractor[steps, 3];
|
|
|
| plot = ListPointPlot3D[points,
|
| PlotStyle -> Directive[PointSize[Tiny], ColorFunction -> "Rainbow"],
|
| BoxRatios -> {1, 1, 1},
|
| ImageSize -> Large,
|
| PlotLabel -> Style["Bernoulli 3D Chaos Attractor", Bold, 16],
|
| AxesLabel -> {Style["X", 14], Style["Y", 14], Style["Z", 14]},
|
| ViewPoint -> {1.3, -2.4, 2.0},
|
| Background -> Black,
|
| Boxed -> True
|
| ];
|
|
|
| plot
|
| ]
|
|
|
|
|
|
|
| AnimateBernoulliChaos[maxIterations_Integer: 500] := Animate[
|
| Module[{data},
|
| data = SimulateBernoulliChaos[n, 12];
|
| ListPlot[data,
|
| PlotStyle -> {Blue, PointSize[Medium]},
|
| PlotLabel -> Style[StringTemplate["Bernoulli Chaos: `` iterations"][n], Bold, 14],
|
| PlotRange -> {{0, maxIterations}, {0, 1}},
|
| ImageSize -> Large,
|
| AspectRatio -> 0.6
|
| ]
|
| ],
|
| {n, 10, maxIterations, 10}
|
| ]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| VisualizeFibonacciChaos[depth_Integer: 100] := Module[
|
| {data, spiralData, plot1, plot2, plot3},
|
|
|
| data = FibonacciChaosSequence[depth, 0.15];
|
| spiralData = FibonacciSpiral3D[15, 80];
|
|
|
|
|
| plot1 = ListLinePlot[data,
|
| PlotStyle -> {Orange, Thick},
|
| PlotLabel -> Style["Fibonacci Chaos Sequence", Bold, 16],
|
| AxesLabel -> {Style["Index", 14], Style["Value", 14]},
|
| ImageSize -> Large,
|
| Filling -> Axis,
|
| FillingStyle -> Opacity[0.3, Orange]
|
| ];
|
|
|
|
|
| plot2 = ListLinePlot[
|
| Table[GoldenRatioApproximation[n], {n, 2, depth}],
|
| PlotStyle -> {Green, Thick},
|
| PlotLabel -> Style["Golden Ratio Convergence", Bold, 16],
|
| AxesLabel -> {Style["Fibonacci Index", 14], Style["Ratio", 14]},
|
| GridLines -> {{}, {GoldenRatio}},
|
| GridLinesStyle -> Directive[Red, Dashed],
|
| ImageSize -> Large
|
| ];
|
|
|
|
|
| plot3 = ListPointPlot3D[spiralData,
|
| PlotStyle -> Directive[PointSize[Small]],
|
| ColorFunction -> Function[{x, y, z}, ColorData["SunsetColors"][z]],
|
| BoxRatios -> {1, 1, 0.5},
|
| PlotLabel -> Style["Fibonacci Golden Spiral", Bold, 16],
|
| ImageSize -> Large,
|
| Background -> GrayLevel[0.95]
|
| ];
|
|
|
| GraphicsGrid[{{plot1, plot2}, {plot3, ""}}, ImageSize -> Full]
|
| ]
|
|
|
|
|
|
|
| FibonacciBifurcationDiagram[iterations_Integer: 200, samples_Integer: 50] := Module[
|
| {data, points},
|
|
|
| points = Flatten[
|
| Table[
|
| Module[{seq},
|
| seq = FibonacciChaosMap[iterations];
|
| Table[{i/samples, seq[[j]]}, {j, iterations - 100, iterations}]
|
| ],
|
| {i, 1, samples}
|
| ],
|
| 1
|
| ];
|
|
|
| ListPlot[points,
|
| PlotStyle -> {Black, PointSize[Tiny]},
|
| PlotLabel -> Style["Fibonacci Chaos Bifurcation", Bold, 16],
|
| AxesLabel -> {Style["Parameter", 14], Style["State", 14]},
|
| ImageSize -> Large,
|
| AspectRatio -> 0.7
|
| ]
|
| ]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| VisualizeNashEquilibrium[payoff1_List, payoff2_List] := Module[
|
| {equilibria, heatmap1, heatmap2, combined},
|
|
|
| equilibria = FindNashEquilibrium[payoff1, payoff2];
|
|
|
|
|
| heatmap1 = ArrayPlot[payoff1,
|
| ColorFunction -> "TemperatureMap",
|
| PlotLabel -> Style["Player 1 Payoff Matrix", Bold, 14],
|
| FrameLabel -> {Style["Player 2 Strategy", 12], Style["Player 1 Strategy", 12]},
|
| ImageSize -> Medium,
|
| PlotLegends -> Automatic
|
| ];
|
|
|
|
|
| heatmap2 = ArrayPlot[payoff2,
|
| ColorFunction -> "TemperatureMap",
|
| PlotLabel -> Style["Player 2 Payoff Matrix", Bold, 14],
|
| FrameLabel -> {Style["Player 2 Strategy", 12], Style["Player 1 Strategy", 12]},
|
| ImageSize -> Medium,
|
| PlotLegends -> Automatic
|
| ];
|
|
|
|
|
| Print[Style["Nash Equilibria Found: ", Bold], equilibria];
|
|
|
| GraphicsRow[{heatmap1, heatmap2}, ImageSize -> Full]
|
| ]
|
|
|
|
|
|
|
| VisualizeChaosGame[rounds_Integer: 150] := Module[
|
| {history, strategies, equilibriaCount, plot1, plot2},
|
|
|
| history = ChaosGameSimulation[rounds, 2, 0.25];
|
|
|
|
|
| strategies = history[[All, 2]];
|
| equilibriaCount = Length /@ history[[All, 3]];
|
|
|
|
|
| plot1 = ListLinePlot[
|
| {strategies[[All, 1]], strategies[[All, 2]]},
|
| PlotStyle -> {{Blue, Thick}, {Red, Thick}},
|
| PlotLabel -> Style["Strategy Evolution in Chaos Game", Bold, 16],
|
| AxesLabel -> {Style["Round", 14], Style["Strategy", 14]},
|
| PlotLegends -> {"Player 1", "Player 2"},
|
| ImageSize -> Large
|
| ];
|
|
|
|
|
| plot2 = ListLinePlot[equilibriaCount,
|
| PlotStyle -> {Purple, Thick},
|
| PlotLabel -> Style["Number of Nash Equilibria Over Time", Bold, 16],
|
| AxesLabel -> {Style["Round", 14], Style["Equilibria Count", 14]},
|
| Filling -> Axis,
|
| FillingStyle -> Opacity[0.3, Purple],
|
| ImageSize -> Large
|
| ];
|
|
|
| GraphicsColumn[{plot1, plot2}, ImageSize -> Full]
|
| ]
|
|
|
|
|
|
|
| VisualizeMultiAgentChaos[agents_Integer: 6, iterations_Integer: 150] := Module[
|
| {chaos, stateEvolution, fitnessEvolution, plot1, plot2},
|
|
|
| chaos = MultiAgentChaosEquilibrium[agents, iterations];
|
|
|
|
|
| stateEvolution = chaos[[All, 2]];
|
| fitnessEvolution = chaos[[All, 3]];
|
|
|
|
|
| plot1 = ListLinePlot[
|
| Table[stateEvolution[[All, i]], {i, 1, agents}],
|
| PlotStyle -> Table[ColorData[97][i], {i, 1, agents}],
|
| PlotLabel -> Style["Multi-Agent State Evolution", Bold, 16],
|
| AxesLabel -> {Style["Iteration", 14], Style["Agent State", 14]},
|
| PlotLegends -> Table[StringTemplate["Agent ``"][i], {i, 1, agents}],
|
| ImageSize -> Large
|
| ];
|
|
|
|
|
| plot2 = ListPlot3D[
|
| Table[{chaos[[i, 1]], j, stateEvolution[[i, j]]},
|
| {i, 1, Min[100, iterations]}, {j, 1, agents}],
|
| ColorFunction -> "Rainbow",
|
| PlotLabel -> Style["Agent Fitness Landscape", Bold, 16],
|
| AxesLabel -> {Style["Iteration", 12], Style["Agent", 12], Style["State", 12]},
|
| ImageSize -> Large,
|
| Mesh -> None
|
| ];
|
|
|
| GraphicsColumn[{plot1, plot2}, ImageSize -> Full]
|
| ]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| VisualizeUnifiedChaos[steps_Integer: 500] := Module[
|
| {data, correlations, plot1, plot2, plot3},
|
|
|
| data = UnifiedChaosSimulation[steps];
|
| correlations = ChaosCorrelationAnalysis[data];
|
|
|
|
|
| plot1 = ListPointPlot3D[data,
|
| PlotStyle -> Directive[PointSize[Small]],
|
| ColorFunction -> Function[{x, y, z}, ColorData["Rainbow"][z]],
|
| BoxRatios -> {1, 1, 1},
|
| PlotLabel -> Style["Unified Chaos Phase Space", Bold, 16],
|
| AxesLabel -> {Style["Bernoulli", 12], Style["Fibonacci", 12], Style["Nash", 12]},
|
| ImageSize -> Large,
|
| ViewPoint -> {1.5, -2.0, 1.5}
|
| ];
|
|
|
|
|
| plot2 = ListLinePlot[
|
| {data[[All, 1]], data[[All, 2]], data[[All, 3]]},
|
| PlotStyle -> {{Blue, Thick}, {Orange, Thick}, {Green, Thick}},
|
| PlotLabel -> Style["Chaos Components Over Time", Bold, 16],
|
| AxesLabel -> {Style["Step", 14], Style["Value", 14]},
|
| PlotLegends -> {"Bernoulli", "Fibonacci", "Nash"},
|
| ImageSize -> Large
|
| ];
|
|
|
|
|
| plot3 = BarChart[correlations[[All, 2]],
|
| ChartLabels -> correlations[[All, 1]],
|
| PlotLabel -> Style["Component Correlations", Bold, 16],
|
| AxesLabel -> {None, Style["Correlation", 14]},
|
| ChartStyle -> "Pastel",
|
| ImageSize -> Large
|
| ];
|
|
|
| Print[Style["Correlation Analysis:", Bold]];
|
| Print[Grid[correlations, Frame -> All]];
|
|
|
| GraphicsGrid[{{plot1}, {plot2}, {plot3}}, ImageSize -> Full]
|
| ]
|
|
|
|
|
|
|
| ManipulateChaosParameters[] := Manipulate[
|
| Module[{data},
|
| data = SimulateBernoulliChaos[iterations, complexity];
|
| ListPlot[data,
|
| PlotStyle -> {colorScheme, PointSize[pointSize]},
|
| PlotLabel -> Style["Interactive Chaos Explorer", Bold, 16],
|
| ImageSize -> Large,
|
| AspectRatio -> 0.7
|
| ]
|
| ],
|
| {{iterations, 300, "Iterations"}, 50, 1000, 50},
|
| {{complexity, 10, "Complexity"}, 2, 20, 1},
|
| {{pointSize, 0.005, "Point Size"}, 0.001, 0.02, 0.001},
|
| {{colorScheme, Blue, "Color"}, {Blue, Red, Green, Orange, Purple}}
|
| ]
|
|
|
|
|
|
|
|
|
|
|
|
|
| CompareChaosTypes[iterations_Integer: 500] := Module[
|
| {bernoulli, fibonacci, nash, plot},
|
|
|
| bernoulli = SimulateBernoulliChaos[iterations, 12];
|
| fibonacci = FibonacciChaosMap[iterations];
|
| nash = MultiAgentChaosEquilibrium[5, iterations][[All, 2, 1]];
|
|
|
| plot = ListLinePlot[
|
| {bernoulli, fibonacci, nash},
|
| PlotStyle -> {
|
| {Blue, Thick, Opacity[0.7]},
|
| {Orange, Thick, Opacity[0.7]},
|
| {Green, Thick, Opacity[0.7]}
|
| },
|
| PlotLabel -> Style["Chaos Type Comparison", Bold, 18],
|
| AxesLabel -> {Style["Iteration", 14], Style["State Value", 14]},
|
| PlotLegends -> Placed[
|
| {Style["Bernoulli", 12], Style["Fibonacci", 12], Style["Nash Equilibrium", 12]},
|
| Right
|
| ],
|
| ImageSize -> Large,
|
| GridLines -> Automatic,
|
| GridLinesStyle -> LightGray
|
| ];
|
|
|
| plot
|
| ]
|
|
|
|
|
|
|
|
|
|
|
|
|
| ExportVisualization[graphic_, filename_String] := Module[{path},
|
| path = FileNameJoin[{NotebookDirectory[], filename}];
|
| Export[path, graphic, "PNG", ImageResolution -> 300];
|
| Print[Style[StringTemplate["Exported to: ``"][path], Bold, Green]];
|
| ]
|
|
|
|
|
| GenerateFullReport[steps_Integer: 500] := Module[{},
|
| Print[Style["\n=== ChaosSim Full Visualization Report ===\n", Bold, 20, Blue]];
|
|
|
| Print[Style["1. Bernoulli Chaos Analysis:", Bold, 16]];
|
| VisualizeBernoulliChaos[steps, 12];
|
|
|
| Print[Style["\n2. Fibonacci Chaos Patterns:", Bold, 16]];
|
| VisualizeFibonacciChaos[100];
|
|
|
| Print[Style["\n3. Multi-Agent Nash Equilibrium:", Bold, 16]];
|
| VisualizeMultiAgentChaos[5, steps];
|
|
|
| Print[Style["\n4. Unified Chaos System:", Bold, 16]];
|
| VisualizeUnifiedChaos[steps];
|
|
|
| Print[Style["\n=== Report Complete ===\n", Bold, 20, Green]];
|
| ]
|
|
|
|
|
| Print["Visualization functions loaded. Use GenerateFullReport[] to create complete analysis."]
|
|
|