حل معادله موج به روش تفاضل محدود
- 1392/11/16
- 6 دیدگاه
روش تفاضل محدود (Finite Difference) یکی از پرکاربردترین روش های حل انواع معادلات سیالاتی، دینامیکی، دینامیکی و غیره می باشد که جرء روش های عددی به حساب می آید. در این روش لازم است ابتدا معادله حاکم بر سیستم بدست آورده شود و سپس به کمکاین روش، برای هر جزء که اصطلاحا به آن المان گفته می شود، روش فوق پیاده شود. اساس این روش بر پایه تکرار کی باشد و تکرار تا جایی ادامه می یتبد که جواب ها به مقداری همگرا شده یا تفاوت دو مقدار بدست آمده در دو مرحله پیاپی، از خطای مورد نظر کمتر باشد. در این روش شرایط مرزی (Boundary Condition) یا شرایط اولیه (Initial Condition) ذکر می گردد.
در این قسمتسعی داریم با استفاده از روش تفاضل محدود معادله موج را حل نماییم. معادله موجی که قصد حل آن را داریم، بصورت زیر می باشد:
Utt=Uxx
جهت حل این معادله فرض می شود سمت چپ طناب ثابت و سمت راست آن بصورت آزاد می باشد. جهت حل معادله موج، از زبان برنامه نویسی MATLAB استفاده شده است. آموزش های زیادی در مورد این نرم افزار در سایت موجود می باشد که با جست وجو می توانید از آنها استفاده کنید.
کد حل معادله موج (Solving Wave Equation Using Finite Difference Method)
function mit18086_fd_waveeqn % Solves the wave equation u_tt=u_xx by the Leapfrog method. % Example uses homogeneous Dirichlet b.c. on the left (fixed % end) and homogeneous Neumann b.c. right (loose end). % http://EngPedia.ir n = 101; % number of space gridpoints without boundaries dt = 1.6e-2; % time step tf = 8e0; % final time x = linspace(-1,1,n+2)'; x = x(2:end-1); h = x(2)-x(1); r = dt/h; disp(sprintf('CFL number: %0.2f',r)) u0 = f(x); U = [u0,u0+dt*g(x)]; I = eye(n); R = diag(ones(1,n-1),1); A = r^2*R+2*(1-r^2)*I+r^2*R'; A(end,end) = 2-r^2; for tn = 3:ceil(tf/dt) U = [U(:,2),A*U(:,2)-U(:,1)]; clf plot(x,u0,'b:',x,U(:,2),'r.-') axis([-1 1 -1.2 1.2]) title(sprintf('time t=%0.2f',tn*dt)) drawnow end function y = f(x) % initial displacement y = max(1-20*x.^2,0).^2; function y = g(x) % initial velocity y = -[diff(f(x));0]/(x(2)-x(1))/2;
نظرات شما باعث دلگرمی و پیشرفت ما می شود!
مطالب مرتبط
برچسب ها : Boundary Condition, Initial Condition, تفاضل محدود, حل معادله به روش تفاضل محدود, حل معادله موج, حل معادله موج به روش Finite difference, روش فاینات دیفرنس, شرایط اولیه, شرایط مرزی
دیدگاهتان را بنویسید
نشانی ایمیل منتشر نخواهد شد
ممنون از سایت خوبتون و یه خدا قوت به تیم قوی تون با سپاس
تشکر از شما دوست عزیز
سپاس گزارم.
سلام خدمت ادمین گرامی
ممنونم بابته مطالب خوبتون
این چنین کدی برای استوانه بینهایت با dr (فاصیه بین المان ها) متفاوت وجود داره؟؟
حل به روش صریح و ضمنی با اختلاف پیشرو و مرکزی
ممنونم
سلام
تشکر
بله. چنین کدی رو که شما میخواین هست. مزیت روش FEM نسبت به دیگر روشها همین هست که میشه فاصله بین هر المان را متفاوت در نظر گرفت.
اینکه از تفاضل مرکزی استفاده بشه یا پیشرو، به خود شما بستگی داره.
روش حل صریح و ضمنی هم بستگی به انتخاب راه حل شما داره. مثل روش آدامز مولتون…
بهتون پیشنهاد میکنم کتاب The Finite Element Method Using MATLAB رو مطالعه کنید. کتاب خوبی هست.
سپاس گذارم ادمین گرامی
ممنون
موفق باشی.
مطالب جدید
مطالب پربازدید
مطالب تصادفی
شبکه های اجتماعی
دانشنامه تخصصی مهندسی ایران را در شبکه های اجتماعی دنبال کنید