Fortran Fortran: Solving System of Equations with Tridiagonal Matrix

  • Thread starter Thread starter just physics
  • Start date Start date
  • Tags Tags
    Fortran
Click For Summary
The discussion focuses on writing a Fortran code to solve a system of equations in tridiagonal matrix form. The user seeks assistance in formatting the output to display the equations correctly. The proposed solution involves using nested do-loops to iterate through the coefficients and variables, utilizing specific format specifications to control the display of signs and variable names. The inner loop constructs the left-hand side of the equation, while the outer loop adds the equal sign and the corresponding constant from the right-hand side. A sample output illustrates the desired format, showing how to represent the equations clearly. Adjustments to format specifications may be necessary based on the size and magnitude of the coefficients.
just physics
Messages
4
Reaction score
0
hi I am 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:
r1X1+r2X2=b1
r1X1+r2X2+r3X3=b2
i can't do this step !
 
Technology news on Phys.org
Something like this may do the trick:

Code:
 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:
 +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
 
thanks a lot u r the best :)
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

  • · Replies 2 ·
Replies
2
Views
5K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 22 ·
Replies
22
Views
5K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 18 ·
Replies
18
Views
6K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 1 ·
Replies
1
Views
8K