Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //https://ro.wikipedia.org/wiki/Metoda_coardei
- package LL2
- class Interval(val a1: Double, val b1: Double)
- val intervals = mutableListOf<Interval>()
- fun F(x: Double) = (x * x * x) - (4 * x) - 2
- fun main(args: Array<String>) {
- intervals.add(Interval(-1.67578125, -1.671875))
- intervals.add(Interval(-0.54296875, -0.5390625))
- intervals.add(Interval(2.2109375, 2.21484375))
- 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(inter: Interval): Double {
- var a: Double = inter.a1
- var b: Double = inter.b1
- var i = 0
- var x0 = a
- var x1 = b
- var x = x0
- var y = F(x)
- val eps = 0.0001
- val iter = 200
- if (F(x0) * F(x1) < 0) {
- while ((i <= iter) && ((y < -eps) || (y > eps))) {
- x = x0 - F(x0) * (x1 - x0) / (F(x1) - F(x0))
- y = F(x)
- if (F(x0) * y < 0) x1 = x else x0 = x
- print("x = $x ")
- println("f($x) = ${F(x)}")
- i++
- }
- if (i > iter) println("Problema nu se poate rezolva in nr.maxim de iteratii")
- } else println("Interval invalid")
- return x
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement