Advertisement
karolg987

Untitled

Jan 15th, 2020
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.09 KB | None | 0 0
  1. import util.control.Breaks._
  2. import scala.math._
  3.  
  4. object Main extends App{
  5.  
  6.   def f(x:Double): Double = {
  7.     sin(x)
  8.   }
  9.  
  10.   def df(x0:Double):Double = {
  11.     var res:Double = 0
  12.     for(k<-0 until 3){
  13.       res+=res
  14.       val fx = f(x(k))
  15.       for(j<-0 until 3){
  16.         if(j!=k)
  17.           res+=fx*(x(j)-x0)/(x(j)-x(k))
  18.       }
  19.     }
  20.     res
  21.   }
  22.  
  23.   var a:Double = -3
  24.   var b:Double = 0.5
  25.   var c:Double = (a+b)/2
  26.   val x:Array[Double] = Array(a,c,b)
  27.   var i =0
  28.   var d:Double = df(i)
  29.   breakable {
  30.     while (b - a > 0.01) {
  31.       d = df(i)
  32.       if (a < d && d < c) {
  33.         if (f(d) < f(c)) {
  34.           b = c
  35.           c = d
  36.         }
  37.         else {
  38.           a = d
  39.         }
  40.       }
  41.       else {
  42.         if (c < d && d < b) {
  43.           if (f(d) < f(c)) {
  44.             a = c
  45.             c = d
  46.           }
  47.           else {
  48.             b = d
  49.           }
  50.         }
  51.         else {
  52.           break
  53.         }
  54.       }
  55.       i += 1
  56.     }
  57.   }
  58.   println("x: "+c)
  59.   println("y: "+d)
  60.  
  61. }
  62.  
  63. --------------------
  64.  
  65. x: -1.8252192661843243
  66. y: -0.9304430626040355
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement