Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type Partition =
- { points : double []
- ; deltaX : double
- }
- let parition lo hi n =
- let dx = (hi - lo) / double n
- { points = [|for i = 0 to n do
- yield lo + dx * double i
- |]
- ; deltaX = dx
- }
- let lowerSum f p =
- Array.pairwise p.points
- |> Array.sumBy (fun (l, r) -> min (f l) (f r) * p.deltaX)
- let upperSum f p =
- Array.pairwise p.points
- |> Array.sumBy (fun (l, r) -> max (f l) (f r) * p.deltaX)
- let main =
- // f(x) = x^3 - 3x^2 - x + 3
- let f x = (x ** 3.0) - 3.0 * (x ** 2.0) - x + 3.0
- // [-2, 3]
- let (lo, hi) = -2.0, 3.0
- let n = 10
- let p = parition lo hi n
- printfn "P: %A" p
- printfn "L(f,P) = %f" (lowerSum f p)
- printfn "U(f,P) = %f" (upperSum f p)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement