کد فرترن سابروتین الگوریتم توماس

reymoh.blogfa.com|کد فرترن سابروتین الگوریتم توماس|کد فرترن روش توماس|کد فرترن حل ماتریس سه قطری توماس|کد فرترن سابروتین حل ماتریس سه قطری|کد فرترن ماتریس سه قطری|الگوریتم توماس به زبان فرترن|الگوریم توماس در فرترن|کد فرترن روش الگوریتم توماس|ماتریس سه قطری|روش الگوریتم توماس|کد فرترن روش روش الگوریتم توماس|ماتریس سه قطری توماس|محاسبات عددی|reymoh.blogfa.com

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

الگوریتم توماس برای حل دستگاه معادلات سه قطری استفاده می شود. دستگاه معادلات سه قطری را به روش های مختلف از جمله روش کرامر و روش حذفی گوس و ... میتوان حل کرد. اما سریع ترین روش روش برای دستگاه معادلات سه قطری، روش توماس است که مخصوص این نوع دستگاه معادله می باشد.

این کد به عنوان سابروتین استفاده خواهد شد و نمی توان از آن در بدنه اصلی کد استفاده کرد. برای فراخوانی این سابروتین در بدنه اصلی کد نیز از دستور زیر استفاده خواهد شد :

Call toomas(n,A,R,X)

مقادیر ورودی این سابروتین n و A و R هستند و خروجی آن بردار X می باشد. n یک عدد صحیح و نشان دهنده تعداد معادلات(تعداد درایه های ماتریس ضرایب n در n) و ماتریس A  که ماتریس ضرایب می باشد یک ماتریس n در n است و بردار R، بردار معلوم (دست راست معادلات) که یک بردار با n درایه است. در نهایت خروجی X یک بردار با n درایه خواهد بود.

توجه شود این کد برای دقت معمولی ( Real(4) ) نوشته شده است. اگر در بدنه اصلی کد از دقت دوبرابر ( Real(8) ) استفاده می شود، باید عبارت Real در خط چهارم این کد به صورت دقت دوبرابر یعنی Real(8) نوشته شود.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Subroutine toomas(n,A,R,X)
Implicit None
INTEGER::n,i,j,k,l
Real::landa,A(n,n),R(n),X(n)

DO j = 1 , n-1

 landa=-A(j+1,j)/A(j,j)
 A(j+1,j)=0
 A(j+1,j+1)=(A(j,j+1)*landa)+A(j+1,j+1)
 R(j+1)=(landa*R(j))+R(j+1)

END DO

X(n)=R(n)/A(n,n)

DO k = n-1  , 1 , -1

 X(k)=(R(k)-(A(k,k+1)*X(k+1)))/A(k,k)

END DO

END Subroutine

کد فرترن روش تنصیف

reymoh.blogfa.com|کد فرترن روش تنصیف|روش تنصیف به زبان فرترن|روش تنصیف در فرترن|کد روش تنصیف در فرترن|کد روش تنصیف به زبان فرترن|روش نصف کردن|کد فرترن روش نصف کردن|bisection method fortran|محاسبات عددی|reymoh.blogfa.com

 

------------------------------------------------------------------------------------------------------------------------------------------

توجه.لطفا بخوانید!!

کد فرترن برنامه روش تنصیف...من این برنامه رو برای مثال برای تابع (y=(x)^2-(e^x نوشتم.در این کد ابتدا بازه [a,b] رو میگیره و بررسی میکنه که در این بازه جواب وجود داره یا نه.اگر نباشه پیغام میده که جوابی در این بازه وجود نداره و بازه رو دوباره ازتون میگیره.اگر وجود داشته باشه نرخ همگرایی رو ازتون میگیره و شروع به محاسبه با توجه به نرخ همگرایی میکنه.وقتی که شرط همگرایی برقرار بشه جواب رو همراه با تعداد دفعات تکرار نشون میده.

--------------------------------------------------------------------------------------------------------------------------------------

program bisection
implicit none
INTEGER::k
REAL::x,xo,a,b,e,e1,a1,x1,t1,t2
!y=x**2-e**x

کد کامل روش تنصیف در ادامه مطلب

ادامه نوشته

کد فرترن تعویض درایه های ماتریس نسبت به قطر اصلی

reymoh.blogfa.com|کد فرترن عوض کردن درایه های ماتریس نسبت به قطر اصلی|کد فرترن تعویض عناصر ماتریس نسبت به قطر اصلی|کد فرترن عوض کردن عناصر ماتریس نسبت به قطر اصلی|کد فرترن عوض کردن اعداد ماتریس نسبت به قطر اصلی|کد فرترن تعویض اعداد ماتریس نسبت به قطر اصلی|ماتریس n در n | ماتریس مربعی | reymoh.blogfa.com

 

-------------------------------------------------------------------------------------------------------------------------------------------

کد فرترن برنامه ای که درایه های یک ماتریس مربعی n در n را نسبت به قطر اصلی عوض میکنه.این برنامه اول n رو میگیره و ماتریس n در n رو تشکیل میده سپس ماتریس رو خط به خط از بالا به پایین از کاربر میگیره و در آخر درایه هارو نسبت به قطر اصلی عوض میکنه و نمایش میده.

program matris
implicit none
INTEGER::b,i,j,k,n,t
INTEGER,ALLOCATABLE::a(:,:)
PRINT*,"baraye matris n*n lotfan n ra vared konid : "
READ*,n
ALLOCATE (a(n,n))
do t=1,n
PRINT*,"khate",t,"ra vared konid : "
READ*,a(t,:)
end do
PRINT*
do i=1,n-1
do j=i+1,n
b=a(i,j)
a(i,j)=a(j,i)
a(j,i)=b
end do
end do

do k=1,n
PRINT*,a(k,:)
end do
PRINT*
end

کد فرترن ضرایب دوجمله ای نیوتن

کد فرترن ضریب دو جمله ای|کد فرترن ضریب دوجمله ای|کد فرترن ضرایب دو جمله ای|کد فرترن ضرایب دوجمله ای نیوتن|ضریب دوجمله ای نیوتن|مثلث خیام|مثلث خیام پاسکال|مثلث خیام به زبان فرترن|ضرایب دو جمله ای به زبان فرترن

--------------------------------------------------------------------------------------------------------------------------------------------

کد فرترن برنامه ای که عدد n رو میگیره و ضرایب مربوط به بسط دوجمله ای رو برای اون توان نشون میره.

program khayam
implicit none
INTEGER::n,i,t1,t2,t3,j1,j2,j3
INTEGER,ALLOCATABLE::a(:)
PRINT*," n ra vared konid : "
READ*,n
PRINT*
ALLOCATE (a(n+1))
t1=1
do j1=1,n
t1=t1*j1
end do
do i=0,n
t3=1
t2=1
do j2=1,i
t2=t2*j2
end do
do j3=1,n-i
t3=t3*j3
end do
a(i+1)=t1/(t2*t3)
end do
PRINT*,"zarayeb baraye tavan",n," :     ",a
PRINT*
end

کد فرترن اعداد اول بین دو عدد

کد فرترن برنامه ای که دو عدد m وn رو از کاربر میگیره و اعداد اول بین این دو عدد ذو نمایش میده.دقت کنید که فقط اعداد اول بین این دو عدد رو نشون میده و خود این اعداد در صورتی که اول باشند رو نشون نمیده,فقط بین شون.اگر میخواید خود این اعداد رو هم در صورت اول بودن نشون بده در حلقه do اولی به جای  i=m+1,n-1  بنویسید:   i=m,n

-----------------------------------------------------------------------------------------------------------------------------------------

program prime
implicit none
INTEGER::n,i,k,j,m
READ*,m,n
PRINT*
do i=m+1,n-1
k=0
do j=1,i
if (MOD(i,j)==0) then
k=k+1
end if
end do
if (k==2) then
PRINT*,i
end if
end do
end   

 

کد فرترن اعداد اول 1 تا n

کد فرترن برنامه ای که عدد n رو میگیره و اعداد اول 1 تا n رو نمایش میده.همون طور که در پست های قبلی گفتم یکی از راه های تشخیص اول بودن یک عدد اینه که بررسی کنیم تعداد مقسوم علیه هاش چند تاس؟اگر 2 تا باشه اون عدد,عدد اوله.منم هم از همین روش استفاده کردم و همه اعداد از 1 تا n رو بررسی کردم.

program prime
implicit none
INTEGER::n,i,k,j
READ*,n
PRINT*
do i=1,n
k=0
do j=1,i
if (MOD(i,j)==0) then
k=k+1
end if
end do
if (k==2) then
PRINT*,i
end if
end do
end

کد فرترن تعداد ارقام یک عدد

کد فرترن برنامه ای که عدد n رو میگیره و تعداد ارقام اون عدد رو مشخص میکنه.یکی از راه های تشخیص تعداد رقم های یم عدد اینه که حساب کنیم ببینیم اون عدد از کدوم توان عدد 10 کمتره.مثلا عدد 999 رو بررسی میکنیم:

999<(10**3)

عدد 999 از توان 3 عدد 10 که 1000 میشه کوکتره.با همین روش میشه تعداد ارقام رو متوجه شد

--------------------------------------------------------------------------------------------------------------------------------------------

program ragham
implicit none
INTEGER::n,i
READ*,n
PRINT*
i=1
do
if (n<(10**i)) then
exit
else
i=i+1
end if
end do
PRINT*,i
end

کد فرترن مجموع معکوس فاکتوریل n عدد

کد فرترن برنامه ای که عدد n رو میگیره و مجموع معکوس فاکتوریل های اعداد 1 تا عدد n رو محاسبه و چاپ میکنه.مثلا اگر

n=3 کد سری زیر رو محاسبه و چاپ میکنه:                                                                            

s=(1/1!)+(1/2!)+(1/3!) =1.666666

-----------------------------------------------------------------------------------------------------------------------------------------

program fuct
implicit none
INTEGER::n,t,i
REAL::s
READ*,n
t=1
s=0
do i=1,n
t=t*i
s=s+(1/REAL(t))
end do
PRINT*,s
end

کد فرترن مجموع فاکتوریل n عدد

کد فرترن برنامه ای که عدد n رو میگیره و مجموع فاکتوریل های اعداد 1 تا عدد n رو محاسبه و چاپ میکنه.مثلا اگر

n=3 کد سری زیر رو محاسبه و چاپ میکنه:                                                                            

s=1!+2!+3! =9

-----------------------------------------------------------------------------------------------------------------------------------

program fuct
implicit none
INTEGER::n,s,t,i
READ*,n
t=1
s=0
do i=1,n
t=t*i
s=s+t
end do
PRINT*,s
end

کد فرترن سری فیبوناچی

کد فرترن برنامه ای که که عدد n رو میگیره و تا جمله n ام سری فیبوناچی رو به صورت سطری چاپ میکنه.در پست قبل همین سری به صورت ستونی چاپ میشه.

program fibo
implicit none
INTEGER::f1,f2,f3,i,n
INTEGER,allocatable::a(:)
READ*,n
ALLOCATE (a(n))
PRINT*
f1=1
f2=1
a(1)=f1
a(2)=f2
do i=3,n
f3=f2+f1
a(i)=f3
f1=f2
f2=f3
end do
PRINT*,a
end

کد فرترن سری فیبوناچی

کد فرترن برنامه ای که عدد n رو میگیره و تا جمله n ام سری فیبوناچی رو به صورت زیر هم دیگه چاپ میکنه.در پست بعد کد برنامه ایه مه سری فیبوناپی رو در یک سطر چاپ میکنه.

program fibo
implicit none
INTEGER::f1,f2,f3,i,n
READ*,n
PRINT*
f1=1
f2=1
PRINT*,f1
PRINT*,f2
do i=3,n
f3=f2+f1
PRINT*,f3
f1=f2
f2=f3
end do
end

کد فرترن نمایش معکوس یک عدد

کد فرترن برنامه ای که ای عددی رو میگیره و اون رو به صورت برعکس نمایش میده

مثلا 12345 رو به صورت 54321 نشون میده

 

program makoos
implicit none
INTEGER::n,b,p,i,s,k,j
INTEGER,ALLOCATABLE::a(:)
READ*,n
p=1
do
if (n<10**p) then
exit
else
p=p+1
end if
end do
ALLOCATE (a(p))
do i=1,p
a(i)=MOD(n,10)
n=INT(n/10)
end do
s=0
k=p
do j=0,p-1
t=a(k)*(10**j)
s=s+t
k=k-1
end do
PRINT*,s
end program

کد فرترن مقسوم علیه های مشترک دو عدد

کد فرترن برنامه ای که دو عدد رو میگیره و مقسوم علیه های مشترک رو نشون میده

program mas
implicit none
INTEGER::n,s,i,a,m
READ*,m,n
if (n>m) then
a=m
m=n
n=a
end if
do i=1,n
if (MOD(n,i)==0) then
if (MOD(m,i)==0) then
PRINT*,i
end if
end if
end do
end