Advertisement
DestBro

Lucreare Nr.3 Matematica d.

Feb 25th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.29 KB | None | 0 0
  1. package LL3
  2.  
  3. class Interval(val a1: Double, val b1: Double)
  4.  
  5. val intervals = mutableListOf<Interval>()
  6.  
  7. fun F(x: Double) = (x * x * x) - (4 * x) - 2
  8.  
  9. fun Fd(x: Double) = 3 * x * x - 4
  10.  
  11. fun Fdd(x: Double) = 6 * x
  12.  
  13. fun main(args: Array<String>) {
  14.     intervals.add(Interval(-1.67578125, -1.671875))
  15.     intervals.add(Interval(-0.54296875, -0.5390625))
  16.     intervals.add(Interval(2.2109375, 2.21484375))
  17.  
  18.     val solutiileFunctiei = intervalsToSolutions(intervals)
  19.  
  20.     println("\nSoluţiile funcţiei sunt: ")
  21.     solutiileFunctiei.forEachIndexed { index, d ->
  22.         println("$index) $d")
  23.     }
  24. }
  25.  
  26. /**
  27.  * Transformă lista de intervalele în listă de soluţii.
  28.  * */
  29. fun intervalsToSolutions(list_i: MutableList<Interval>) = list_i.map { calcSolutionFromInterval(it) }
  30.  
  31. /**
  32.  * Cercetează un interval şi returnează soluţia găsită pe acesta.
  33.  * */
  34. fun calcSolutionFromInterval(i: Interval): Double {
  35.     val a = i.a1
  36.     val b = i.b1
  37.     val e = 0.0001
  38.  
  39.     var t = if (F(a) * Fdd(a) > 0) a else b
  40.     var c = if (F(a) * Fdd(a) > 0) b else a
  41.  
  42.     while (Math.abs(t - c) > (2 * e)) {
  43.         t -= (F(t) / Fd(t))
  44.         c = (c * F(t) - t * F(c)) / (F(t) - F(c))
  45.     }
  46.  
  47.     val x = (c + t) / 2
  48.     print("x = $x    ")
  49.     println("f($x) = ${F(x)}")
  50.     return x
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement