rabbitnewline.weebly.com
Open in
urlscan Pro
74.115.51.8
Public Scan
Submitted URL: http://rabbitnewline.weebly.com/blog/program-for-bisection-method-in-fortran-code
Effective URL: https://rabbitnewline.weebly.com/blog/program-for-bisection-method-in-fortran-code
Submission: On October 24 via api from US — Scanned from US
Effective URL: https://rabbitnewline.weebly.com/blog/program-for-bisection-method-in-fortran-code
Submission: On October 24 via api from US — Scanned from US
Form analysis
0 forms found in the DOMText Content
rabbitnewline * Blog PROGRAM FOR BISECTION METHOD IN FORTRAN CODE 1/6/2019 0 Comments X = lhsdesign(.,'smooth','off') produces points at the midpoints of the above intervals: 0.5/n, 1.5/n., 1-0.5/n. For each column of X, the n values are randomly distributed with one from each interval (0,1/n), (1/n,2/n)., (1-1/n,1), and they are randomly permuted. Latin hypercube design. The default is 'on'. Contents • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • [ ] with Ada. Text_Io; use Ada. Text_Io; procedure Roots_Of_Function is package Real_Io is new Ada. Translation of: print_roots = (f, begin, end, step ) -> Umdh. # Print approximate roots of f between x=begin and x=end, # using sign changes as an indicator that a root has been # encountered. X = begin y = f (x ) last_y = y cross_x_axis = -> (last_y 0 ) or (last_y > 0 and y # Smaller steps produce more accurate/precise results in general, # but for many functions we'll never get exact roots, either due # to imperfect binary representation or irrational roots. Step = 1 / 256 f1 = (x ) -> x *x *x - 3 *x *x + 2 *x print_roots f1, - 1, 5, step f2 = (x ) -> x *x - 4 *x + 3 print_roots f2, - 1, 5, step f3 = (x ) -> x - 1.5 print_roots f3, 0, 4, step f4 = (x ) -> x *x - 2 print_roots f4, - 2, 2, step output > coffee roots.coffee ----- Root found at 0 Root found at 1 Root found at 2 ----- Root found at 1 Root found at 3 ----- Root found at 1.5 ----- Root found near -1.4140625 Root found near 1.41796875 [ ]. 9.2 Secant Method, False Position Method, and Ridders’ Method 347 Sample page from NUMERICAL RECIPES IN FORTRAN 77. ROOTS OF A REAL FUNCTION IN FORTRAN 90. Program to demonstrate Secant method Program to demonstrate the. Output: Root found at 8.6218e-16 Root found at 1.000016 Root found at 1.998914 [ ]% Implemented by Arjun Sunel - module (roots ). Kudajadriyil kudachooduma karaoke songs mp3. - export ( [main / 0 ] ). Main ( ) -> F = fun ( X ) -> X * X * X - 3 * X * X + 2 * X end, Step = 0.001,% Using smaller steps will provide more accurate results Start = - 1, Stop = 3, Sign = F ( Start ) > 0, X = Start, while ( X, Step, Start, Stop, Sign, F ). While ( X, Step, Start, Stop, Sign, F ) -> Value = F ( X ), if Value == 0 ->% We hit a root: format ( 'Root found at ~p~n', [ X ] ), while ( X + Step, Step, Start, Stop, Value > 0, F ); ( Value% We passed a root: format ( 'Root found near ~p~n', [ X ] ), while ( X + Step, Step, Start, Stop, Value > 0, F ); X > Stop ->: format ( ' ); true -> while ( X + Step, Step, Start, Stop, Value > 0, F ) end. Output: Root found near 8.6218e-16 Root found near 1.000016 Root found near 2.998915 ok [ ] PROGRAM ROOTS_FUNCTION!VAR E,X,STP,VALUE,S%,I%,LIMIT%,X1,X2,D FUNCTION F(X) F=X*X*X-3*X*X+2*X END FUNCTION BEGIN X=-1 STP=1.0E-6 E=1.0E-9 S%=(F(X)>0) PRINT('VERSION 1: SIMPLY STEPPING X') WHILE XLIMIT% THEN PRINT('ERROR: FUNCTION NOT CONVERGING') EXIT END IF D=(X2-X1)/(F(X2)-F(X1))*F(X2) IF ABS(D). Output: Root (to 12DP) Max. Error 0.08 1e-06 1.16 1e-06 2.34 1e-06 Note that the roots found are all near misses because fractional numbers that seem nice and 'round' in decimal (such as 10^-6) often have some rounding error when represented in binary. To increase the chances of finding exact integer roots, try using an integer start value with a step value that is a power of two. -- Main procedure print ( 'Root (to 12DP) tMax. Error n' ) for _, r in pairs (root (f, - 1, 3, 2 ^- 10 ) ) do print ( string.format ( '%0.12f', r.val ), r.err ) end. Output: findRoots(#f, -1, 3, 0.0001) Root found at 0 Root found at 1 Root found at 2 findRoots(#f, -1.000001, 3, 0.0001) Root near 9.0713e-005 Root near 1.000099 Root near 2.000099 [ ] If the equation is a polynomial, we can put the coefficients in a vector and use roots: a = [ 1, - 3, 2, 0 ]; r = (a );% let's print it for = 1: 3 n = (a, r ( ) ); ( 'x%d =%f (%f',, r ( ), n ); if (n!= 0.0 ) ( ' not' ); endif ( ' exact) n' ); endfor Otherwise we can program our (simple) method. Translation of: Procedure.d f (x.d ) ProcedureReturn x *x *x - 3 *x *x + 2 *x EndProcedure Procedure main ( ) OpenConsole ( ) Define.d StepSize = 0.001 Define.d Start =- 1, stop = 3 Define.d value =f (start ), x =start Define.i oldsign =Sign (value ) If value = 0 PrintN ( 'Root found at ' + StrF (start ) ) EndIf While x oldsign PrintN ( 'Root found near ' + StrF (x ) ) ElseIf value = 0 PrintN ( 'Root found at ' + StrF (x ) ) EndIf oldsign =Sign (value ) x +StepSize Wend EndProcedure main ( ) [ ]. 0 Comments LEAVE A REPLY. AUTHOR Write something about yourself. No need to be fancy, just an overview. ARCHIVES January 2019 CATEGORIES All RSS Feed * Blog Powered by Create your own unique website with customizable templates. Get Started