Нарисовать фрактал Ньютона в Ф#
Здравствуйте, я столкнулся с проблемой рисования фрактала Ньютона для f(x) = x^3 - 1 с помощью F#
Проблема в том, что моя программа, похоже, рисует только нижнюю правую 1/4 фрактала и ничего больше. Поскольку фактическая нарисованная область правильна, я считаю, что проблема может быть связана с растровым представлением на форме
Вот ссылка на изображение, которое я получаю
Imgur: магия интернета[^]
Что я уже пробовал:
open System open System.Drawing open System.Windows.Forms open System.Numerics let pi = 3.14159265359 let MaxCount = 50 let multCol = 15 let Tol = 0.5 let r1 = Complex(1.0, 0.0) let r2 = Complex(-0.5, sin(0.66*pi)) let r3 = Complex(-0.5, -sin(0.66 * pi)) let createImage () = let image = new Bitmap (800, 800,System.Drawing.Imaging.PixelFormat.Format32bppPArgb) let graphics = Graphics.FromImage(image) let mutable maxMod = 0.0 for x = 0 to image.Width - 1 do for y = 0 to image.Height - 1 do let mutable z = Complex(float x , float y) let mutable count = 0 while (count < MaxCount && Complex.Abs(z - r1) >= Tol && Complex.Abs(z - r2) >= Tol && Complex.Abs(z - r3) >= Tol) do if(Complex.Abs(z) > 0.0) then z <- z - (z*z*z - Complex(1.0,0.0))/(Complex(3.0,0.0) * z * z) if(Complex.Abs(z) > maxMod) then maxMod <- Complex.Abs(z) count <- count + 1 let temp1 = Complex.Abs(z - r1) let temp2 = Complex.Abs(z - r2) let temp3 = Complex.Abs(z - r3) if(Complex.Abs(z - r1) <= Tol) then let Brush = new System.Drawing.SolidBrush(System.Drawing.Color.Red) graphics.FillRectangle(Brush, new Rectangle(x,y,1,1)) if(Complex.Abs(z - r2) <= Tol) then let Brush = new System.Drawing.SolidBrush(System.Drawing.Color.Blue) graphics.FillRectangle(Brush, new Rectangle(x,y,1,1)) if(Complex.Abs(z - r3) <= Tol) then let Brush = new System.Drawing.SolidBrush(System.Drawing.Color.Green) graphics.FillRectangle(Brush, new Rectangle(x,y,1,1)) image.Save("redacted.png") createImage()