mirror of
https://github.com/josdejong/mathjs.git
synced 2026-01-18 14:59:29 +00:00
* broadcasting * Simplified broadcasting * Updated for broadcasting * Changed to camel case * Camel case and auto formating * Added comments * Skip if matrices have the same size * Fixed issue with undefined variable missing dot in `A._size` * Implemented broadcasting in all functions * Added helper functions * Added function to check for broadcasting rules * Tests for broadcasted arithmetic * Fixed issue with matrix the size of a vector * Documented and updated broadcasting * Included broadcast.test * Included math to syntax when missing * Lorenz attractor --------- Co-authored-by: David Contreras <david.contreras@guentner.com> Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
53 lines
1.3 KiB
HTML
53 lines
1.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>math.js | Lorenz Attractor</title>
|
|
<script src="../../lib/browser/math.js"></script>
|
|
|
|
<script src="https://cdn.plot.ly/plotly-2.25.2.min.js" charset="utf-8"></script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="LorenzGraph"></div>
|
|
</body>
|
|
<script defer>
|
|
|
|
// define the constants for the Lorenz attractor
|
|
const sigma = 10
|
|
const beta = 2.7
|
|
const rho = 28
|
|
|
|
// solve the Lorenz attractor
|
|
const sol = math.solveODE(lorenz, [0, 100], [1, 1, 1])
|
|
|
|
// make colors that represents time differences in the solution
|
|
const diff = math.diff(sol.t)
|
|
const color = [diff[0], ...diff]
|
|
|
|
// render the plot using plotly
|
|
Plotly.newPlot('LorenzGraph',
|
|
[{
|
|
x: sol.y.map(u => u[0]),
|
|
y: sol.y.map(u => u[1]),
|
|
z: sol.y.map(u => u[2]),
|
|
line: { color, colorscale: 'Jet' },
|
|
type: "scatter3d",
|
|
mode: "lines"
|
|
}],
|
|
{ width: 800, height: 600 }
|
|
)
|
|
|
|
// define the lorenz attractor
|
|
function lorenz(t, u) {
|
|
const [x, y, z] = u
|
|
return [
|
|
sigma * (y - x),
|
|
x * (rho - z) - y,
|
|
x * y - beta * z
|
|
]
|
|
}
|
|
</script>
|
|
|
|
</html> |