|کد فرترن روش تکرار ژاکوبی|کد فرترن روش ژاکوبی|روش ژاکوبی در فرترن|روش ژاکوبی به زبان فرترن|روش تکرار ژاکوبی به زبان فرترن|روش تکرار ژاکوبی در فرترن|حل دستگاه معادلات به روش ژاکوبی|حل دستگاه معادلات به روش تکرار ژاکوبی|jacobi method|کد رایگان روش ژاکوبی|محاسبات عددی|
-------------------------------------------------------------------------------------------------------------------------------------------
توجه.لطفا بخوانید!!
کد فرترن روش ژاکوبی...کدی که نوشتم ابتدا n که تعداد معادلاتی هستش که میخواید وارد کنید رو میگیره و ماتریس n در n+1رو تشکییل میده.سپس مقادیر ماتریس رو سطر به سطر میگیره.سپس نرخ همگرایی رو میگره و با توجه به نرخ همگرایی شروع به محاسبه به روش ژاکوبی میکنه.خطا ها هم خطای نسبی هستش و نرخ همگرایی نسبت به خطای نسبی مرتبه بینهایت سنجیده میشه.در آخر هم جواب هارو به همراه تعداد دفعات تکرار نمایش میده.
----------------------------------------------------------------------------------------------------------------------------------------
PROGRAM jacobi
IMPLICIT NONE
INTEGER::i,j,i1,i2,j1,n,j2,k,k1,t1
REAL::s,e
REAL,ALLOCATABLE::a(:,:),x(:),y(:),t(:)
PRINT*
PRINT*
PRINT*," 1 2 . . . n n+1"
PRINT*," _ - - - - - _ "
PRINT*," 1 | X(1)a(1,1) + X(2)a(1,2) + ... + X(n)a(1,n) = a(1,n+1) |"
PRINT*," 2 | X(1)a(2,1) + X(2)a(2,2) + ... + X(n)a(2,n) = a(2,n+1) |"
PRINT*," . | . . . . . . . . . . . |"
PRINT*," . | . . . . . . . . . . . |"
PRINT*," . | . . . . . . . . . . . |"
PRINT*," . | . . . . . . . . . . . |"
PRINT*," n |_ X(1)a(n,1) + X(2)a(n,2) + ... + X(n)a(n,n) = a(n,n+1)_|"
PRINT*," n*n+1"
PRINT*
PRINT*,"baraye matris n*n+1 bala lotfan n (tedad moadalat) ra vared konid :"
READ*,n
ALLOCATE (a(n,n+1),x(n),y(n),t(n))
DO i1=1,n
PRINT*,"khate",i1,"ra vared konid ( az a(",i1,", 1) ta a(",i1,",",n+1,")) : "
READ*,a(i1,:)
END DO
PRINT*,"nerkh hamgarayi ra vared konid : "
READ*,e
DO j2=1,n
x(j2)=0
END DO
k=1
DO
DO i=1,n
s=0
DO j=1,n
IF (j.ne.i) THEN
s=s+x(j)*a(i,j)
END IF
END DO
y(i)=(a(i,n+1)-s)/a(i,i)
END DO
DO t1=1,n
t(t1)=(abs(y(t1)-x(t1)))/ABS(y(t1))
END DO
IF ( MAXVAL(t) < e ) THEN
EXIT
ELSE
k=k+1
x(1:n)=y(1:n)
END IF
END DO
PRINT*
PRINT*,"javab ha dar tekrar ",k," ba hadse avaliye X(1:n)=0 ::"
PRINT*
DO k1=1,n
PRINT*,"X(",k1,") = ",x(k1)
END DO
PRINT*
PRINT*
END