Advertisement
Guest User

Untitled

a guest
Oct 12th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.75 KB | None | 0 0
  1. type Partition =
  2.   { points : double []
  3.   ; deltaX : double
  4.   }
  5.  
  6.  
  7.  
  8. let parition lo hi n =
  9.   let dx = (hi - lo) / double n
  10.   { points = [|for i = 0 to n do
  11.                  yield lo + dx * double i
  12.              |]
  13.   ; deltaX = dx
  14.   }
  15.  
  16.  
  17.  
  18. let lowerSum f p =
  19.   Array.pairwise p.points
  20.   |> Array.sumBy (fun (l, r) -> min (f l) (f r) * p.deltaX)
  21.  
  22.  
  23.  
  24. let upperSum f p =
  25.   Array.pairwise p.points
  26.   |> Array.sumBy (fun (l, r) -> max (f l) (f r) * p.deltaX)
  27.  
  28.  
  29.  
  30. let main =
  31.   // f(x) = x^3 - 3x^2 - x + 3
  32.   let f x = (x ** 3.0) - 3.0 * (x ** 2.0) - x + 3.0
  33.   // [-2, 3]
  34.   let (lo, hi) = -2.0, 3.0
  35.  
  36.   let n = 10
  37.  
  38.   let p = parition lo hi n
  39.  
  40.   printfn "P: %A" p
  41.   printfn "L(f,P) = %f" (lowerSum f p)
  42.   printfn "U(f,P) = %f" (upperSum f p)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement