Фрактал на F#
От: algoritm256  
Дата: 15.09.13 19:48
Оценка:
Здравствуйте! Пытаюсь построить фрактал методом Ньютона на F#. Студия выдает при компиляции ошибку "
Error Unexpected symbol '[<' in binding. Expected incomplete structured construct at or before this point or other token."


Ниже исходный код

#light

open System;
open Microsoft.FSharp.Math;
open System.Numerics;
open System.Drawing;
open System.Windows.Forms;

let rec fractal (min:int,max, z:Complex, _z:Complex, delta:Complex, z1:Complex) = 
        if (min>max && z.Magnitude<1e6 && delta.Magnitude>1e-6) then z
        else
          fractal(min,max, z,  z-(z*z*z-new Complex(1.,0.))/(new Complex(3.,0.)*z*z), z1-z, z)   


let colorize c =
    let r = (4 * c) % 255
    let g = (6 * c) % 255
    let b = (8 * c) % 255
    Color.FromArgb(r,g,b)

let createImage (iter:Complex,Complex_:float) =
    let image = new Bitmap(400, 400)
    for x = 0 to image.Width - 1 do
        for y = 0 to image.Height - 1 do
            let count = fractal(0,64,new Complex(complex_,0.),new Complex(complex_,0.) , new Complex(complex_,0.), new Complex(complex_,0.))
            if count = iter then
                image.SetPixel(x,y, Color.Black)
            else
                image.SetPixel(x,y, colorize( 3 ) )
    let temp = new Form() in
    temp.Paint.Add(fun e -> e.Graphics.DrawImage(image, 0, 0))
    temp

    [<EntryPoint>]
    do Application.Run(createImage (nwe Complex(64,0.),new Complex(1.5,0))


Ошибка идет на [<EntryPoint>], хотя без этой надписи вылетает еще больше ошибок. Что я сделал не так? Помогите пожалуйста! Заранее спасибо!

P.S.

Если не трудно можете проверить правильно ли я написал функцию fractal, которая реализует метод Ньютона и правильно ли я рисую сам фрактал. Просто F# изучаю несколько дней и если честно пока что тяжко дается. Заранее спасибо!

P.P.S.

код метода Ньютона, откуда переводил на F# реализован на C#


maxIterations = 64;
count = 0;
z = current;//комплексные переменные
delta = z;
z1 = z;
while (count < maxIterations && abs(z) < 1e6 && abs (delta) > 1e-6)
   {
   z = z - (z*z*z-1)/(3*z*z);
   delta = z1-z;
   z1 = z; 
   }




23.09.13 00:32: Перенесено модератором из '.NET' — VladD2
23.09.13 00:32: Перенесено модератором из '.NET' — VladD2
23.09.13 00:32: Перенесено модератором из '.NET' — VladD2
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.