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

موضوع هاي بيشتر »

روش رانگ کوتا 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