برنامه محاسبه ریشه معادله درجه 2 به زبان فرترن

برنامه محاسبه ریشه معادله درجه 2 به زبان فرترن

در ادامه پست های مربوط به زبان برنامه نویسی فرترن، قصد داریم یک برنامه بنویسیم که ریشه های معادله درجه دوم را برای من محاسبه و پاسخ آن را نشان دهد. در ابتدای پست لازم به ذکر است که شما میتوانید برای ران کردن کد های خود از نرم افزارهای microsoft visual studio 2012 و 2015-Parallel-intel-studio استفاده کنید که فایل نصب و راهنمای نصب آن در این فایل آورده شده است.

 

توضیح در مورد کد اول:

اگر خلاصه در مورد ساختار کلی این کد ساده صحبت کنیم، میتوانیم بگوییم که این کد با توجه به ساختار کلی معادله درجه دوم (y=ax^2+bx+c)، متغیر های a,b,c را دریافت کرده و با فرمول دلتا (delta=b^2-4ac) و البته با توجه به بزگتر یا کوچکتر بودن دلتا از صفر معادله را حل میکند. در ادامه دقیق تر به توضیحات کد می پردازیم.

بخواهیم دقیق تر بپردازیم

  1. ابتدا با implicit NONE تمامی اعلان های ضمنی را از برنامه حذف یا غیر فعال میکنیم.
  2. تمامی متغیر ها، محاسبات و جواب هارا(a,b,c,x1,x2,delta) با دستور Real در محدوده اعداد حقیقی قرار می دهیم.
  3. در خط 6 با نمایش ساختار کلی معادله دو مجهولی و نوشتن متن find roots (پیدا کردن ریشه ها) و سپس ENTER a, b, c ( وارد کردن متغیر های a,b,c )، متغیر هارا دریافت میکنیم.
  4. در مرحله آخر فرمول دلتا را به نرم افزار داده و شرط می گذاریم که زمانی که دلتا بزرگتر مساوی صفر بود فرمول های مربوط به محاسبه ریشه های درجه دوم، وارد عمل بشنود ولی در غیر این صورت یعنی اگر دلتا کوچکتر از صفر بود متن “there is no real answer ” به معنای وجود نداشتن جواب حقیقی نمایش دهد.

پس درصورتی که دلتا بزرگتر مساوی صفر بود، ریشه ها نمایش داده میشوند ولی وقتی که دلتا کوچکتر از صفر بود در این صورت پیغام “there is no real answer ” به معنای عدم وجود ریشه های حقیقی نمایش داده میشود.

 

کد اول:

program equation_2
implicit NONE
REAl::a,b,c,x1,x2,delta

PRINT*,"ax^2+bx+c=0 find roots :"
PRINT*,"ENTER a, b, c."
READ*,a,b,c

delta=b**2-4*a*c

if (delta>=0) then
x1=(-b+SQRT(delta))/(2*a)
x2=(-b-SQRT(delta))/(2*a)

print*,' x1= ',x1,' x2= ',x2

else
print*," there is no real answer"
end if

end

نمونه کد + پیشنمایش نتیجه کد:

پیشنمایش کد محاسبه ریشه معادله درجه 2
پیشنمایش کد محاسبه ریشه معادله درجه 2

منبع کد اول


توضیح در مورد کد دوم (روش حذفی گاوس):

در این مثال، برنامه ابتدا از کاربر می خواهد که ضرایب دو معادله و سمت راست آنها را وارد کند. سپس حذف Gauss-Jordan را انجام می دهد تا ماتریس ضریب را به یک ماتریس مثلثی بالا تبدیل کند و با جایگزین کردن مجدد متغیرهای مجهول را حل کند. در نهایت، برنامه راه حل را خروجی می دهد. توجه داشته باشید که این کد فرض می کند که سیستم معادلات یک راه حل منحصر به فرد دارد. اگر سیستم کم تعیین یا بیش از حد تعیین شده باشد، روش گاوس-جردن ممکن است مناسب نباشد.

بخواهیم دقیق تر بپردازیم:

در ابتدا کد 2 ضریب از کاربر میخواهد و سپس سیستم معادلات را از کاربر دریافت کرده با فرمول گاوس جردن آن را حل کرده و در آخر x1 و x2 را به کاربر نمایش می دهد.

در مورد بررسی دقیق تر کد هر سوالی داشتید در نظرات بپرسید.

کد دوم (روش حذفی گاوس):


INTEGER :: i, j, k, n
REAL :: A(2,2), b(2), x(2)

! Input the system of equations
WRITE(*,*) "Enter the coefficients of the equations: "
DO i = 1, 2
DO j = 1, 2
READ(*,*) A(i,j)
END DO
WRITE(*,*) "Enter the right-hand side of equation ", i
READ(*,*) b(i)
END DO

! Perform Gauss-Jordan elimination
DO k = 1, 2
DO i = k+1, 2
A(i,k) = A(i,k) / A(k,k)
b(i) = b(i) - A(i,k) * b(k)
DO j = k+1, 2
A(i,j) = A(i,j) - A(i,k) * A(k,j)
END DO
END DO
END DO
x(2) = b(2) / A(2,2)
x(1) = (b(1) - A(1,2) * x(2)) / A(1,1)

! Output the solution
WRITE(*,*) "The solution is:"
WRITE(*,*) "x1 = ", x(1)
WRITE(*,*) "x2 = ", x(2)
pause
END PROGRAM GaussJordan

نمونه کد + پیشنمایش نتیجه کد:

پیشنمایش کد گاوس جردن
پیشنمایش کد گاوس جردن

محاسبه ی خواص جریان بعد از یک شاک قائم به زبان فرترن

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

دوره آموزش برنامه نویسی فرترن

کانال اطلاع رسانی تیم علمی و آموزشی دایا

دیدگاهتان را بنویسید