ChaosSIM / Visualizations.nb
Mentors4EDU's picture
Upload 7 files
e2150b1 verified
(* Content-type: application/vnd.wolfram.mathematica *)
(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)
(* Visualizations.nb - ChaosSim Visualization Suite *)
(* Advanced plotting and visualization for chaotic systems *)
(* ::Title:: *)
(*ChaosSim Visualizations*)
(* ::Section:: *)
(*Setup and Initialization*)
(* Load main ChaosSim functions *)
Get[FileNameJoin[{NotebookDirectory[], "ChaosSim.nb"}]]
Print["Visualization suite initialized."]
(* ::Section:: *)
(*Bernoulli Number Chaos Visualizations*)
(* ::Subsection:: *)
(*Time Series Plots*)
VisualizeBernoulliChaos[iterations_Integer: 1000, complexity_Integer: 12] := Module[
{data, plot1, plot2, plot3},
data = SimulateBernoulliChaos[iterations, complexity];
(* Time series plot *)
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
];
(* Phase space plot *)
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
];
(* Histogram *)
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]
]
(* 3D Bernoulli Attractor *)
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
]
(* Animated Bernoulli chaos evolution *)
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}
]
(* ::Section:: *)
(*Fibonacci Chaos Visualizations*)
(* ::Subsection:: *)
(*Golden Ratio and Spiral Patterns*)
VisualizeFibonacciChaos[depth_Integer: 100] := Module[
{data, spiralData, plot1, plot2, plot3},
data = FibonacciChaosSequence[depth, 0.15];
spiralData = FibonacciSpiral3D[15, 80];
(* Chaos sequence plot *)
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]
];
(* Golden ratio convergence *)
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
];
(* 3D Spiral *)
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]
]
(* Fibonacci chaos map bifurcation *)
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
]
]
(* ::Section:: *)
(*Nash Equilibrium Visualizations*)
(* ::Subsection:: *)
(*Game Theory and Multi-Agent Systems*)
VisualizeNashEquilibrium[payoff1_List, payoff2_List] := Module[
{equilibria, heatmap1, heatmap2, combined},
equilibria = FindNashEquilibrium[payoff1, payoff2];
(* Heatmap for player 1 payoffs *)
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
];
(* Heatmap for player 2 payoffs *)
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
];
(* Display equilibria *)
Print[Style["Nash Equilibria Found: ", Bold], equilibria];
GraphicsRow[{heatmap1, heatmap2}, ImageSize -> Full]
]
(* Chaos game simulation visualization *)
VisualizeChaosGame[rounds_Integer: 150] := Module[
{history, strategies, equilibriaCount, plot1, plot2},
history = ChaosGameSimulation[rounds, 2, 0.25];
(* Extract strategy evolution *)
strategies = history[[All, 2]];
equilibriaCount = Length /@ history[[All, 3]];
(* Strategy evolution plot *)
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
];
(* Equilibria count over time *)
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]
]
(* Multi-agent chaos equilibrium *)
VisualizeMultiAgentChaos[agents_Integer: 6, iterations_Integer: 150] := Module[
{chaos, stateEvolution, fitnessEvolution, plot1, plot2},
chaos = MultiAgentChaosEquilibrium[agents, iterations];
(* Extract state and fitness data *)
stateEvolution = chaos[[All, 2]];
fitnessEvolution = chaos[[All, 3]];
(* Agent state evolution *)
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
];
(* Fitness landscape *)
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]
]
(* ::Section:: *)
(*Unified Chaos Visualization*)
(* ::Subsection:: *)
(*Combined System Analysis*)
VisualizeUnifiedChaos[steps_Integer: 500] := Module[
{data, correlations, plot1, plot2, plot3},
data = UnifiedChaosSimulation[steps];
correlations = ChaosCorrelationAnalysis[data];
(* 3D phase space *)
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}
];
(* Component time series *)
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
];
(* Correlation matrix *)
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]
]
(* Interactive chaos explorer *)
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}}
]
(* ::Section:: *)
(*Comparative Analysis Visualizations*)
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
]
(* ::Section:: *)
(*Export and Reporting*)
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."]