! 4.11.f90 ! 2024-10-20 ! $Id: 4.11.f90 1.1 2024/11/02 08:05:31 s Exp $ real(8), dimension(0:100) :: d, f, s real(8) pv, pv2(0:6), x(0:6), s_percent(0:6), xd(0:6) integer :: n integer index(0:6) ! input n = 6 x = [-40, 10, 10, 10, 10, 10, 10] s_percent = [0.0, 5.0, 5.3, 5.6, 5.8, 6.0, 6.1] index = [0, 1, 2, 3, 4, 5, 6] ! calculation s(0:n) = s_percent(0:n) / 100.0 d(0:n) = 1 / (1+ s(0:n)) ** index xd(0:n) = x(0:n) * d(0:n) pv = sum(xd(0:n)) ! output print *, '4.11.f90' print '(a5,10i8)', 'k', index(0:n) print *,'------------------------------------------------------------' print '(a5,10f8.3)', 's', s_percent(0:n) print '(a5,10f8.3)', 'd', d(0:n) print '(a5,10f8.3)', 'x', x(0:n) print '(a5,10f8.3)', 'xd', xd(0:n) print *,'------------------------------------------------------------' print '(a5,f8.3)', 'pv=', pv ! calculation f=0.0 d=0.0 do k=1,n f(k) = (1 + s(k)) ** k / (1 + s(k - 1)) ** (k - 1) - 1 end do d(1:n) = 1 / (1 + f(1:n)) pv2(6) = x(6) pv2(5) = x(5) + d(6) * pv2(6) pv2(4) = x(4) + d(5) * Pv2(5) pv2(3) = x(3) + d(4) * Pv2(4) pv2(2) = x(2) + d(3) * Pv2(3) pv2(1) = x(1) + d(2) * Pv2(2) pv2(0) = x(0) + d(1) * Pv2(1) ! output print *,'' print '(a5,7i8)', 'k', index(0:n) print *,'------------------------------------------------------------' print '(a5,7f8.1)', 's', s_percent(0:n) print '(a5,7f8.1)', 'f', f(0:n)*100 print '(a5,7f8.3)', 'd', d(0:n) print '(a5,7f8.3)', 'pv2', pv2(0:n) print *,'------------------------------------------------------------' end ! eof