آخرين ارسالهاي تالار

ارسالي جهت نمايش وجود ندارد

روش رانگ کوتا Runge Kutta Method مشاهده در قالب PDF چاپ فرستادن به ایمیل
نوشته شده توسط saeed   
پنجشنبه, 27 اسفند 1388 ساعت 07:42

روش رانگ کوتا Rung-Kutta Method

در روش اویلر (خطا از مرتبه 2 O(h2)) با افزایش طول گام و یا افزایش بازه مورد بررسی خطای قابل ملاحظه ای ایجاد می شود. در اینگونه موارد روش رانگ کوتای مرتبه4 به علت مرتبه خطای بالاتر (خطا از مرتبه 4 O(h4)) ) جایگزین بسیار مناسبی برا دستیابی به همگرایی بسیار بالاتر می باشد.

در روش رانگ کوتای مرتبه 4 الگوریتم تکرار بصورت زیر در می­آید :

http://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods

http://math.fullerton.edu/mathews/n2003/RungeKuttaMod.html

http://mathworld.wolfram.com/Runge-KuttaMethod.html

تابع f(t,y) همانند روش اویلر با توجه به شکل معادله دیفرانسیل بدست می آید بگونه ای که : f(t,y)=dy/dt

بعنوان مثال معادله دیفرانسیل حرکت آونگ ساده را در نظر بگیرید. این یک معادله درجه دو است که در ابتدا باید آنرا به دو معادله درجه یک تبدیل نماییم ،

از آنجاییکه در روش رانگ کوتا توابع f و g چندین بار تکرار می شوند بهتر است در برنامه با استفاده از @  این دو تابع را ایجاد نماییم.

f=@(alpha) alpha ;

g=@(teta) -w^2*teta ;

با این توضیحات برنامه pendelum1  معادله آونگ ساده را با استفاده از روش رانگ کوتا حل می کند،

% simple pendelum - rung-kutta method

% saeed babanezhad

clc

clear all

%-----------------

g=9.8;

L=1;

N=200;

w=sqrt(g/L);

t=linspace(0,5,N); % time between 0-5s

h=t(2)-t(1);   % time step

f=@(alpha) alpha;

g=@(teta) -w^2*sin(teta);

teta=zeros(1,N);

alpha=zeros(1,N);

teta(1)=10*pi/180;   % initial angle(radian)

alpha(1)=0;          % initial angle speed

for i=1:N-1

k1= f(alpha(i));

kp1= g(teta(i));

k2=f(alpha(i)+h/2*kp1);

kp2=g(teta(i)+h/2*k1);

k3=f(alpha(i)+h/2*kp2);

kp3=g(teta(i)+h/2*k2);

k4=f(alpha(i)+h*kp2);

kp4=g(teta(i)+h*k2);

teta(i+1)=teta(i)+h/6*(k1+2*k2+2*k3+k4);

alpha(i+1)=alpha(i)+h/6*(kp1+2*kp2+2*kp3+kp4);

end

plot(t,teta)

 

نظر ها (50)
  • حسين  - تشكر
    خيلي حال كردم
    باورم نميشد توي اينترنت كسي پيدت بشه كه مفتي بياد و كلي مطلب مهم درسي و بهتره بگم علمي رو به آسوني و با بهترين بيان بگه
    آقا سعيد دستتون درد نكنه
    خدا قوت
    :wink:
  • EBI
    دست شما درد نکند و خیلی ممنون
  • mansoor_622000
    aliii bud dastetun dard nakone be dardam khord :idea:
  • محمد
    دستت درد نکنه خیلی خوب و قشنګ توضیح دادی
  • مسعود
    خیلی حال کردم
    اگه میشد کد های دیگه هم مجانی میذاشتید خیلی خوب میشد
  • bahram
    daste shoma dard nakone
  • elyas
    سلام خسته نباشید
    سایت مفیدی دارید
    تو این قسمت فرمولاسیون و کد فکر میکنم دارای اشکاله و اون اینکه در محاسبه رنگ کوتای مرتبه چهار برای محاسبه K4 باید از K3 استفاده بشود نه از K2 .
    با تشکر موفق و موید باشید
  • saeed
    ممنون- کاملا حق با شماست
  • ناشناس
    :wink: good thanks
  • ناشناس
    سلام.در همه مثال های شما چه از روش اویلر و جه رانکوتا مرتبه 4 همه تنها یک dx/dt و یا d2x/dt وجود دارد حال سوالی که پیش میاد اینکه ممکنه ما با معادلاتی سرکار داشته باشیم که با وجود متغیرهایی مثل dx1/dt و همچنین dx2/dt برای مثال مشتق اول تابه 1 dx1/dt هم در مشتق دوم تابع d^2x2/dt وجود داشته باشد که در این صورت نمی شود از روش رانکوتا استفاده کرد آیا تنها روش حل این نوع معادلات استفاده از روش اویلر می باشد؟
  • saeed
    با توجه به مثالی که زدید همچنان به همان راحتی می توانید از روش رانگ کوتا استفاده نمایید اما به هر حال رانگ کوتا تنها روش نیست به فصل 6 کتاب زیر مراجعه نمایید:
    Applied numerical methods using MATLAB
تنها کاربران عضو شده می توانند نظر ارسال کنند!
آخرین بروز رسانی در جمعه, 03 دی 1389 ساعت 12:21
 
logo-samandehi