برازش منحنی به عملی گفته میشود که با کمک آن میتوان منحنیهای مختلف را از مجموعهای از نقاط عبور داد. مثلاً شما تعدادی دادهی آزمایشگاهی دارید و میخواهید بهترین منحنی با معادله مشخص و یا نامشخص را از این نقاط عبور دهید، به این کار برازش منحنی میگویند. در ادامه مطلب با ترفندها همراه باشید تا نرم افزارهایی جهت برازش منحنی به شما معرفی کنیم.
نرم افزار های مورد استفاده جهت برازش منحنی بسته به نوع دادهها (تعداد متغییرهای وابسته و مستقل) به دو دسته زیر تقسیم میشوند.
الف) نرم افزارهای برازش منحنی برای دادههای با ۱ متغیر وابسته و ۱ متغییر مستقل (2D)
۱) نرم افزار اکسل
برای این کار میتوانید از قابلیت Trend Line موجود در نرم افزار اکسل که قبلا در این مطلب شرح داده شده است استفاده کنید.
۲) نرم افزار CurveExpert Basic
این نرم افزار دارای تعداد زیادی مدل رگرسیون خطی و غیر خطی و روشهای مختلف درونیابی میباشد. همچنین امکان تعریف مدلهای رگرسیون توسط کاربر پیش بینی شده است. تعداد نقاط دادهای قابل تعریف در این نرم افزار نامحدود می باشد. نقاط دادهای را می توان مستقیماً وارد نمود. علاوه بر این امکانات ویژهای برای وارد نمودن دادهها از انواع فایلهای مختلف در نظر گرفته شده است که بطور هوشمند میتواند توضیحات و متون را از نقاط دادهای تشخیص دهد. علاوه بر امکانات گرافیکی مناسب، قابلیتهای تحلیلی از جمله محاسبه مشتق و انتگرال در نظر گرفته شده است.
راهنمای استفاده از این نرم افزار را از اینجا دانلود کنید. همچنین ویدئوی آموزشی زیر را نیز میتوانید مشاهده کنید.
دریافت
مدت زمان: 4 دقیقه 48 ثانیه
منبع: tebyan.net
۳) نرم افزار Table Curve 2D. ver 5.01 (لینک کمکی نسخه 30 روزه)
این نرم افزار نیز برای برازش دو بعدی کاربرد دارد. راهنمای استفاده از این نرم افزار را از اینجا دانلود کنید.
راهنمای فعال سازی:
پس از نصب و اجرای نرم افزار در پنجره License information بر روی گزینه Update کلیک نموده و سپس شماره سریال 45DA09CE-FBFB1907 وارد کنید.
نکته: اگر در ابتدای اجرای برنامه پنجره ی مورد به هر دلیلی نمایش داده نشد می توانید پس از وارد شده به محیط برنامه از مسیر Tools-->chose update product license به پنجره لایسنس دسترسی پیدا کنید.
۴) نرم افزار تخصصی متلب (Matlab)
نرمافزار متلب به شما اجازهی انتخاب هر نوع معادلهای را میدهد و شما با انتخاب نوع معادله و ورود دادهها به نرمافزار میتوانید ضرایب معادله مورد نظر خود را بدست آورید. در اینجا به صورت تصویری، چگونگی برازش منحنی یا کرو فیتینگ (Curve Fitting) در نرمافزار متلب را توضیح داده شده است.
ب) نرم افزارهای برازش منحنی برای دادههای با ۱ متغیر وابسته و ۲ یا چند متغییر مستقل (3D)
۱) نرم افزار CurveExpert Professional
۲) نرم افزار Table Curve 3D. ver 4.0 (لینک کمکی نسخه 30 روزه)
راهنمای فعال سازی:
پس از نصب و اجرای نرم افزار در پنجره License information بر روی گزینه Update کلیک نموده و سپس شماره سریال 2A7CF6F8-FBFB1907 وارد کنید.
نکته: اگر در ابتدای اجرای برنامه پنجره ی مورد به هر دلیلی نمایش داده نشد می توانید پس از وارد شده به محیط برنامه از مسیر Tools-->chose update product license به پنجره لایسنس دسترسی پیدا کنید.
نرم افزارهای دیگری نیز برای برازش منحنی وجود دارد از جمله:
۱- DataFit
۲-EasyFit
و ...
فنون و کلیدهای کارآمدی زیادی برای بالا بردن بهره وری وجود دارند. با استفاده از این کلیدهای میانبر می توانید با انرژی بیشتری به کدزنی مشغول شوید.
1- مرتب کردن کدها امری بسار مهم اما وقت گیر می باشد که بوسیله CRTL + K + D این کار به آسانی انجام می گیرد.
2- هنگام خطایابی و یا تست کدها کامنت کردن کدها استفاده زیادی دارد و با استفاده از CTRL+K+C/CTRL+K+U می توانید کدها را کامنت کرده و یا از کامنت درآورید.
3- با رفتن روی یک قسمت از کد و با استفاده از ALT+up/down می توانید آن خط کد را بالا و پایین ببرید.
4-با زدن کلید F12 به کلاس مورد نظر رفته و با استفاده از - CTRL به محل قبلی بازگردید.
5-با نگه داشتن CTRL + کلیک موس به کلاس مورد نظر می روید.
6-از این پس برای عملیات Refactor کردن یا کلاس کردن می توان از کلید میانبر CTRL+R+M استفاده کنید.
7-برای پیدا کردن تمامی رفرنس ها کافی است از کلید میانبر Shift + F12 استفاده نمایید.
8-هنگامی که می خواهید یک تکه کد را داخل Try بیندازید می توانید از Ctrl + K + S استفاده نمایید.
9-برای انتخاب یک مربع از کد می توانیید ابتدا Alt را نگه داشته و با نگاه داشتن کلیک موس یک مربع دلخواه ترسیم نمایید.
10-با استفاده از کلید میانبر CTRL + M + O کدها را جمع کرده و و برای باز کردن آن از CTRL + M + X استفاده می نماییم.
11-کدهای زیادی بدون گروه بندی وجود دارند. می توانید از CTRL+M+H/CTRL+M+U استفاده نمایید.
12-برای بستن پنجره از ALT+F4 استفاده نمایید.
In C you can easily initialize an array using the curly braces syntax, if I remember correctly:
int* a = new int[] { 1, 2, 3, 4 };
How can you do the same in Fortran for two-dimensional arrays when you wish to initialize a matrix with specific test values for mathematical purposes? (Without having to doubly index every element on separate statements)
The array is either defined by
real, dimension(3, 3) :: a
or
real, dimension(:), allocatable :: a
You can do that using reshape and shape intrinsics. Something like:
INTEGER, DIMENSION(3, 3) :: array
array = reshape((/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), shape(array))
But remember the column-major order. The array will be
1 4 7
2 5 8
3 6 9
after reshaping.
So to get:
1 2 3
4 5 6
7 8 9
you also need transpose intrinsic:
array = transpose(reshape((/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), shape(array)))
وقتی توابعی که بکار می برید، آنچنان کوتاه هستند که در یک خط تمام می شوند، می توانید از این ساختار استفاده کنید.
Function_name({list of parameters}) = expression
مثلاً تابع نیوتن که در بالا تعریف شد را می توان با این ساختار به شکل زیر نوشت.
Newton(m1, m2, r) = -6.672E-11*m1*m2/r**2
ساختار زیر برنامه ها به شکل زیر است.
SUBROUTINE name {dummy argument list}
local variables declaration
body of subroutine…
END SUBROUTINE name
در فرترن تمام متغیرها با آدرس فرستاده می شوند “call by reference” (مانند VAR arg در Pascal یا &arg در C++)، یعنی آدرس متغیر در حافظه به زیربرنامه فرستاده می شود، و زیربرنامه می تواند متغیر را مستقیماً تغییر دهد. در توابع نیز چنین است، اما فرض می گردد که توابع متغیرهای ورودی را تغییر نمی دهند.
همه روالهای خوب باید یک نقطه ورود و یک نقطه خروج داشته باشند، اما گاهی لازم است که زیربرنامه در نقطه ای دیگر پایان یابد (برای مثال هنگام ایجاد خطا). برای اینکار از دستور RETURN استفاده می گردد. این دستور اجرای زیر برنامه را متوقف کرده و برنامه را به روال فراخوانی کننده این زیر برنامه باز می گرداند.
پس از پایان یک زیربرنامه، مقدار همه متغیرهای محلی از بین می رود. اگر بخواهیم این مقادیر در اجرای بعدی زیربرنامه موجود باشد(STATIC ALLOCATION)، باید این موضوع را برای مترجم مشخص کنیم تا مترجم بداند که باید مقدار متغیرها را ذخیره کند. این موضوع را با دستور SAVE به مترجم اصلاع می دهیم. ساختار این دستور به این شکل است:
SAVE [{list of local variables to be saved}]
وقتی یک تابع بعنوان متغیر به یک روال دیگر فرستاده می شود، نوع تابع باید قبل از ارسال بعنوان داخلی یا خارجی تعریف گردد. این تعریف با دستورات زیر صورت می گیرد.
INTRINSIC {list of function names} EXTERNAL {list of function names}
برای مثال
شاید از آموختن تئوری کمی خسته شده باشید، حال وقت آن است که آنچه را که آموخته ایم استفاده کنیم. می خواهیم برنامه ای بنویسیم که ریشه های حقیقی یک معادله درجه 2 را پیدا کند. ضرایب معادله درجه 2 را از ورودی خواهیم خواند.
ریاضیات مسئله:
می دانیم که هر معادله درجه 2 به شکل دارای دو ریشه است. در صورتی این ریشه ها حقیقی هستند که باشد. در اینصورت ریشه های حقیقی معادله از رابطه زیر بدست می آیند.
دیاگرام برنامه:
برنامه:
کار کردن با فایلها در فرترن بسیار ساده است. ورودی وخروجی فایل هم مانند ورودی از صفحه کلید یا خروجی به نمایشگر با دستور READ و WRITE صورت می گیرد. در این حالت بخش UNIT در این دستورات مشخص کننده نوع ورودی و خروجی است. برای ورودی از صفحه کلید و خروجی به صفحه نمایش، بخش UNIT در این دستورات برابر * قرار می گیرد. برای ورودی و خروجی از فایل، ابتدا فایل را باز می کنیم، این کار یک عدد (UNIT) به فایل اختصاص می دهد.
این دستور یک فایل را باز می کند و یک عدد به فایل اختصاص می دهد. این امکان وجود دارد که فایل را ایجاد کرد. ساختار این دستور به این شکل است:
OPEN(UNIT= number, FILE= ’Name of file’, STATUS= status, ACCESS= access…)
number عددی است که شما به فایل اختصاص می دهید (این عدد را بین 0 تا 255 انتخاب کنید – یعنی شما می توانید با خیال راحت تا 255 فایل مجزا را باز کنید!)، این عدد شناسه فایل است. status وضعیت فایل را مشخص می کند و می تواند برای ایجاد فایل جدید ‘NEW’ باشد، یا ‘OLD’ برای باز کردن فایل موجود و اگر مطمئن نیستید ‘UNKNOWN’ بکار می رود و ‘SCRATCH’ برای ایجاد فایلهای موقت که با پایان برنامه یا بسته شدن فایل، فایل از بین می رود! وضعیت ‘REPLACE’ برای جایگزاری فایل جدید است. اگر فایل موجود باشد، پاک شده و فایل جدید جایگزین آن می گردد و اگر فایل موجود نباشد، فایل جدید ایجاد می گردد. access نوع دسترسی به فایل را مشخص می کند که ممکن است، ‘DIRECT’ یا ‘SEQUENTAL’ باشد. نوع دسترسی به فایل بسیار مهم است، اما دسترسی ترتیبی ‘SEQUENTAL’ بسیار ساده است. در این فایلها داده ها بترتیب خط به خط خوانده و نوشته می شوند. پیش فرض دسترسی ترتیبی است.
پیشنهاد می گردد که همه متغیرهای برنامه در ابتدای برنامه تعریف (تعیین نوع) گردند. برای اینکه هیچ متغیری از قلم نیفتد، از دستور IMPLICIT NONE در ابتدای برنامه استفاده کنید. این دستور به مترجم برنامه خواهد گفت که اگر در برنامه به متغیر تعریف نشده ای برخورد، اعلام خطا کند. البته فرترن به تعیین نوع نیازی ندارد! اما این کار خطاهای برنامه نویسی شما را کاهش خواند داد. زبانهای برنامه نویسی زیادی در اولین استفاده از متغیر برای آن متغیر نوعی در نظر می گیرند و نیازی نیست که برنامه نویس نوع متغیرها را مشخص کند زبان فرترن نیز چنین است. تعریف متغیر توسط برنامه نویس یا مترجم برنامه در برنامه نویسی حرفه ای برای مدت زیادی مورد بحث بود تا اینکه ناسا یکی از سنسورهای سفینه فضایی ونوس را بعلت یک تعریف متغیر اشتباه توسط مترجم برنامه (مترجم نوع دیگری را برای متغیر در نظر گرفته بود) از دست داد. بنابراین تعریف متغیر توسط برنامه نویس بعنوان یک روش مناسب انتخاب شد. خوشبختانه در بسیاری از زبانهای برنامه نویسی مدرن تعریف متغیر توسط برنامه نویس اجباری است. فرترن برای داشتن سازگاری از تعریف داخلی متغیر توسط مترجم پشتیبانی می کند.
قوانین نامگذاری متغیرها عبارتند از :
شما در برنامه متغیرها را برای انواع مختلفی از داده ها بکار می برید. انواعی از داده ها که در فرترن 77 پیشتیبانی می گردند به شرح زیر است:
ثابت های هم به همین شکل بکار می روند مثلاً 1234 یک عدد ثابت صحیح است، 1234.0 یا 1.234E3 یک ثابت اعشار و 1.234D3 عدد اعشار با دقت مضاعف است. اعداد مختلط به شکل (3.14,-1E5) نمایش داده می شوند و کاراکترها بین دو کوتیشن قرار می گیرند “AbBa” یا “S”. ثابتهای منطقی فقط می توانند دو مقدار .TRUE. و .FALSE. را داشته باشند (به نقاط ابتدایی و انتهایی هر یک توجه کنید). اگر اعداد بسیار کوچک یا بسیار بزرگ باشند، ممکن است سیستم آنها را صفر در نظر گرفته و مشکل تقسیم بر صفر در محاسبات پیش آید یا اینکه سیستم دچار سر ریز گردد. این خطاها بسیار رایج هستند و اشکال گزارش شده به سیستم بستگی خواهد داشت.
برای تخصیص حافظه لازم به متغیرها، مترجم برنامه (Compiler) باید نام، نوع و اندازه هر متغیر را بداند. اگر از دستور IMPILICIT NONE استفاده گردد، لازم است که تمام متغیرها تعریف گردند. در غیر اینصورت نوع متغیر با حرف اول آن مشخص می گردد.
تعریف متغیر با دستور زیر صورت می گیرد (این تعریف در برنامه نویسی بسیار پسندیده است):
عملگرهایی مانند + ، – ، / (همان ÷ است) و * (همان × است) را می شناسید. عملگر توان در فرترن به شکل ** است.
این موضوع که ابتدا کدام محاسبات انجام خواهد شد در پاسخ یک عبارت ریاضی بسیار موثر است. ترتیب محاسبه و اولویت آنها به شکل زیر است:
برای مثال عبارت A*B**n-C/D و (A*(B**n))-(C/D) یکسان هستند. اگر دو عبارت از اولویت یکسانی برخوردار باشند، محاسبه از چپ به راست خواهد بود. برای مثال عبارت A/B*C و (A*B)/C یکسان هستند. لازم است بدانید که حاصل عملیات بین دو اعشار، اعشار است و حاصل عملیات بین دو عدد صحیح، عدد صحیح است؛ حاصل عملیات بین عدد اعشار و عدد صحیح، عدد اعشار است. به عنوان مثال حاصل 1/5 برابر 0 صحیح است، حاصل 1./5. برابر 0.2 اعشار است و حاصل 1d0/1d5 برابر 0.2 مضاعف است. بطور کلی می توان گفت که در محاسبه عبارات اگر تبدیل نوع لازم باشد، متغیرها به متغیر با بالاترین دقت تبدیل می گردند. در استفاده از اعداد دقت کنید، عدد 4 صحیح است، عدد 4. اعشار و عدد 4d0 مضاعف است. برابر قرار دادن مقدار یک متغیر با یک عبارت یکی از ساده ترین عبارات هر زبان برنامه نویسی است.
variable = expression
برای مثال عبارت ریاضی در فرترن بصورت نوشته می شود و کامپیوتر بعد از محاسبه عبارت سمت راست، مقدار آنرا در متغیر a قرار می دهد. کاربرد پرانتز در عبارات ریاضی به خوانایی بیشتر برنامه و جلوگیری از اشتباه کمک می کند.
مقایسه متغیرها به کامپیوتر قدرت تصمیم گیری داده است. متأسفانه فرترن 77 عباراتی مانند <, > و … را به این شکل پشتیبانی نمی کند و بجای آنها مقایسه را با عباراتی چون .EQ. انجام می دهد.
این مشکل در فرترن 90 حل شده است و فرترن 90 علامتهای <، >، >=، <=، == و != را هم پشتیبانی می کند. برای مثال عبارت (A .EQ. B) معادل (A==B) و یک عبارت منطقی است، این عبارت در صورتی صحیح است که مقدار متغیرها با هم برابر باشد. در هر حال حاصل یک عبارت مقایسه ای یک مقدار منطقی خواهد بود که می تواند درست یا اشتباه باشد.
دانلود برنامه GetData Graph Digitizer – برنامه GetDataبرای رقومی کردن نمودارها و قطعه ها است. در بیشتر مواقع لازم است که دادههای اصلی (x، y) از نمودارها بدست بیایند، برای مثال مقادیر علمی اسکن شده یا زمانی که مقادیر داده ها در دسترس نیست. GetData Graph Digitizer اجازه می دهد تا به راحتی اعداد در چنین مواردی را بدست بیاورید. خودم از این برنامه برای انجام پایان نامه ام استفاده کردم باید بگم بی نظیره
۱_باز کردن یک نمودار
۲_مجموعه مقیاس (سیستم مختصات)،
۳_رقومی کردن (به صورت خودکار یا دستی) و
۴_کپی داده ها به کلیپ بورد، و ذخیره داده با فرمت های TXT، XLS، XML، DXF یا EPS .
:Main features of GetData Graph Digitizer are
supported graphics formats are TIFF, JPEG, BMP and PCX
two algorithms for automatic digitizing
convenient manual digitizing
reorder tool for easy points reordering
save/open workspace, which allows to save the work and return to it later
obtained data can be copied to the clipboard
export to the formats: TXT (text file), XLS (MS Excel), XML, DXF (AutoCAD) and EPS (PostScript)
∗تصویر پنل بالا مربوط به پایان نامه خانم مهندس خوشنود از دانشگاه علوم و فنون دریایی خرمشهر می باشد.
یکی از دوستان سوال پرسیدند که چگونگی تبدیل کاما در اعداد اعشاری فارسی به ممیز را توضیح دهیم. برای حل این مشکل و همچنین اگر مشکل برعکس تایپ شدن اعداد ممیز دار را دارید گام های زیر را طی کنید:
ابتدا تصویر زیر را مشاهده کنید؛ همانطور که میبینید در تصویر به جای ممیز، با کاما قسمت صحیح و اعشاری اعداد جدا شده است. میخواهیم کاما را به ممیز تبدیل کنیم:
1- به تب home میرویم و از قسمت editing، بر روی گزینه replace کلیک میکنیم:
2- در پنجره باز شده، از قسمت find گزینه more کلیک کنید.
روش شبکه بولتزمن در واقع یک روش محاسباتی است که بر پایهی تئوری انرژی جنبشی استوار بوده و ابتدا برای شبیهسازی جریان سیال مورد استفاده قرار گرفته است. در واقع انواع مدلهای این روش محاسباتی از تکنیک روش شبکه سلولهای گازی(LGCA) الگوبرداری شدهاند. ایده اصلی روش LGCA این است که تعاریف متفاوت در سطح میکروسکوپی میتوانند در سطوح ماکروسکوپی نیز مورد استفاده قرار گیرند. با استفاده از یک مدل سلولی ساده که تنها از قوانین بقای جرم و اندازه حرکت در سطح میکروسکوپی پیروی میکند و با قرار دادن آن در یک شبکه مناسب، میتوان نشان داد که با استفاده از تحلیل چند سطحی چپمن-انسکوگ، معادلات ناویر استوکس مربوط به سیال با تراکمپذیری کم از یک شبکهی میکروسکوپی به دست میآیند.
روش LGCA از دیدگاه محاسباتی مزایای مهم زیادی دارد. اول اینکه کاراکتر بولین برای قوانین برخورد به این معنا خواهد بود که این مدل میتواند از منطق بولین بدون و بدون مشکلات مرتبط با خطاهای گرد کردن استفاده کند. دوم اینکه در این روش مرحله برخورد کاملاً منطقهای است و بنابراین، استفاده از این روش در سیستمهایی باقابلیت پردازش موازی بسیار مناسب است.
اولین روش LBM مربوط به مکنامارا و زانتی است و با هدف کاهش پیچیدگیهای روش LGCA توسعه داده شد. اولین مدلهای LBM از شبکه و قوانین برخورد مشابه با LGCA استفاده میکردند و فقط اعداد بولین روش LGCA با توابع توزیع ذرات LBM جایگزین شده بودند.
بهطور کلی الگوریتم روش شبکه بولتزمن دارای ویژگیهایی است که آن را از روشهای عددی سنتی مربوط به حل میدان جریان متمایز مینماید. برخی از آنها به شرح زیر میباشد:
1- 1- جمله جابجایی درروش شبکه بولتزمن خطی میباشد که این موضوع متفاوت با معادلات ناویر استوکس است.
2- 2- فشار درروش شبکه بولتزمن توسط معادله حالت به دست میآید درحالیکه در حل معادلات ناویر استوکس فشار با تبدیل معادله پیوستگی به رابطهای برای تصحیح فشار استخراج میگردد که این امر مستلزم استفاده از الگوریتمهای تکرار و اعمال ضرایب زیر تخفیف می باشد.
با وجود مزایای زیاد، این روش دارای نقاط ضعف نیز میباشد که از جمله میتوان به موارد زیر اشاره نمود:
1- 1- ضعف در مدلسازی جریانهای چند فازی گاز-مایع با اختلاف چگالی و یا اختلاف گرانروی زیاد بین فازها.
2- 2- ضعف در شبیهسازی جریانهایی با اعداد ماخ بالا.
3- 3- ضعف در مدل نمودن هندسه با مرزهای منحنی.