آموزش برازش منحنی Curve fitting در نرم افزار MATLAB _ قسمت اول چند جمله ای ها

pic_1

برازش منحنی Curve fitting در نرم افزار MATLAB
از آنجایی که تولباکس برازش منحنی Curve fitting یکی از پرکاربردترین تولباکس های نرم افزار MATLAB می باشید و اکثر دانشجویان رشته های مختلف از رشته های مهندسی گرفته تا علوم پایه به آن نیاز دارند. لذا در این پست هدف آموزش مسائل و مباحث اولیه ی برازش منحنی در نرم افزار MATLAB است.ابتدا دستور ployfit  مورد بررسی قرار خواهد گرفت و توضیحات مربوط به آن داده خواهد شد و در پست بعدی هم به بررسی برازش منحنی به صورت جزئی تر و با استفاده از تولباکس cftool خواهیم پرداخت. برای مشاهده ی این آموزش به ادامه مطلب مراجعه نمایید.

 در صورت داشتن هرگونه سوال، لطف کنید سوالاتتون رو در قسمت نظرات مطرح کنید. و در صورت داشتن پروژه در خصوص نرم افزار MATLAB و مهندسی مکانیک ، کنترل، محاسبات عددی، SIMULINK، SimMechanics میتوانید از طریق ایمیل و تلفن در قسمت تماس با ما، ارتباط برقرارکنید.

 

 

برازش منحنی به صورت چند جمله ای        Polynomial Curve fitting in MATLAB

 

در ابتدا به بررسی دستور polyfit میپردازیم. این دستور به صورت زیر نوشته می شود.

polyfit(x_data,y_data,order)

بدین صورت که ابتدا اطلاعات مربوط به دادهای محور x و محور y و همچنین مرتبه ی چند جمله ای باید وارد شود. در دستور زیر ما یک سری داده های x و y را با تابع چند جمله ای برازش می دهیم.

x_data=[0  1  2   3   4   5   6   7   8   9  10];
y_data=[0 14 52 108 176 250 324 392 448 486 500];
polyfit(x_data,y_data,3)

خروجی که متلب برای این دستور میدهد به صورت زیر است.

ans =

-1.0000   15.0000   -0.0000    0.0000

که عدد اول از سمت راست ضریب a0 است و عدد بعدی ضریب a1 و عدد بعد از آن ضریب a2 و عدد بعد از آن ضریب a3 است. پس چند جمله ای برازش داده شده به صورت زیر است.

a3X3+a2X2+a1X+a0=-X3+15X2+0X+0

و درنهایت تابع برازش شده به صورت زیر است.

Y==-X3+15X2

برای محاسبه ی مقدار برازش داده شده نیز میتوان از دستور polyvalمحاسبه کرد.

polyval(ployfit,x_data)

مثال

داده های زیر را به صورت چند جمله ای مرتبه ی 2 و 3 و 4 برازش داده شده و نمودارهای آن را رسم شده است.

clear,clc,close all
x=[0  1  2   3   4   5   6   7   8   9  10];
y=[0 14 52 108 176 250 324 392 448 486 500];
p1=polyfit(x,y,2)
p2=polyfit(x,y,3)
p3=polyfit(x,y,4)
f1=polyval(p1,x);
f2=polyval(p2,x);
f3=polyval(p3,x);
plot(x,f1,’-.b’,x,f2,’k’,x,f3,’:g’,’LineWidth’,2)
legend(‘order 2′,’order 3′,’order 4’)
title(‘Curve fitting’)
xlabel(‘x’)
ylabel(‘y’)

دستورات و خروجی به صورت زیر است.

 pic_1

 در صورت داشتن هرگونه سوال، لطف کنید سوالاتتون رو در قسمت نظرات مطرح کنید. و در صورت داشتن پروژه در خصوص نرم افزار MATLAB و مهندسی مکانیک ، کنترل، محاسبات عددی، SIMULINK، SimMechanics میتوانید از طریق ایمیل و تلفن در قسمت تماس با ما، ارتباط برقرارکنید.

محسن رضایی

دکتری مهندسی مکانیک گرایش دینامیک کنترل و ارتعاشات دانشگاه شیراز زمینه های تحقیقاتی: دینامیک، کنترل، ارتعاشات، دینامیک پرواز، دینامیک خودرو، آیروالاستیسته، بهینه سازی زمینه های کاری صنعتی: طراحی مکانیزم های خطوط تولید،طراحی جرثقیل ها،طراحی ماشین الات صنعتی،بررسی عیوب و بهینه سازی ماشین الات صنعتی نرم افزارهای مسلط: متلب-سیمولینک- سیم مکانیک-انسیس - انسیس ورکبنچ-آدامز-سالیدورکس-آباکوس تلفن تماس: 09369074440 ایمیل : mechanic.soft[at]yahoo.com , info[at]mechanicsoft.ir نوشته‌های تازه

12 thoughts on “آموزش برازش منحنی Curve fitting در نرم افزار MATLAB _ قسمت اول چند جمله ای ها

  • سپتامبر 6, 2016 در t 8:07 ب.ظ
    Permalink

    برای بالاتر از دو متغیر هم میشه انجام داد؟
    فقط بیزحمت سریع جواب بدین کارم خیلی گیره

    پاسخ دادن
  • نوامبر 29, 2016 در t 8:49 ب.ظ
    Permalink

    با عرض سلام.وخسته نباشید .یه تابع دو متغیرهای که بخواهیم برارش کنیم.و به صورت کسری است.حال اگه بخواهم با یکسری داده منحنی. را برازش کنم ثوابت معادله را بدست آورم باید چکار کنم

    پاسخ دادن
    • ژانویه 26, 2017 در t 12:32 ب.ظ
      Permalink

      توابع متعارف رو میشه از تولباکس ژنتیک استفاده کرد. اما برای توابع نامتعارف شما باید کد نویسی کنید. روش های کد نویسی هم در کتابهای محاسبات عددی موجود هستند.
      موفق باشید.

      پاسخ دادن
      • آوریل 16, 2018 در t 6:41 ق.ظ
        Permalink

        سلام ببخشید من یه تابع نامتعارف رو کد نویسی کردم ولی نمیدونم این رو چجوری میتونم برا برازش منحنی استفاده کنم میشه لطفا راهنمایی کنید؟

        پاسخ دادن
        • ژوئن 10, 2018 در t 9:24 ق.ظ
          Permalink

          برای برازش منحنی ها شما نیاز به دیتا دارید. میتونید از تابعتون دیتاهای دلخواهتون رو بگیرید و سپس با توابع روتین متلب برازش کنید تا به یه تابع روتین برسید.

          پاسخ دادن
  • نوامبر 23, 2017 در t 6:53 ب.ظ
    Permalink

    سلام. میخواستم بدونم دستور مربوط به sum of sin به چه صورت است؟

    پاسخ دادن
    • ژانویه 1, 2018 در t 11:32 ب.ظ
      Permalink

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

      پاسخ دادن
  • ژانویه 31, 2018 در t 5:25 ب.ظ
    Permalink

    با سلام
    از دستور polyfit می خوام استفاده کنم که بعضی از ضرایبش از قبل معلوم هست باید به چه صورت کد نویسی کنم؟
    به عنوان مثال برای چند جمله ای درجه 6 ، که ضرایب مرتبه صفر و یک ،مقدارش صفر باشه
    با تشکر

    پاسخ دادن
    • ژوئن 10, 2018 در t 9:18 ق.ظ
      Permalink

      خوب میتونید مستقیم از دستور متلب استفاده کنیدو این ضرایب رو در نظر نگیرید یا با استفاده از ضرایبی که دارید داده های نزدیک ایجاد کنید و سپس از دستور برازش استفاده کنید. در مورد اینکه ایا میشه چند ضریب رو خودتون قرار بدین بررسی میکنم و در صورتی که به نتیجه ای رسیدم همینجا پاسخ میدم

      پاسخ دادن
  • ژوئن 12, 2018 در t 11:38 ب.ظ
    Permalink

    با سلام
    بنده بیش از چندین داده از مقالات متفاوت را میخواستم به طور همزمان وارد کرو فیتینگ کنم.وبه همه این داده ها یک برازش بدهم.
    سوال اول: چطور میتونم همه داده ها را به طور همزمان وارد کنم؟
    سوال دوم: آیا بهترین برازش که میشه داد را خود نرم افزار میتونه انجام بده؟
    سوال سوم: چطور میشه مقیاس محور x را در کرو فیتینگ از حالت linear به log تبدیل نمود؟
    خواهش میکنم راهنمایی بفرمایید.

    پاسخ دادن
  • سپتامبر 25, 2018 در t 2:59 ب.ظ
    Permalink

    سلام.وقتتون بخیر
    ببخشید برای برازش یک تابع چندمتغییره باید از چه دستوری یا چه روش رگرسیونی استفاده کرد؟؟؟مثلا رابطه yبا سه متغیر مستقلx1,x2,x3را چطور باید به دست آورد ؟؟
    ممنون میشم راهنماییم کنید

    پاسخ دادن
  • نوامبر 10, 2018 در t 10:18 ق.ظ
    Permalink

    سلام خسته نباشید
    میخواستم نتیجه را بصورت یک تابع نمایی برازش کنم
    این را با چه دستوری بنویسم؟

    پاسخ دادن

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *