Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const val a = -3.0 //inceputul intervalului
- const val b = 3.0 //sfarsitul intervalului
- const val n = 24 //numarul de segmente (24[12], 1536[6], 6144[4])
- val h = (b - a) / n //marimea pasului
- /**
- * Interval - reprezentarea unui interval în care se conţine o soluţie
- * intervals - lista de intervale
- *
- * Fiecărei soluţii a funcţiei îi corespunde un interval care va fi salvat in listă.
- * */
- class Interval(val a1: Double, val b1: Double)
- val intervals = mutableListOf<Interval>()
- fun F(x: Double) = (x * x * x) - (4 * x) - 2
- /**
- * Recepţionăm toate intervalele pentru fiecare soluţie a funcţiei.
- * */
- fun main(args: Array<String>) {
- println("Intervalul cercetat: [$a; $b]")
- println("Numărul de segmente: $n")
- println("Mărimea pasului: $h\n")
- var x1 = a
- var x2 = x1 + h
- var y1 = F(x1)
- var y2 = F(x2)
- var count = 0
- while (x2 <= b) {
- if ((y1 * y2) < 0) {
- intervals.add(Interval(x1, x2))
- print("$count) Intervalul: [$x1..$x2], ")
- println("conţine o soluţie deoarece ($y1 * $y2) < 0")
- }
- x1 = x2
- x2 += h
- y1 = F(x1)
- y2 = F(x2)
- ++count
- }
- val solutiileFunctiei = intervalsToSolutions(intervals)
- println("\nSoluţiile funcţiei sunt: ")
- solutiileFunctiei.forEachIndexed { index, d ->
- println("$index) $d")
- }
- }
- /**
- * Transformă lista de intervalele în listă de soluţii.
- * */
- fun intervalsToSolutions(list_i: MutableList<Interval>) = list_i.map { calcSolutionFromInterval(it) }
- /**
- * Cercetează un interval şi returnează soluţia găsită pe acesta.
- * */
- fun calcSolutionFromInterval(i: Interval): Double {
- var a = i.a1
- var b = i.b1
- var c = (a + b) / 2
- val e = 0.0001 //eroare
- println("\nCercetarea intervalului: [$a; $b]")
- while (Math.abs(b - a) > e) {
- if (F(a) * F(c) < 0) {
- b = c
- } else {
- a = c
- }
- println("[$a; $b]")
- c = (a + b) / 2
- }
- println("Soluţia găsită: $c")
- return c
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement