Advertisement
arkanon

Método recorrente de Newton–Raphson

Dec 20th, 2023 (edited)
670
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.92 KB | Software | 0 0
  1. # usado no artigo do Quora https://n9.cl/8d2x4
  2.  
  3. newton-raphson()
  4. {
  5.  
  6.   local f d p x args
  7.   . <(printf '%q\n' $@)
  8.  
  9.   if [[ ! ( $f && $d && $p && $x ) ]]
  10.   then
  11.     args='f=<f(x)> d=<df(x)/dx> p=<#díg> x=<chute inicial>'
  12.     echo Uso: $FUNCNAME $args >&2
  13.     return 1
  14.   fi
  15.  
  16.   BC_LINE_LENGTH=0 bc -l << EOT
  17.  
  18.     pr    = $p
  19.     x     = $x
  20.     scale = pr
  21.  
  22.     phi = (sqrt(5)+1)/2
  23.     pi  = 4*a(1)
  24.  
  25.     define p(x,y){ return e(l(x)*y) }
  26.     define r(x  ){ return x*180/pi }
  27.     define f(x  ){ return $f }
  28.     define d(x  ){ return $d }
  29.     define a(x  ){ if (x>0) return x else return -x }
  30.  
  31.     print "\nx0 = ", x, "\n"
  32.  
  33.     n    = 0
  34.     diff = 1
  35.     while( diff > 10^-pr )
  36.     {
  37.       scale = pr+2
  38.       x0    = x
  39.       x     = x0-f(x0)/d(x0)
  40.       diff  = a(x0-x)
  41.       n    += 1
  42.       scale = pr
  43.       print "x", n, " = ", x/1, \
  44.             "  |x", n, "-x", n-1, "| = ", diff/1, "\n"
  45.     }
  46.  
  47.     print "\n  x = ", x/1, "\n pi = ", pi, \
  48.           "\npi6 = ", f(x)+pi, "\ndif = ", f(x), "\n\n"
  49.  
  50. EOT
  51.  
  52. }
  53.  
  54. newton-raphson  f='p(phi,x)+p(2,s(r(2)))+p(2,c(r(2)))-7/460-pi'  d='p(phi,x)*l(phi)'  p=20  x=-4
  55. # x0 = -4
  56. # x1 = -4.56240513234095781898  |x1-x0| = .56240513234095781898
  57. # x2 = -4.65373961837263842635  |x2-x1| = .09133448603168060736
  58. # x3 = -4.65580654146557042174  |x3-x2| = .00206692309293199538
  59. # x4 = -4.65580757005703567658  |x4-x3| = .00000102859146525484
  60. # x5 = -4.65580757005729023781  |x5-x4| = .00000000000025456123
  61. # x6 = -4.65580757005729023781  |x6-x5| = 0
  62. #
  63. #   x = -4.65580757005729023781
  64. #  pi = 3.14159265358979323844
  65. # pi6 = 3.14159265358979323839
  66. # dif = -.00000000000000000005
  67.  
  68.  
  69. f='p(phi,x)+p(2,s(r(2)))+p(2,c(r(2)))-7/460'
  70. x=-4.65580757005729023781
  71.  
  72. BC_LINE_LENGTH=0 bc -l <<< "
  73.  define p(x,y) { return e(l(x)*y) }
  74.  define r(x)   { return x*180/pi  }
  75.  scale=50
  76.  x=$x
  77.  phi=(sqrt(5)+1)/2
  78.  pi=4*a(1)
  79.  $f
  80. "
  81. # 3.14159265358979323895386758911237016045350271747023
Tags: math Linux quora BC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement