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

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

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

کد فرترن روش ماتریس معکوس برای حل دستگاه معادلات جبری خطی...ین کد اول تعداد معادلات یا n رو میگیره و ماتریس ضرایب n در n رو تشکیل میده و همچنین دو ماتریس n در 1 رو تشکیل میده که یکی برای مجهولات و دیگری برای معلومات در طرف راست تساوی هستش.بعد خط به خط ماتریس ضرایب و ماتریس معلوم رو میگیره و شروع به محاسبه ماتریس همسازه ها میکنه.اول دترمینان ماتریس ضرایب رو محاسبه میکنه که اگر 0 باشه یک پیام خطا نمایش میده که ماتریس معکوس پذیر نیست.اگر دترمینان 0 نباشه محاسبه کردن رو ادامه میده.برای ماتریس همسازه ها باید با استفاده از کهاد سطر ها و ستون ها مرتب دترمینان محاسبه بشه که واسه این مورد یک سابروتین نوشتم که این کارو میکنه.سپس ترانهاده ماتریس همسازه ها رو بدست میاره و ضرب در دترمینان ماتریس ضرایب میکنه.ماتریس بدست اومده همون معکوس ماتریس ضرایبه.سپس این ماتریس معکوس شده رو در ماتریس معلوم ضرب میکنه که این کار رو هم یک سابروتین انجام میده.جواب های بدست اومده از ضرب این دو ماتریس همون جواب های مجهولات ما هستن و اونا رو نمایش میده.

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

program matrix_inverse_method
implicit none
INTEGER::i2,i,j,k,p,i1,j1,n,j2,i3
REAL::s,detr,deta
REAL,ALLOCATABLE::a(:,:),b(:,:),c(:,:),f(:),x(:,:),t(:,:),g(:,:)

ادامه نوشته

کد فرترن انتگرال به روش ذوزنقه

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

 

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

کد فرترن انتگرال گیری عددی به روش ذوزنقه...این کد اول a و b رو میگیره.a و b به ترتیب کران های پایین و بالای انتگرال هستند یعنی همون بازه ای که میخوایم انتگرال معین رو حساب کنیم.سپس n رو میگیره.n تعداد نقاطی که روی محور x تولید میکنه یعنی از بازه a تا b رو به n قسمت مساوی تقسیم میکنه در نتیجه دلتا x برابر فاصله a تا b تقسیم بر n خواهد شد.سپس مجموع f(i) ها را با هم جمع میکنم که از a به علاوه دلتا x شروع میشه تا b منهای دلتا x با گام های دلتا x. سپس f(a) و f(b) رو هم حساب میکنه و تقسیم بر 2 میکنه و با مجموع f(i) ها که بالا به دست اومد جمع میکنه و مجموع این دو تا رو در دلتا x ضرب میکنه.در آخر هم جواب رو نشون میده.من این روش رو برای تابع مثال f(x) = x - 2^x   نوشتم.

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

program antegral
implicit none
INTEGER::n
REAL::t,i,s,fa,fb,b,a,delx

کد کامل روش ذوزنقه در ادامه مطلب

ادامه نوشته

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

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

 

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

کد فرترن روش تکرار نیوتن رافسون...من این کد رو برای تابع فرضی  F(x) = x - cos(x)  نوشتم. کدی که نوشتم اول نرخ همگرایی رو میگیره و با توجه به اون شروع به محاسبه میکنه.در آخر جواب رو همراه با تعداد تکرارش نشون میده

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

program nioton
implicit none
INTEGER::k,i
REAL::x,fpx,fx,c,e,y

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

ادامه نوشته

کد فرترن روش نابجایی

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

 

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

کد فرترن روش نابجایی ...من این کد رو برای تابع مثالی   x^2 - 2^x  نوشتم.کدی که نوشتم اول بازه a و b رو میگیره.همون طور که میدونید در روش نابجایی اول باید بازه رو وارد کنید!حدس اولیه رو 0 قرار دادم. بعد نرخ همگرایی رو میگیره و در هر مرحله خطا رو نسبت به جواب مرحله قبل محاسبه میکنه و با نرخ همگرایی که وارد کردبد مقایسه میکنه.در آخر اگر خطا کمتر از نرخ همگرایی بود جواب رو همراه با تعداد تکرار نشون میده.

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

program nabejayi
implicit none
INTEGER::k
REAL::a,b,fa,fb,x,e,c,y

کد کامل روش نابجایی در ادامه مطلب

ادامه نوشته

کد فرترن روش تکرار ساده

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

 

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

توجه!! بخوانید!!

کد فرترن روش تکرار ساده به زبان فرترن.......من این کد رو برای تابع نمونه f(x)=(e^x)-x-4  نوشتم که اگه بخوایم به روش تکرار ساده حل کنیم باید به این فرم در بیاریم: x=(e^x)-4 .سپس این کد بازه [a,b] رو میگیره و بررسی میکنه که تو این بازه جواب وجود داره یا نه.در تکرار ساده باید دو شرط برقرار باشه.اول اینکه برای هر x که دربازه انتخاب میشه جواب باید در بازه باشه.دوم اینکه قدرمطلق مشتق این تابع در هر نقطه ای از این بازه باید کوچکتر از 1 باشه.کدی که نوشتم بعد از گرفتن بازه این دو شرط رو بررسی میکنه.اگه این دو شرط ارضا بشه نرخ همگرایی رو میگیره و نسبت به اون نرخ همگرایی با مقدار اولیه x=0 شروع به محاسبه میکنه و جواب رو به همراه تعداد تکرار نمایش میده.جواب این تای برابر 3.981339- هستش که بازه ای که باید بدیم باید جوری باشه که این نقطه داخلش باشه

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

program tekrar_sade
implicit none
!f(x)=(e**x)-x-4
!x=(e**x)-4
!g(x)=(e**x)-4
INTEGER::k

کد کامل روش تکرار ساده در ادامه مطلب

ادامه نوشته

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

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

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

ادامه نوشته