Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # usado no artigo do Quora https://n9.cl/8d2x4
- newton-raphson()
- {
- local f d p x args
- . <(printf '%q\n' $@)
- if [[ ! ( $f && $d && $p && $x ) ]]
- then
- args='f=<f(x)> d=<df(x)/dx> p=<#díg> x=<chute inicial>'
- echo Uso: $FUNCNAME $args >&2
- return 1
- fi
- BC_LINE_LENGTH=0 bc -l << EOT
- pr = $p
- x = $x
- scale = pr
- phi = (sqrt(5)+1)/2
- pi = 4*a(1)
- define p(x,y){ return e(l(x)*y) }
- define r(x ){ return x*180/pi }
- define f(x ){ return $f }
- define d(x ){ return $d }
- define a(x ){ if (x>0) return x else return -x }
- print "\nx0 = ", x, "\n"
- n = 0
- diff = 1
- while( diff > 10^-pr )
- {
- scale = pr+2
- x0 = x
- x = x0-f(x0)/d(x0)
- diff = a(x0-x)
- n += 1
- scale = pr
- print "x", n, " = ", x/1, \
- " |x", n, "-x", n-1, "| = ", diff/1, "\n"
- }
- print "\n x = ", x/1, "\n pi = ", pi, \
- "\npi6 = ", f(x)+pi, "\ndif = ", f(x), "\n\n"
- EOT
- }
- 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
- # x0 = -4
- # x1 = -4.56240513234095781898 |x1-x0| = .56240513234095781898
- # x2 = -4.65373961837263842635 |x2-x1| = .09133448603168060736
- # x3 = -4.65580654146557042174 |x3-x2| = .00206692309293199538
- # x4 = -4.65580757005703567658 |x4-x3| = .00000102859146525484
- # x5 = -4.65580757005729023781 |x5-x4| = .00000000000025456123
- # x6 = -4.65580757005729023781 |x6-x5| = 0
- #
- # x = -4.65580757005729023781
- # pi = 3.14159265358979323844
- # pi6 = 3.14159265358979323839
- # dif = -.00000000000000000005
- f='p(phi,x)+p(2,s(r(2)))+p(2,c(r(2)))-7/460'
- x=-4.65580757005729023781
- BC_LINE_LENGTH=0 bc -l <<< "
- define p(x,y) { return e(l(x)*y) }
- define r(x) { return x*180/pi }
- scale=50
- x=$x
- phi=(sqrt(5)+1)/2
- pi=4*a(1)
- $f
- "
- # 3.14159265358979323895386758911237016045350271747023
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement