- 95 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 01:35:39 ]
- >>94
PROGRAM vip IMPLICIT NONE INTEGER, PARAMETER :: n = 5 REAL, PARAMETER :: x0(n) = (/0.1 , 0.2 , 0.3 , 0.4 , 0.5 /), & y0(n) = (/1.228, 1.005, 0.823, 0.674, 0.552/) REAL :: y(n), t(n, 2), z(2, 2), zinv(2, 2), v(2) INTEGER :: i y = LOG(y0) t(:, 1) = 1.0 t(:, 2) = x0 z = MATMUL(TRANSPOSE(t), t) v = MATMUL(TRANSPOSE(t), y) zinv = ainverse(z) v = MATMUL(zinv, v) WRITE(*, *) ' least square fit a=', EXP(v(1)), ' b=', v(2) STOP CONTAINS FUNCTION ainverse(x) IMPLICIT NONE REAL, INTENT(IN) :: x(2, 2) REAL :: ainverse(2, 2) REAL :: determinant determinant = x(1, 1) * x(2, 2) - x(1, 2) * x(2, 1) IF (ABS(determinant) < 1.0e-7) STOP ' singular matrix ' ainverse(1, 1) = x(2, 2) / determinant ainverse(2, 2) = x(1, 1) / determinant ainverse(1, 2) = -x(1, 2) / determinant ainverse(2, 1) = -x(2, 1) / determinant RETURN END FUNCTION ainverse END PROGRAM vip
|

|