1

Тема: PowerShell: множество Мандельброта

С одной стороны, сценарий был написан в качестве теста сравнения производительности с Julia, с другой - поиграться с комплексными числами. Справедливости ради следует отметить, что PowerShell не тот интерпретатор, который следовало бы использовать для математических (и научных в целом) расчётах, хотя он и это может.

using namespace System.Drawing
using namespace System.Numerics
using namespace System.Windows.Forms

Add-Type -AssemblyName System.Windows.Forms

$frmMain = New-Object Form -Property @{
  BackgroundImage = ($bmp = [Bitmap]::new(320, 320))
  FormBorderStyle = [FormBorderStyle]::FixedSingle
  Icon = ($ico = [Icon]::ExtractAssociatedIcon("$PSHome\pwsh.exe"))
  MaximizeBox = $false
  Size = [Size]::new(316, 339)
  StartPosition = [FormStartPosition]::CenterScreen
  Text = 'Mandelbrot Set'
}
$frmMain.Add_Load({
  foreach ($r in 0..299) {
    foreach ($m in 0..299) {
      $i = 99
      $k = $c = [Complex]::new(($m / 75 - 2), ($r / 75 - 2))
      while (($k *= $k).Magnitude -lt 4 -and $i--) { $k += $c }
      $bmp.SetPixel($m, $r, [color]::FromArgb(-5e6*++$i))
    }
  }
})
$frmMain.Add_FormClosing({
  if ($bmp) { $bmp.Dispose() }
  if ($ico) { $ico.Dispose() }
})
[void]$frmMain.ShowDialog()