Advertisement
DestBro

Lucreare Nr.1 Matematica d.

Feb 25th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.13 KB | None | 0 0
  1. const val a = -3.0          //inceputul intervalului
  2. const val b = 3.0           //sfarsitul intervalului
  3. const val n = 24            //numarul de segmente (24[12], 1536[6], 6144[4])
  4. val h = (b - a) / n //marimea pasului
  5.  
  6. /**
  7.  * Interval - reprezentarea unui interval în care se conţine o soluţie
  8.  * intervals - lista de intervale
  9.  *
  10.  * Fiecărei soluţii a funcţiei îi corespunde un interval care va fi salvat in listă.
  11.  * */
  12. class Interval(val a1: Double, val b1: Double)
  13.  
  14. val intervals = mutableListOf<Interval>()
  15.  
  16. fun F(x: Double) = (x * x * x) - (4 * x) - 2
  17.  
  18. /**
  19.  * Recepţionăm toate intervalele pentru fiecare soluţie a funcţiei.
  20.  * */
  21. fun main(args: Array<String>) {
  22.     println("Intervalul cercetat: [$a; $b]")
  23.     println("Numărul de segmente: $n")
  24.     println("Mărimea pasului: $h\n")
  25.  
  26.     var x1 = a
  27.     var x2 = x1 + h
  28.  
  29.     var y1 = F(x1)
  30.     var y2 = F(x2)
  31.  
  32.     var count = 0
  33.     while (x2 <= b) {
  34.  
  35.         if ((y1 * y2) < 0) {
  36.             intervals.add(Interval(x1, x2))
  37.             print("$count) Intervalul: [$x1..$x2], ")
  38.             println("conţine o soluţie deoarece ($y1 * $y2) < 0")
  39.         }
  40.  
  41.         x1 = x2
  42.         x2 += h
  43.  
  44.         y1 = F(x1)
  45.         y2 = F(x2)
  46.  
  47.         ++count
  48.     }
  49.  
  50.     val solutiileFunctiei = intervalsToSolutions(intervals)
  51.  
  52.     println("\nSoluţiile funcţiei sunt: ")
  53.     solutiileFunctiei.forEachIndexed { index, d ->
  54.         println("$index) $d")
  55.     }
  56. }
  57.  
  58. /**
  59.  * Transformă lista de intervalele în listă de soluţii.
  60.  * */
  61. fun intervalsToSolutions(list_i: MutableList<Interval>) = list_i.map { calcSolutionFromInterval(it) }
  62.  
  63. /**
  64.  * Cercetează un interval şi returnează soluţia găsită pe acesta.
  65.  * */
  66. fun calcSolutionFromInterval(i: Interval): Double {
  67.     var a = i.a1
  68.     var b = i.b1
  69.     var c = (a + b) / 2
  70.     val e = 0.0001 //eroare
  71.  
  72.     println("\nCercetarea intervalului: [$a; $b]")
  73.     while (Math.abs(b - a) > e) {
  74.         if (F(a) * F(c) < 0) {
  75.             b = c
  76.         } else {
  77.             a = c
  78.         }
  79.         println("[$a; $b]")
  80.         c = (a + b) / 2
  81.     }
  82.     println("Soluţia găsită: $c")
  83.     return c
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement