open Impact //let redLine(x, y, m, xlen) = // while (x < x+xlen) do // dot(x,y) red // x <- x + 0.5 // y <- y + m*0.5 let vline(x,height) = let mutable numDots = 0.0 let mutable y = 0.0 if d > 0.0 then while y < d do dot (x,y) black y <- y + 1. numDots <- numDots + 1.0 else while y > d do dot (x,y) red y <- y - 1.; numDots <- numDots - 1. numDots let rect(xstart,ystart,width, height) = let mutable x = xstart let mutable sum = 0.0 while x < xstart + width do sum <- sum + vline(x,height) x <- x + 1.0 sum clear() e <- 2.71828 let f0(x) = sin(x/20.0) * 50.0 let f1(x) = cos(x/20.0) * 50.0 let f2(x) = 100.0/((2.0**(-(x-40.0)/4.0)) + 1.0) - 45.0 let f3(x) = (-25.0) + (0.2 *x) + 100.*(2.**(-(((x-100.)/50.)**2.)) - (2.*(2.**(-(((x-100.)/25.)**2.))))) let f4(x) = x*x/100.0 let f5(x) = 100.0/(1.+e**(-(x-100.0)/2.)) let f6(x) = -50. + 100.0/(1.+e**(-(x-100.0)/2.)) let f7(x) = 2.0*x-80.0 let f8(x) = x let f9(x) = 0.05*(x ** 2.0) let f = f0 let deltaX = 1.0 let diff(x) = (f(x+deltaX) - f(x))/deltaX clear() x <- 0.0 s <- 0.0 while x < 200. do dot (x,f(x)) green dot (x, s) red d <- diff(x) dot (x, d) blue s <- s + d*deltaX //s <- s + rect(x,0.0,deltaX,d) x <- x+deltaX