ROOT FINDING DEMONSTRATION
CASE (2) WRITE(*,*) ’’ WRITE(*,*) ’Using the Newton-Raphson Method’ Ma = .9*M !Initial guess point DO Cp_test = (2.0/(gamma*M**2)) *& (( (1. + ((gamma - 1.)/2.)*(M**2.)) / & (1. + ((gamma - 1.)/2.)*(Ma**2.)) ) & ** (gamma/(gamma - 1.)) - 1.) - Cp !Test tolerance tol = ABS(Cp_test) nmax = nmax + 1 IF (tol <= .001) THEN !Within tolerance of .1% EXIT ELSE IF (nmax >= 500) THEN !Stop inifinite loop WRITE(*,*) ’Maximum counter limit reached (500).’ STOP ELSE !Obtain local slope of line Ma = Ma + .00001 Cp_test2 = (2.0/(gamma*M**2)) *& (( (1. + ((gamma - 1.)/2.)*(M**2.)) / & (1. + ((gamma - 1.)/2.)*(Ma**2.)) ) & ** (gamma/(gamma - 1.)) - 1.) - Cp slope = (Cp_test2 - Cp_test) / 0.00001 !Apply formula M(i+1) = M - f(M) / f’(M) Ma = (Ma - 0.000001) - (Cp_test) / slope END IF END DO END SELECT !Print out final value and info about calculations WRITE(*,*) ’Ma =’, Ma !WRITE(*,*) ’Iterations:’, nmax !WRITE(*,*) ’Percent error:’, (tol*100.), ’%’ END PROGRAM rootFinding
← Previous Page
← Previous Page