تبلیغات
وبلاگ مهندسی عمران (مهندسی آب)
وبلاگ مهندسی عمران (مهندسی آب)
زَکاةُ العلم پَخْشُه!! البته‌با‌‌دانش‌‌وبیان‌مناسب‌و‌به‌دور‌از‌هرگونه Copy&Paste!
کلاس آموزش برنامه‌نویسی به زبان FORTRAN 90/95
نوشته‌شده در تاریخ چهارشنبه 21 اسفند 1392 توسط محمدصادق عباسیان | نظرات ()
طبقه‌بندی: علمی، 
برچسب‌ها: فرترن، FORTRAN، دوره آموزشی، کلاس،  
سلام!
ان‌شاءالله 30 ساعت کلاس برنامه‌نویسی به زبان FORTRAN 90/95 در گروه آموزشی عمران‌پایه از 25 فروردین برگزار می‌شه. برای دیدن سرفصل مطالب، زمان‌ کلاس، محل برگزاری و هزینه ثبت‌ نام روی لینک زیر کلیک بفرمایید.

مشاهده پوستر


حل معادله چندجمله‌ای به روش نصف کردن
نوشته‌شده در تاریخ چهارشنبه 1 آبان 1392 توسط محمدصادق عباسیان | نظرات ()
طبقه‌بندی: مبانی برنامه‌نویسی (فرترن)، 
برچسب‌ها: فرترن، حل معادله، چندجمله ای، نصف کردن، بولتزانو،  

توضیحات:
1. برنامه برای حل معادله یک چندجمله‌ای با حداکثر درجه 3 به روش نصف کردن نوشته شده.
2. برنامه ضرایب چندجمله‌ای (a، b، c و d) و دو تا مقدار که توی قضیه بولتزانو صدق کنن (x1 و x2) رو از ورودی می‌گیره.

3. برنامه توی هر مرحله x3 که مقدار حاصل از نصف کردن فاصله x1 و x2 هست رو حساب می‌کنه و با استفاده از قضیه بولتزانو مقدار x3 رو جایگزین x1 یا x2 می‌کنه.
4. برنامه وقتی متوقف می‌شه که یا فاصله x1 و x2 کمتر از 0.0001 بشه یا اینکه مقدار تابع توی نقطه x3 کمتر از 0.00001 بشه.
5. آخرین مقدار x3 به‌عنوان ریشه معادله توی خروجی چاپ می‌شه.

 

Program Root

Implicit None

 

Real :: a, b, c, d

Real :: x1, x2, x3

Real :: F1, F2, F3

 

Print*, "A Program to calculate the root of a polinomial."

Print*, "This program is presented by Mohammadsadegh Abbasian."

Print*

 

Print*, "Enter a, b, c and d, coefficients of polinomial ax^3 + bx^2 + cx + d:"

Read*, a, b, c, d

Print*

Print*, "Enter x1 and x2, two points which satisfies Bolzano's theorem:"

Read*, x1, x2

 

F1 = a*x1**3 + b*x1**2 + c*x1 + d

F2 = a*x2**3 + b*x2**2 + c*x2 + d

 

If (F1*F2 > 0) Then

          Print*

Print*, "Error! F1*F2 > 0: You have to enter x1 and x2, two points which"

Print*, " satisfies Bolzano's theorem."

Else

 

Do

x3 = (x1+x2) / 2

F3 = a*x3**3 + b*x3**2 + c*x3 + d

  

If (F3*F1 < 0) Then

x2 = x3

Else

x1 = x3

End If

  

If (ABS (x1-x2) < 0.0001 .OR. ABS (F3) < 0.00001) Then

Print*

Print*, "Root =", x3

Exit

                   End If

End Do

 

End If

End      



پاسخ به سؤال فرترن
نوشته‌شده در تاریخ پنجشنبه 2 خرداد 1392 توسط محمدصادق عباسیان | نظرات ()
طبقه‌بندی: مبانی برنامه‌نویسی (فرترن)، 
برچسب‌ها: فرترن، تابع، انتگرال ذوزنقه ای، حل عددی انتگرال،  

سلام،
سؤالی با این صورت پرسیده شده:
چه‌طور می‌شه با فرترن انتگرال x2+1 رو در بازه (a,b) و با استفاده از Function محاسبه کرد؟
این سؤال دقیقاً سؤال حل شده کتاب دکتر محمود صالح، انتشارات دانشگاه امام حسین هست که من سه صفحه‌ای که پاسخ این سؤال در اونها اومده رو اسکن کردم و می‌تونید دانلود کنید.

Download



پاسخ به سؤال فرترن
نوشته‌شده در تاریخ جمعه 13 اردیبهشت 1392 توسط محمدصادق عباسیان | نظرات ()
طبقه‌بندی: مبانی برنامه‌نویسی (فرترن)، 
برچسب‌ها: دنباله فیبوناچی، فرترن، کد، مثال، Fibonacci،  

سلام!
توی نظرات پرسیده شده که چه‌طور می‌شه دنباله فیبوناچی رو حتی بدون استفاده از آرایه نوشت. همون‌طوری که قبلاً گفتم دنباله فیبوناچی رو در اصل باید با تابع بازگشتی (Recursive Function) نوشت و در غیر این صورت راحت‌ترین راه استفاده از آرایه هست. اگر از آرایه هم استفاده نکنیم فقط نوشتن برنامه رو سخت‌تر کردیم. به‌ هر حال من کدهای این برنامه رو براتون می‌ذارم.
توضیحات:
1- در هر بار محاسبه حلقه دو جمله از دنباله حساب می‌شه، جمله nام و جمله n+1ام. جمله nام توی متغیر U و جمله n+1ام توی متغیر V ذخیره می‌شه. به همین خاطره که تعداد تکرار حلقه اگر n زوج باشه n/2 هست و اگر n فرد باشه (n-1)/2. برای تشخیص زوج بودن یا نبودن n از تابع Mod() یعنی تابع باقیمانده استفاده کردیم. اگر باقیمانده تقسیم n بر 2 صفر شد عدد زوجه وگرنه عدد فرده.
2- به متغیر A مقدار 0 داده شده که همون جمله صفرم دنباله هست و به متغیر B مقدار 1 داده شده که جمله اول دنباله هست. با اولین ورود به حلقه، مقدار متغیر U برابر با A+B می‌شه که برابره با 1 و جمله دوم دنباله هست. بعد متغیر V برابر B+U می‌شه که برابر 1+1=2 هست و همون جمله سوم دنباله هست. برای محاسبه جملات بعدی مقدار A و B باید تغییر کنن. پس متغیر A مقدارش رو از متغیر U و متغیر B مقدارش رو از متغیر V می‌گیره. دفعه بعدی که حلقه تکرار می‌شه U=A+B=1+2=3 و V=B+U=2+3=5 که جملات چهارم و پنجم دنباله هستن. به همین ترتیب در هر تکرار حلقه دو جمله متوالی محاسبه می‌شن.
3- برای چاپ جمله nام دنباله، اگر n زوج باشه U و اگر n فرد باشه V چاپ می‌شه.

Implicit None
Integer :: A, B, N, M, U, V, I
A = 0
B = 1
Print*, "Please Enter n:"
Read*, N
If (Mod(N,2) == 0) Then
          M = N/2
Else
          M = (N-1)/2
End If
Do I = 1,M
          U = A + B
          V = B + U
          A = U
          B = V
End Do
If (Mod(N,2) == 0) Then
          Print*, "Un =", U
Else
          Print*, "Un =", V
End If
End



پاسخ به سؤال فرترن
نوشته‌شده در تاریخ پنجشنبه 5 اردیبهشت 1392 توسط محمدصادق عباسیان | نظرات ()
طبقه‌بندی: مبانی برنامه‌نویسی (فرترن)، 
برچسب‌ها: دنباله فیبوناچی، فرترن، کد، برنامه،  

در ریاضی سری فیبوناچی (Fibonacci) دنباله‌ای از اعداد صحیح به‌صورت زیر هست

0,\;1,\;1,\;2,\;3,\;5,\;8,\;13,\;21,\;34,\;55,\;89,\;144,\; \ldots\;

و در واقع هر جمله‌ش از رابطه بازگشتی زیر به‌دست میاد.

 
  F(n):=  
  \begin{cases}
    0             & \mbox{if } n = 0; \\
    1             & \mbox{if } n = 1; \\
    F(n-1)+F(n-2) & \mbox{if } n> 1. \\
   \end{cases}

کدهای زیر برنامه‌ایه که جمله nام سری فیبوناچی رو حساب می‌کنه (n از ورودی دریافت می‌شه). چون جملات این سری از رابطه بازگشتی به‌دست میان، در واقع برای نوشتن این برنامه باید از یک رویه (تابع یا سابروتین) بازگشتی استفاده بشه. اما در این برنامه ساده، فقط از یک آرایه تک‌بعدی استفاده شده.

Program Fibonacci
Implicit None
Integer :: N, I
Integer, Dimension (0:1000) :: U
U(0) = 1; U(1) = 1
Print*, "Please Enter N:"
Read*, N
Do I = 2, N
          U(I) = U(I-2) + U(I-1)
End Do
Print*, U(N)
End



پاسخ به سؤال فرترن
نوشته‌شده در تاریخ یکشنبه 25 فروردین 1392 توسط محمدصادق عباسیان | نظرات ()
طبقه‌بندی: مبانی برنامه‌نویسی (فرترن)، 
برچسب‌ها: فرترن، حلقه، شرط،  

سلام!
سؤالی به‌ این صورت توی نظرات مطرح شده:
سؤال: برنامه‌ای بنویسید که یک عدد صحیح را از ورودی دریافت کند و تعداد ارقام آن را چاپ نماید.
پاسخ: این سؤال دقیقاً سؤال 12 فصل دوم کتاب فرترن دکتر موسوی‌ندوشنی هست که من هر ترم این سؤال رو سر کلاس حل تمرین برای بچه‌ها حل می‌کردم. برای حل این سؤال هم روش‌های مختلفی وجود داره که همگی شبیه به هم هستن. توی کدهایی که براتون می‌ذارم، روش حل به این صورته که اگر عددی ورودی صفر باشه، در خروجی چاپ می‌شه که عدد ورودی صفر هست و اگر منفی باشه اون رو با تابع قدرمطلق مثبت می‌کنه. بعد اگر عددی بزرگ‌تر یا مساوی یک و کوچکتر از 10 باشه تک‌رقمی تشخیص داده می‌شه، اگر بزرگ‌تر یا مساوی 10 و کوچک‌تر از 100 باشه دورقمی تشخیص داده می‌شه و الی آخر.

Integer :: I, M, N, O
Print*, "Please Enter The Value:"
Read*, I
I = ABS (I)
M = 1
N = 10
O = 0
If (I == 0) Then
          Print*, "The Input Value is Zero."
Else
           Do
                    O = O + 1
                   If (I .GE. M .AND. I .LT. N) Then
                             Print*, "Number of Digits =", O
                             Exit
                   End If
          M = M * 10
          N = N * 10
          End Do
End If
End



پاسخ به سؤال فرترن
نوشته‌شده در تاریخ چهارشنبه 14 فروردین 1392 توسط محمدصادق عباسیان | نظرات ()
برچسب‌ها: فرترن، مثال، تابع نمایی، بسط مک لورن، حلقه و شرط،  

سلام!
یکی از دوستان سؤالی پرسیده که جواب اون رو گذاشتم.
لطفاً‌ از این به بعد اگر سؤال می‌پرسید و پیگیر جواب اون هستید خودتون رو معرفی بفرمایید، بگید از کدوم دانشگاه هستید و ایمیلتون رو هم بذارید. ممنونم.
سؤال: برنامه‌ای بنویسید که مقدار exp(x) را با مقدار تقریبی آن که برابر است با sigma{x^n/n!} مقایسه کرده و مقدار آن‌را چاپ نماید. برنامه را طوری بنویسید که در ورودی x و n را دریافت نماید.
پاسخ: بنده توضیح بدم که منظور ایشون از sigma{x^n/n!} در واقع بسط مک‌لورن تابع نمایی به‌صورت

 e^{x} = \sum^{\infin}_{n=0} \frac{x^n}{n!} = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots\quad\text{ for all } x\!

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

توضیحات:
1- سؤالی مشابه همین سؤالی که اینجا مطرح شده در فصل دوم کتاب دکتر موسوی‌ندوشنی هست و بنده هم از همون الگوریتم برای حل این سؤال استفاده کردم. چون برای حل این سؤال روش‌های مختلفی می‌تونه مطرح بشه.
2- در حل این سؤال دقت کنید که بسط مک‌لورن به این صورت حساب می‌شه. در اولین تکرار حلقه 1+x حساب می‌شه و در متغیر Sum ذخیره می‌شه و بعد ترم x^2/2 حساب می‌شه و در متغیر Term ذخیره می‌شه. در دومین تکرار حلقه، حاصل (1+x) با حاصل (x^2/2) جمع می‌شه و در متغیر Sum ذخیره می‌شه و بعد ترم x^3/3! به صورت (x^2/2)*(x/3) محاسبه می‌شه و در متغیر Term ذخیره می‌شه. در سومین تکرار حلقه حاصل {(1+x)+(x^2/2)+(x^3/3!)} حساب می‌شه و در متغیر Sum ذخیره می‌شه و ترم x^4/4! به‌صورت (x^3/3!)*(x/4) حساب می‌شه و در متغیر Term ذخیره می‌شه و الی آخر. در واقع در این الگوریتم هر ترم از رابطه بازگشتی زیر محاسبه می‌شه.

xi/i!=(xi-1)/(x-1)i×x/i



ادامه مطلب - کدهای برنامه
(تعداد کل صفحات:2)      1   2  
درباره‌ی وبلاگ

.::بسم الله الرحمن الرحیم::.
در این وبلاگ سعی می‌شه مطالب مختلفی در ارتباط با مهندسی عمران و به طور خاص مهندسی آب قرار داده بشه. تمام سعی بنده اینه که مطالبی رو ارائه بدم که یا حاصل تلاش خودم هست، یا اینکه مشابه اون در وبلاگ‌ها و سایت‌های فارسی پیدا نمی‌شه. بنابراین لطفاً حق کپی رایت فراموش نشه!!!

محمدصادق عباسیان
دانشجوی دکترای مهندسی عمران-آب، دانشگاه صنعتی شریف
پست الکترونیک
تماس با مدیر
RSS
ATOM
جستجو
آخرین مطالب
نوروز 1397 مبارک!
پذیرش مقاله در مجلۀ Theoretical and Applied Climatology
«یکِ عمران»: تخصصی‌ترین کانال مشاورۀ کنکور ارشد و دکتری
گفتگوی 6 از مجموعۀ «گفتگوهای آبی»
گفتگوی 5 از مجموعۀ «گفتگوهای آبی»
گفتگوی 4 از مجموعۀ «گفتگوهای آبی»
گفتگوی 3 از مجموعۀ «گفتگوهای آبی»
گفتگوی 2 از مجموعۀ «گفتگوهای آبی»
گفتگوی 1 از مجموعۀ «گفتگوهای آبی»
انتشار مقاله در مجله علمی-پژوهشی عمران مدرس
خلاصه‌های کنکور دکترای عمران آب
مشاوره رایگان کنکور کارشناسی ارشد
ارتفاع مکش کل خالص (NPSH)
رابطه بین مدت و شدت بارندگی
کلاس آموزش برنامه‌نویسی به زبان FORTRAN 90/95
آرشیو
اسفند 1396
مهر 1395
شهریور 1395
اردیبهشت 1395
فروردین 1395
بهمن 1393
مهر 1393
فروردین 1393
اسفند 1392
موضوعات
تغییر اقلیم
مقاله
«گفتگوهای آبی»
مبانی برنامه‌نویسی (فرترن)
مکانیک سیالات و هیدرولیک
هیدرولوژی
سازه
مقاومت مصالح و استاتیک
ریاضیات
مكانیك خاك
بتن
راه‌سازی و روسازی
نقشه‌برداری
اطلاع رسانی
علمی
نویسندگان
محمدصادق عباسیان
پیوندها
دانشگاه صنعتی شریف
کتاب عمران
وبلاگ فرآیندهای تصفیه‌ی آب و فاضلاب
پیوندهای روزانه
فروشگاه فایل‌های آموزشی جزوه‌ها و پروژه‌های مهندسی دانشگاه صنعتی شریف
صفحات جانبی
درباره‌ مدیر، محمدصادق عباسیان
ابر برچسب‌ها
مکانیک خاک فرترن هیدرولیک هیدرولوژی مبانی برنامه‌نویسی فرترن بتن مکانیک سیالات و هیدرولیک مقاومت مصالح و استاتیک سیالات علمی
آمار سایت
بازدیدهای امروز: نفر
بازدیدهای دیروز: نفر
كل بازدیدها: نفر
بازدید این ماه: نفر
بازدید ماه قبل: نفر
تعداد نویسندگان: عدد
كل مطالب: عدد
آخرین بازدید:
آخرین بروزرسانی:
Blog Skin