Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Fortran question

  1. May 15, 2012 #1
    hi im just start learning fortran and i have aproblem with my homework:
    we have to write a code to solve system of equations by writing them in matricies (tridiagonal matrix) form
    the first step is to enter the coefficients of the variables (r1,r2,r3,...) and then the answers to the equations (b1,b2,b3,...) by using array , ok i can write it but the problem is how can i print the equations in the form:
    i cant do this step !!!!
  2. jcsd
  3. May 15, 2012 #2
    Something like this may do the trick:

    Code (Text):

     do i = 1, n
       do j = 1, n
         write(*,"(sp,f5.1,'X',ss,i1)", advance='no') r(i,j), j
       end do
       write(*,"(' = ' , f5.2)") b(i)
     end do
    square system, n x n
    r coefficients stored in a 2-dimensional matrix and the
    right-hand-side b stored in a vector
    nested do-loops
    inner loop writes one coefficient and variable at a time, without carriage return
    inner loop writes left-hand-side of equal sign
    'sp' format spec indicates to explicitly show the positive or negative sign of the r coefficient
    'ss' format spec turns off the previous 'sp'...we know j is positive, but don't want sign there...we want to see, say, +3.4X2, not +3.4X+2
    after left-hand-side has been written, we go out to the outer loop and write ' =' sign and the corresponding b constant...we can now let the write statement advance a line as usual.

    ...o.k., so I got a little fancy...

    depending on the size of your system of equations and the magnitude of your numbers, you may need to adjust the format specs, of course...

    Here is a sample output from the code above:

    Code (Text):

     +1.0X1 -2.0X2 +3.0X3 =  2.00
     -4.0X1 +5.0X2 +6.0X3 = -3.00
     +7.0X1 -8.0X2 +9.0X3 =  4.00
    from there, I hope you get the gist of it and turn it into whatever you need/want
  4. May 15, 2012 #3
    thanks alot u r the best :)
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook