آموزش مطلب http://matlabedu.mihanblog.com 2017-03-28T21:10:45+01:00 text/html 2011-06-02T06:45:24+01:00 matlabedu.mihanblog.com امین باشی تماس با من http://matlabedu.mihanblog.com/post/88 کرکره اش رو کشیدم پایین&nbsp; پس لطفا کامنت نگذارید و برای تماس از رایانامه استفاده کنید.<br><br>matlabedu.ir [at] gmail.com <br> text/html 2009-05-28T12:39:24+01:00 matlabedu.mihanblog.com امین باشی محاسبه سری فوریه به صورت عددی http://matlabedu.mihanblog.com/post/87 <link href="amin_files/filelist.xml" rel="File-List"><link href="amin_files/editdata.mso" rel="Edit-Time-Data"><link href="amin_files/oledata.mso" rel="OLE-Object-Data"> <style>v\:* {behavior:url(#default#VML);}o\:* {behavior:url(#default#VML);}w\:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}</style> <style><!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:right; mso-pagination:widow-orphan; direction:rtl; unicode-bidi:embed; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";}p.MTDisplayEquation, li.MTDisplayEquation, div.MTDisplayEquation {mso-style-name:MTDisplayEquation; mso-style-next:Normal; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:center 208.0pt right 415.0pt; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-bidi-language:FA;}span.SpellE {mso-style-name:""; mso-spl-e:yes;}span.GramE {mso-style-name:""; mso-gram-e:yes;}@page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0; mso-gutter-direction:rtl;}div.Section1 {page:Section1;}--></style> <div class="Section1" dir="rtl"><span lang="FA"> <p dir="rtl"><span lang="FA">قبلا درمورد محاسبه سری فوریه به کمک جعبه ابزار تحلیلی (</span><span dir="LTRstyle='mso-bidi-language:FA'">symbolic</span><span lang="FAstyle='mso-bidi-language:FA'">) توضیحاتی را داده بودم،امروز نحوه محاسبه سری فوریه به صورت عددی را توضیح می‌دهم.</span></p> <p dir="rtl"><span lang="FA">سری فوریه به شکل‌های گوناگون قابل تعریف است، برای راحتی کار فرم ساده زیر را در بازه‌ی </span><spandir=ltr><span dir="ltr">0&lt; t &lt; 1</span><span lang="FA"> را در نظر بگیرید</span></spandir=ltr></p> <p dir="rtl"><span lang="FA"><img alt="" src="http://sites.google.com/site/matlabeducorp/Home/image002.gif" align="left" border="0" hspace="0"></span></p> <p dir="rtl">&nbsp;</p> <p dir="rtl"><span dir="LTRstyle='mso-bidi-language:FA'"><span lang="FA">و ضرایب سری فوریه را می توان به این صورت تعریف کرد</span></span></p> <p dir="rtl"><span dir="LTRstyle='mso-bidi-language:FA'"><span lang="FA"><img alt="" src="http://sites.google.com/site/matlabeducorp/Home/image004.gif" align="left" border="0" hspace="0"></span></span></p> <p dir="rtl"><span lang="FA"></span>&nbsp;</p> <p dir="rtl"><span lang="FA"></span>&nbsp;</p> <p dir="rtl"><span lang="FA"></span>&nbsp;</p> <p dir="rtl"><span lang="FA"></span>&nbsp;</p> <p dir="rtl"><span lang="FA">اگر در این قسمت مشکلی دارید به کتابهای ریاضی مهندسی مراجعه کنید.</span></p> <p dir="rtl"><span lang="FA">فرض کنید</span></p> <p dir="rtl" align="left"><span lang="FA"></span></p> <p dir="rtl"><span lang="FA"><img alt="" src="http://sites.google.com/site/matlabeducorp/Home/image006.gif" align="left" border="0" hspace="0"></span></p> <p dir="rtl"><span lang="FA"></span>&nbsp;</p> <p dir="rtl"><span lang="FA">برای محاسبه‌ی سری فوریه تنها باید ضرایب آن را حساب کرد، برای محاسبه هرکدام از ضرایب یابدهرکدام <span lang="FA"></span>از انتگرال‌های فوق را حساب کنیم. برای نمونه من مقدار </span><spandir=ltr>a<sub>n</sub><spanlang=fa> را حساب می کنم<spandir=ltr></spandir=ltr></spanlang=fa></spandir=ltr></p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;"><span class="GramE"><span>function</span></span>y = anfunc(t)</p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;">y = 2*<span class="GramE">sin(</span>2*pi*t).*sin(2*n*pi*t);</p> <p dir="rtl"><span lang="FA">همانطور می دانید هرکدام از این ضرایب یک دنباله از اعدادهستند و با توجه به مقدار </span><span dir="ltr">n</span><spandir=rtl><span> <spanlang=fa>مقدار آنها تغییر می کند. برای محاسبه‌ی تغییرات </spanlang=fa></span><spanclass=spelle><span dir="ltr">anfunc</span><spandir=rtl><span lang="FA">با </span><span dir="ltr">n</span><spanlang=fa> 2 راه وجود دارد (مبحث مربوط به <span class="SpellE"><span dir="ltr">Parameterizing</span></span><span dir="ltr">Functions Called by Function Functions</span><spanlang=fa> را در راهنمای متلبمطالعه کنید). من از تابع تودرتو (<span dir="ltr">nested function</span><span lang="FA">) استفاده می‌کنم.</span></spanlang=fa></spanlang=fa></spandir=rtl></spanclass=spelle></spandir=rtl></p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;"><span class="GramE"><span>function</span></span>myfunc</p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;"><span class="GramE"><span>for</span></span>n = 1:10</p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;"><span class="GramE"><span>an(</span></span>n) = quad(@anfunc,0,1);</p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;"><span class="GramE"><span>end</span></span><spanlang=fa dir="rtl"></spanlang=fa></p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;"><span class="GramE"><span>an</span></span><spanlang=fa dir="rtl"></spanlang=fa></p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;"><span class="GramE">function</span> y = <spanclass=spelle>anfunc(t)</spanclass=spelle></p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;">y = 2*sin(2*pi*t).*sin(2*n*pi*t);<spanlang=fa dir="rtl"></spanlang=fa></p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;"><span lang="SV"><span>&nbsp;&nbsp;&nbsp;</span></span><span class="GramE"><span>end</span></span></p> <p dir="ltr" style="direction: ltr; unicode-bidi: embed; text-align: left;"><span class="GramE"><span>end</span></span><spanlang=fa dir="rtl"></spanlang=fa></p> <p dir="rtl"><span lang="FA">در ادامهکافی است که ابتدا<span>&nbsp; </span>دیگر ضرایب را حساب کردهو سپس مقدار سری را از جمع کردن آنها محاسبه کنیم.</span></p> <p class="MsoNormal" dir="rtl"></p></span><span dir="LTRstyle='mso-bidi-language:FA'"><o:p></o:p></span></div> text/html 2007-07-23T03:37:00+01:00 matlabedu.mihanblog.com امین باشی تعریف هندسه pde http://matlabedu.mihanblog.com/post/83 <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA"></span><span style="font-family: Arial;" lang="FA"><br></span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="AR-SA">روش کار متلب برای حل معادلات پاره ای رامی توانید در آدرس زیر ببنید</span></p> <p class="MsoNormal" style="margin: 5pt 0cm; text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial;"> <a href="http://www.mathworks.com/access/helpdesk/help/toolbox/pde/ug/bqivs1t-1.html"> http://www.mathworks.com/access/helpdesk/help/toolbox/pde/ug/bqivs1t-1.html</a></span></p> <p class="MsoNormal" dir="rtl" style="margin: 12pt 0cm 5pt; text-align: justify;"> <span style="font-family: Arial;" lang="FA">اگر ارل بالا را باز کنید می</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">بینید که برای حل</span><span dir="ltr" style="font-family: Arial;"> pde </span> <span style="font-family: Arial;" lang="FA">ابتدا باید ماتریس هندسه مسئله</span><span dir="ltr" style="font-family: Arial;"> (<i>Geometry Description matrix)</i> </span><span style="font-family: Arial;">&nbsp;<span lang="FA">را بسازیم</span><span lang="en-us">.</span><span lang="FA"> بعد&nbsp; با استفاده از دستور</span></span><span dir="ltr" style="font-family: Arial;"> decsg </span> <span style="font-family: Arial;" lang="FA">این ماتریس را تجزیه می</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">کنیم که به ماتریس حاصل ماتریس هندسه تجزیه شده می</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">گویند</span><span dir="ltr" style="font-family: Arial;">(<i>Decomposed Geometry matrix)</i></span><span style="font-family: Arial;" lang="FA">. این ماتریس ناحیه</span><span lang="FA">ای</span><span style="font-family: Arial;" lang="FA"> </span><span style="font-family: Arial;" lang="en-us">(domain)</span><span style="font-family: Arial;"> که معادله بر روی آن حل می شود را مشخص می</span>کند<span style="font-family: Arial;"> </span></p> <p class="MsoNormal" dir="rtl" style="margin: 12pt 0cm 5pt; text-align: justify;"> <span style="font-family: Arial;" lang="FA">مثال زیر روش بدست آوردن این دو ماتریس را نشان می</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">دهد.</span></p> <p class="MsoNormal" dir="rtl" style="margin: 12pt 0cm 5pt; text-align: justify;"> <span style="font-family: Arial;" lang="FA">مثال)</span></p> <p class="MsoNormal" style="margin: 5pt 0cm; text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial;">s = tf('s');</span></p> <p class="MsoNormal" style="margin: 5pt 0cm; text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial;">sys = 1/(s+1)^2;</span></p> <p class="MsoNormal" style="margin: 5pt 0cm; text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial;">nyquist(sys)</span></p> <span dir="rtl" style="font-size: 12pt; font-family: Arial;" lang="FA">می بینید که نایکویست این تابع شبیه قلب است؛ و همانطور که می</span><span dir="rtl" style="font-size: 12pt; font-family: Times New Roman;" lang="FA">‌</span><span dir="rtl" style="font-size: 12pt; font-family: Arial;" lang="FA">دانید نمودار نایکویست در صفحه اعداد مختلط رسم می</span><span dir="rtl" style="font-size: 12pt; font-family: Times New Roman;" lang="FA">‌</span><span dir="rtl" style="font-size: 12pt; font-family: Arial;" lang="FA">شود. برای حل &nbsp;یک معادله پاره ای را بر روی این شکل باید آن را از فضای اعداد مختلط به فضای اعداد حقیقی تبدیل کنیم(جزییات کار به عهده خودتان).</span><p class="MsoNormal" style="margin: 5pt 0cm; text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial;">w=-10:.1:10;</span></p> <p class="MsoNormal" style="margin: 5pt 0cm; text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial;">x=(1-w.^2)./(1+w.^2).^2;</span></p> <p class="MsoNormal" style="margin: 5pt 0cm; text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial;">y=2*w./(1+w.^2).^2;</span></p> <p class="MsoNormal" style="margin: 5pt 0cm; text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial;">plot(x,y)</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm;" align="right"> <span style="font-family: Arial;" lang="FA">بد نشد ولی یک مقدار تمیز کاری می</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">خواهد. </span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">w = [linspace(-5,-2,7) linspace(-1.9,-.2,20) -.15:.05:.15</span><span style="font-family: Arial; color: blue;">...</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">&nbsp;&nbsp;&nbsp; fliplr(-linspace(-1.9,-.2,20)) fliplr(-linspace(-5,-2,7))];</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">x = (1-w.^2)./(1+w.^2).^2;</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">y = 2*w./(1+w.^2).^2;</span></p> <p class="MsoNormal" dir="rtl" style=""> <span style="font-family: Arial;" lang="FA">حالا یک مقدار چرخش </span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">xy = [0 x ;0 y ];</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">XY = [0 1;-1 0]*xy;</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA">اگر به معادلات</span><span dir="ltr" style="font-family: Arial;"> x,y </span><span style="font-family: Arial;" lang="FA">دقت کنید می بینید هنگامی که</span><span dir="ltr" style="font-family: Arial;"> w </span> <span style="font-family: Arial;" lang="FA">به سمت بینهایت میرود</span><span dir="ltr" style="font-family: Arial;"> x,y </span><span style="font-family: Arial;" lang="FA">برابر با صفر می شوند ولی در عمل نمی توان</span><span dir="ltr" style="font-family: Arial;"> w </span> <span style="font-family: Arial;" lang="FA">را به سمت بی نهایت میل داد٬ پس صفر را خودمان اضافه کردیم.</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm;" align="right"> <span style="font-family: Arial;" lang="FA">هنوز یک مقدر پهن است.</span></p> <p class="MsoNormal" dir="ltr" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">XY = [0.7 0;0 1]*XY;</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA">الان باید ماتریس هندسه را بنویسم</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA">هر ستون این ماتریس مربوط به یک شکل است یعنی اگر بخواهیم معادله را همزمان برای دو شکل حل کنیم ماتریس دو ستون خواهد داشت</span><span dir="ltr" style="font-family: Arial;">.</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA">در این مثال یک شکل داریم و ماتریس یک ستونی است</span><span dir="ltr" style="font-family: Arial;">.</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA">اگر هندسه</span><span dir="ltr" style="font-family: Arial;"> :</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA">به شکل دایره باشد در سطر اول عدد ۱ ٬&nbsp;در سطر دوم و سوم به ترتیب مختصات</span><span dir="ltr" style="font-family: Arial;"> x,y </span><span style="font-family: Arial;" lang="FA">مرکز دایره و در سطر ۴ شعاع دایره را می نویسیم</span><span dir="ltr" style="font-family: Arial;">.</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA">به شکل چند ضلعی باشد در سطر اول عدد ۲ ٬&nbsp;در سطر دوم تعداد اضلاع</span><span dir="ltr" style="font-family: Arial;">(n) </span><span style="font-family: Arial;" lang="FA">٬</span><span dir="ltr" style="font-family: Arial;" lang="FA"> </span><span style="font-family: Arial;" lang="FA">در</span><span dir="ltr" style="font-family: Arial;"> n </span><span style="font-family: Arial;" lang="FA">سطر بعدی</span><span dir="ltr" style="font-family: Arial;"> x</span><span style="font-family: Arial;" lang="FA">ها و در</span><span dir="ltr" style="font-family: Arial;"> n </span><span style="font-family: Arial;" lang="FA">سطر بعد از آن</span><span dir="ltr" style="font-family: Arial;"> y </span><span style="font-family: Arial;" lang="FA">ها می نویسیم</span><span dir="ltr" style="font-family: Arial;">.</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA">به شکل</span><span dir="ltr" style="font-family: Arial;" lang="FA"> </span><span style="font-family: Arial;" lang="FA">چهار ضلعی باشد در سطر اول</span><span dir="ltr" style="font-family: Arial;">&nbsp;</span><span style="font-family: Arial;" lang="FA">&nbsp;عدد ۳ ٬&nbsp;را می نویسیم. سطرهای بعدی را مانند حلت چند ظلعی پر می کنیم.</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA">به شکل بیضی باشد در سطر اول عدد ۴ ٬ در&nbsp;سطر دوم و سوم به ترتیب مختصات </span> <span dir="ltr" style="font-family: Arial;">x,y</span><span style="font-family: Arial;" lang="FA">&nbsp;مرکز بیضی در سطر چهار و پنج اندازه قطر بزرگ و کوچک بیضی و در سطر ششم زاویه چرخش&nbsp;قرار می گیرد.</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm; text-align: right;"> <span style="font-family: Arial;" lang="FA">حالا می</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">توانیم ماتریس هندسه &nbsp;بنویسیم.</span></p> <p class="MsoNormal" dir="rtl" style="margin: 5pt 0cm;" align="right"> <span style="font-family: Arial;" lang="FA">شکل ما از نوع چند ضلعی است پس در سطر اول عدد 2 را می</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">نویسیم.توابع </span><span dir="ltr" style="font-family: Arial;">x,y</span><span style="font-family: Arial;" lang="FA"> دو تا صفر دارند، یکی در بی</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">نهایت و یکی در منفی بی</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">نهایت ولی ما فقط یکی را اضافه کردیم چون هر نقطه را فقط 1 بار باید بیاوریم.</span></p> <p class="MsoNormal" dir="ltr" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">x = XY(1,:)';</span></p> <p class="MsoNormal" dir="ltr" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">y = XY(2,:)';</span><span dir="rtl" style="font-family: Arial;"> </span></p> <p class="MsoNormal" dir="ltr" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">n = length(x);</span></p> <p class="MsoNormal" dir="ltr" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">gd = [2;n;x;y];</span></p> <p class="MsoNormal" dir="ltr" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">dl = decsg(gd);</span></p> <p class="MsoNormal" dir="rtl" style="" align="right"> <span style="font-family: Arial; color: black;" lang="FA">تا اینجا توانستیم که ماتریس هندسه و ماتریس هندسه تجزیه شده را بدست آوریم. اگر به ارلی در اول مقاله آوردم نگاه کنید می</span><span style="color: black;" lang="FA">‌</span><span style="font-family: Arial; color: black;" lang="FA">بیند که 3 مرحله اول حل الگوریتم معادلات پاره</span><span style="color: black;" lang="FA">‌</span><span style="font-family: Arial; color: black;" lang="FA">ای را انجام داده</span><span style="color: black;" lang="FA">‌</span><span style="font-family: Arial; color: black;" lang="FA">ایم. این 3 مرحله را می</span><span style="color: black;" lang="FA">‌</span><span style="font-family: Arial; color: black;" lang="FA">توان در یک ام-فایل خلاصه کرد. برای نوشتن این ام-فایل از دستور </span> <span dir="ltr" style="font-family: Arial; color: black;">wgeom</span><span style="font-family: Arial; color: black;" lang="FA"> استفاده می</span><span style="color: black;" lang="FA">‌</span><span style="font-family: Arial; color: black;" lang="FA">کنیم.</span></p> <p class="MsoNormal" dir="ltr" style="text-align: left; direction: ltr; unicode-bidi: embed;"> <span style="font-family: Arial; color: black;">fid=wgeom(dl,</span><span style="font-family: Arial; color: rgb(160, 32, 240);">'cardiodgeom'</span><span style="font-family: Arial; color: black;">) </span></p> <p class="MsoNormal" dir="rtl" style="" align="right"> <span style="font-family: Arial;" lang="FA">این دستور یک ام-فایل با اسم </span> <span dir="ltr" style="font-family: Arial;">cardiodgeom</span><span style="font-family: Arial;" lang="FA"> ایجاد می</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">کند. اگر به هر دلیلی این فایل ایجاد نشود مقدار </span> <span dir="ltr" style="font-family: Arial;">fid</span><span style="font-family: Arial;" lang="FA"> برابر با </span><span dir="ltr" style="font-family: Arial;">-1 </span> <span style="font-family: Arial;" lang="FA">&nbsp;می</span><span lang="FA">‌</span><span style="font-family: Arial;" lang="FA">شود.</span></p> <p class="MsoNormal" dir="rtl" style="" align="right"> <span style="font-family: Arial;" lang="FA">ادامه دارد...</span></p> <p class="MsoNormal" style="text-align: right; unicode-bidi: embed;">&nbsp;</p> <p align="right">&nbsp;</p> <p class="MsoNormal" style="margin: 5pt 0cm; text-align: right; unicode-bidi: embed;">&nbsp;</p> text/html 2007-01-29T00:31:00+01:00 matlabedu.mihanblog.com امین باشی معادلات هذلولی ۲ http://matlabedu.mihanblog.com/post/82 <p style="direction: rtl;">مثال مطلب قبلی در نظر بگیرید٬ یک بار دیگر می خواهیم این مثال را حل کنیم.</p><p style="direction: rtl;">اولین تغییری که در حل مثال می دهیم٬ نحوه شبکه بندی مسئله است.به نظر می آید که تعداد گره ها برای حل مسئله کافی نباشد با استفاده از دستور refinemesh تعداد گره ها بیشتر می کنیم.با زیاد &nbsp;شدن گره ها تعتداد محاسبات و زمان آن بالا تر می رود ولی ممکن است که نتیجه کار چندان تغییر نکند و یا بهتر باشد که نوع شبکه را عوض کنیم.&nbsp;برای درک بهتر می توانید به کتاب هایی در مورد&nbsp;روش تفاضل محدود-متلب از این روش استفاده می کند- مراجعه کنید.</p><p style="direction: ltr;">&nbsp;&nbsp;<font size="2" face="Courier New"></font></p><p style="direction: ltr;">[p,e,t]=initmesh(g);</p><p style="direction: ltr;">[p,e,t]=refinemesh(g,p,e,t);</p><p style="direction: ltr;">x=p(1,<img src="Http://mihanblog.com/Yahoo/1.Gif" border="0">'; </p><p style="direction: ltr;">y=p(2,<img src="Http://mihanblog.com/Yahoo/1.Gif" border="0">'; </p><p style="direction: ltr;">u0=atan(cos(pi/2*x)); </p><p style="direction: ltr;">ut0=3*sin(pi*x).*exp(cos(pi*y)); </p><p style="direction: ltr;">tlist=linspace(0,5,50); </p><p style="direction: ltr;">uu=hyperbolic(u0,ut0,tlist,b,p,e,t,1,0,0,1);</p><p style="direction: rtl;"><font face="Tahoma"></font></p> text/html 2007-01-25T05:31:00+01:00 matlabedu.mihanblog.com امین باشی معادلات هذلولی http://matlabedu.mihanblog.com/post/81 <div class="Section1" dir="rtl"><p dir="rtl" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: justify"><span lang="AR-SA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">با استفاده از رابط گرافیکی </span><span class="SpellE"><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">pdetool</span></span><span dir="rtl"></span><span lang="AR-SA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><span dir="rtl"></span> حل معادلات پاره ای  بسیار ساده است اما بهتر است كه برای درك بهتر، مسئله را به صورت دستی و با نوشتن کد حل کنیم.</span><sub><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600" /> <stroke joinstyle="miter" /><formulas /><f eqn="if lineDrawn pixelLineWidth 0" /><f eqn="sum @0 1 0" /><f eqn="sum 0 0 @1" /><f eqn="prod @2 1 2" /><f eqn="prod @3 21600 pixelWidth" /><f eqn="prod @3 21600 pixelHeight" /><f eqn="sum @0 0 1" /><f eqn="prod @6 1 2" /><f eqn="prod @7 21600 pixelWidth" /><f eqn="sum @8 21600 0" /><f eqn="prod @7 21600 pixelHeight" /><f eqn="sum @10 21600 0" /></formulas /><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f" /><lock aspectratio="t" v:ext="edit" /></shapetype /><shape id="_x0000_i1025" style="WIDTH: 9pt; HEIGHT: 17.25pt" type="#_x0000_t75" /><imagedata src="mat_files/image004.wmz" /></shape /></span></sub><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"></span></p><p /><p dir="rtl" style="DIRECTION: rtl; unicode-bidi: embed; TEXT-ALIGN: justify"><span lang="AR-SA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">فرض کنید بخواهیم معادله موج زیر را حل کنیم :</span></p><p dir="rtl" style="DIRECTION: rtl; unicode-bidi: embed; TEXT-ALIGN: justify"><span lang="AR-SA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><img hspace="0" src="http://matlabedu.googlepages.com/mat.JPG" align="baseline" border="0" /></span></p><p dir="rtl" style="DIRECTION: rtl; unicode-bidi: embed; TEXT-ALIGN: justify"><span lang="AR-SA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p dir="rtl" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: justify"><span lang="AR-SA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"><span lang="AR-SA" dir="rtl" style="FONT-SIZE: 10pt"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"><span style="mso-bidi-language: FA"></span></p><p /><p class="MsoNormal" dir="rtl"><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">معادله موج از نوع معادلات <span class="SpellE">هذلولی</span> است و برای حل آن از دستور </span><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">hyperbolic</span><span dir="rtl"></span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span> استفاده می‌كنیم.</span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d)</span><span lang="FA" dir="rtl" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"></span></p><p /><p class="MsoNormal" dir="rtl"><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">منظور از</span><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"></span></p><p /><p class="MsoNormal" dir="rtl"><span dir="rtl"></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span><span style="mso-spacerun: yes"> </span></span><span class="GramE"><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">u0</span></span><span dir="rtl"></span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span> و </span><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">ut0</span><span dir="rtl"></span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span> <span class="SpellE">شرایط</span> اولیه </span></p><p /><p class="MsoNormal" dir="rtl"><span class="SpellE"><span class="GramE"><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">tlist</span></span></span><span dir="rtl"></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span> <span lang="FA">بازه <span class="SpellE">زمانی</span> حل مسأله </span></span></p><p /><p class="MsoNormal" dir="rtl"><span class="GramE"><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">b</span></span><span dir="rtl"></span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span> <span class="SpellE">شرایط</span> <span class="SpellE">مرزی</span></span></p><p /><p class="MsoNormal" dir="rtl"><span class="SpellE"><span class="GramE"><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">p,</span></span><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">e,t</span></span><span dir="rtl"></span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span> <span class="SpellE">تقسیم</span> <span class="SpellE">بندی</span> مسأله</span></p><p /><p class="MsoNormal" dir="rtl"><span class="SpellE"><span class="GramE"><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">c,</span></span><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">a,f,d</span></span><span dir="rtl"></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span> <span lang="FA">ضرایب معادله </span></span></p><p /><p class="MsoNormal" dir="rtl"><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">می باشد</span></p><p /><p class="MsoNormal" dir="rtl"><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">نوشتن <span class="SpellE">شرایط</span> <span class="SpellE">مرزی</span> را بعدا <span class="SpellE">توضیح</span> می دهم و <span class="SpellE">لی</span> برای<span style="mso-spacerun: yes">  </span><span class="SpellE">این</span> </span><span lang="AR-SA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">مسئله </span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">از </span><span class="SpellE"><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">pdetool</span></span><span dir="rtl"></span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span> استفاده می <span class="SpellE">كنیم</span></span><span lang="AR-SA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">، یك </span><span class="SpellE"><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">pdetool</span></span><span dir="rtl"></span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span> باز <span class="SpellE">كنید</span> و <span class="SpellE">یك</span> مربع <span class="SpellE">بكشید</span>، <span class="SpellE">شرایط</span> <span class="SpellE">مرزی</span> را مشخص <span class="SpellE">كنید</span> و در <span class="SpellE">متغیرهای</span> </span><span class="SpellE"><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">b,g</span></span><span dir="rtl"></span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span dir="rtl"></span> <span class="SpellE">ذخیره</span> <span class="SpellE">كیند</span>. </span></p><p /><p class="MsoNormal" dir="rtl"><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">حل <span class="SpellE">نهایی</span> </span><span lang="AR-SA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">مسئله به این صورت می‌شود.</span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"><span lang="FA" dir="rtl" style="FONT-SIZE: 7pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"><span style="mso-spacerun: yes"> </span></span><span lang="AR-SA" dir="rtl" style="FONT-SIZE: 7pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span dir="ltr"></span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"><span dir="ltr"></span>[<span class="SpellE"><span class="GramE">p,</span>e,t</span>]=<span class="SpellE"><span class="GramE">initmesh</span></span><span class="GramE">(</span>g);</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">x=<span class="GramE">p(</span>1,:)'; </span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">y=<span class="GramE">p(</span>2,:)'; </span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">u0=<span class="SpellE"><span class="GramE">atan</span></span><span class="GramE">(</span><span class="SpellE">cos</span>(pi/2*x)); </span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">ut0=3*<span class="GramE">sin(</span>pi*x).*exp(<span class="SpellE">cos</span>(pi*y)); </span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span class="SpellE"><span class="GramE"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">tlist</span></span></span><span class="GramE"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">=</span></span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">linspace</span></span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">(0,5,50); </span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">uu</span></span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">=hyperbolic(u0,ut0,tlist,b,p,e,t,1,0,0,1);</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span class="GramE"><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Tahoma">for</span></span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"> <span class="SpellE">i</span>=1:50</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"><span style="mso-spacerun: yes">    </span><span class="SpellE"><span class="GramE">pdesurf</span></span><span class="GramE">(</span><span class="SpellE">p,t,uu</span>(:,<span class="SpellE">i</span>))</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"><span style="mso-spacerun: yes">    </span><span class="SpellE"><span class="GramE">drawnow</span></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><p class="MsoNormal" dir="ltr" style="DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"><span class="GramE"><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Tahoma">end</span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"></span></p><p /><div style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 1pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-bottom-alt: solid windowtext .75pt"><p class="MsoNormal" dir="ltr" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; DIRECTION: ltr; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; unicode-bidi: embed; TEXT-ALIGN: left; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="FONT-SIZE: 7pt; FONT-FAMILY: Tahoma"></span></p><p /><p> </p></div><p class="MsoNormal" dir="rtl"><span class="SpellE"><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">شاید</span></span><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"> شما روش من را <span class="SpellE">نپسندید</span>، <span class="SpellE">اینكه</span> <span class="SpellE">یك</span> <span class="SpellE">چیزایی</span> را <span class="SpellE">توضیح</span> <span class="SpellE">نمی</span> دهم<span style="mso-spacerun: yes">  </span>و <span class="SpellE">مطالبم</span> گنگ به نظر می‌آید.</span><span dir="ltr" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA"></span></p><p /><p class="MsoNormal" dir="rtl"><span lang="FA" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-language: FA">به نظر من اگر <span class="SpellE">واقعا</span> به <span class="SpellE">این</span> <span class="SpellE">چیزها</span> <span class="SpellE">احتیاج</span> <span class="SpellE">دارید</span> <span class="SpellE">باید</span> <span class="SpellE">برایش</span> زحمت <span class="SpellE">بكشید</span>. </span></p><p /><p style="DIRECTION: ltr"> </p></div> text/html 2007-01-04T05:31:00+01:00 matlabedu.mihanblog.com امین باشی رسم pde http://matlabedu.mihanblog.com/post/79 <p>در مطالب قبلی مقدمات استفاده از pdetoolbox را مرور کردیم و فرض می کنیم که بلد هستید جواب pde را در متغیری مثل u و تقسیم بندی مسئله  (mesh) را در متغیر هاب p,e,t ذخیره کنید.</p><p>دستور pdemesh برای رسم تقسیم بندی استفاده می شود.</p><p style="DIRECTION: ltr">pdemesh(p,e,t) <br />pdemesh(p,e,t,u) <br />h=pdemesh(p,e,t) <br />h=pdemesh(p,e,t,u)</p><p style="DIRECTION: rtl">حالات اول دستور٬ تقسیم بندی سیستم را به صورت دو بعدی رسم می کند.</p><p style="DIRECTION: rtl">حالت دوم این کار رابه صورت سه بعدی نمایش می دهد٬ ارتفاع هر گره به متغیر u (دما) بستگی دارد.</p><p style="DIRECTION: rtl"> اما اگر بخواهیم دمای هر گره را بر روی خود آن نشان دهیم به صورت عمل می کنیم:</p><p style="DIRECTION: ltr">pdemesh(p,e,t)</p><p style="DIRECTION: ltr">hold on</p><p style="DIRECTION: rtl">متغیر p دو سطر دارد که سطر اول مولفه x و سطر دوم مولفه y است.تعداد ستون های p به اندازه تعداد گره ها است. </p><p style="DIRECTION: rtl">متغیر u یک ستون و به تعداد گره ها سطر دارد. یعنی هر سطر آن متناظر با یک ستون p است.</p><p style="DIRECTION: rtl">حالا متغیر u  را بتبدیل به رشته گرده و بر روی شکل قرار می دهیم</p><p style="DIRECTION: ltr">uu=num2str(u);</p><p style="DIRECTION: ltr">nn=length(u);</p><p style="DIRECTION: ltr">for i=1:nn</p><p style="DIRECTION: ltr">text(p(1,i),p(2,i),uu(i,:))</p><p style="DIRECTION: ltr">drawnow</p><p style="DIRECTION: ltr">end</p><p style="DIRECTION: rtl"><hr /></p><p style="DIRECTION: rtl">دوستی پرسیدن که در هنگام استفاده از plot  با پیغام خطای زیر روبرو می شوند:</p><p style="DIRECTION: ltr">Attempt to execute SCRIPT plot as a function </p><p style="DIRECTION: rtl">احتمالا این دوستمون از یک متغیر یا یک ام فایل به اسم plot استفاده کرده است. برای اینکه با این خطا و خطاهایی شبیه به این روبرو نشوید اسم متغیرها را به دقت انتخاب کنید  </p> text/html 2006-12-29T02:42:00+01:00 matlabedu.mihanblog.com امین باشی تبدیل معادلات سمبولیک به عددی http://matlabedu.mihanblog.com/post/78 <p style="DIRECTION: rtl">یکی از دوستان سوال کردن چطور می شود معادلات سمبولیک را به عدد تبدیل کرد و گفتند که در نسخه های قبل از متلب ۷ با دستور numeric ٬ این کار قابل انجام بوده است.</p><p>من نمی دانم دستور numeric  چه کاری انجام می دهد٬ ولی اگر بخواهیم مقدار عددی یک عبارت سبمبولیک را پیدا کنیم از دستور subs استفاده می کنیم</p><p style="DIRECTION: ltr">syms x</p><p style="DIRECTION: ltr">y = int(x^2)</p><p style="DIRECTION: ltr">subs(y,x,3)</p><p style="DIRECTION: rtl">قالب کلی اسن دستور به این صورت است</p><p style="DIRECTION: ltr">R = subs(S)</p><p style="DIRECTION: ltr">R = subs(S,new)</p><p style="DIRECTION: ltr">R = subs(S,old,new)</p><p style="DIRECTION: rtl">در مثال بالا از حالت سوم دستور استفاده کردیم.</p><p style="DIRECTION: rtl">هر عبارت سمبولیک یک متغیر پیش فرض دارد که این متغیر اولین متغیری است که در خروجی دستور findsym دیده می شود.</p><p style="DIRECTION: ltr">syms x y z</p><p style="DIRECTION: ltr">f = z+y+x</p><p style="DIRECTION: ltr">findsym(f)</p><p style="DIRECTION: ltr">subs(f,2)</p><p style="DIRECTION: rtl">مثال زیر نحوه استفاده از حالات اول دستور را نشان میدهد.</p><p style="DIRECTION: ltr">y = dsolve('Dy=y+a')</p><p style="DIRECTION: ltr">a = 1000</p><p style="DIRECTION: ltr">C1 = 2</p><p style="DIRECTION: ltr">subs(y)</p><p style="DIRECTION: rtl" /> text/html 2006-12-20T02:42:00+01:00 matlabedu.mihanblog.com امین باشی حل pde http://matlabedu.mihanblog.com/post/77 <p>حل معادلات دیفراسیل جزیی قسمت مهمی از ریاضیات مهندسی است در متلب جعبه ابزار جداگانه ای برای حل اینگونه  معادلات قرار داده شده است .مرور کردن این جعبه ابزار به اندازه نوشتن یک کتاب وقت میگیرد.در فایل زیر توضیحات مختصری در مورد نحوه حل این گونه معادلات را نوشته ام.</p><p><a href="http://matlabedu.googlepages.com/heat.pdf">http://matlabedu.googlepages.com/heat.pdf</a></p><p /> text/html 2006-09-16T00:39:00+01:00 matlabedu.mihanblog.com امین باشی حل تحلیلی معادلات جبری http://matlabedu.mihanblog.com/post/73 <p dir="rtl">همه ما می توانیم&nbsp; معادله <span lang="en-us">a*x^2+b*x+c=0 </span>به صورت تحلیلی حل کنیم ولی فکر نمی کنم حل تحلیلی این معادله را بلد باشیم a*x^3+b*x^2+c*x+d=0 البته یک راه تقریبی برای حل آن هست ولی کاربرد زیادی ندارد.با استفاده از مطلب پیدا کردن حل تحلیلی این معادله بسیار ساده است</p> <p dir="ltr">solve(&#39;a*x^3+b*x^2+c*x+d&#39;)</p> <p dir="rtl">دستور <span lang="en-us">solve </span>برای یافتن حل تحلیلی معادات جبری بکار می رود</p> <p dir="ltr">&nbsp;<span lang="en-us">g = solve(eq)<br> g = solve(eq,var)<br> g = solve(eq1,eq2,...,eqn)<br> g = solve(eq1,eq2,...,eqn,var1,var2,...,varn)</span></p> <p dir="rtl">ورودی این دستور از نوع رشته ای و یا از توع سمبولیک و خروجی این دستور از نوع سمبولیک است.</p> <p dir="rtl">&nbsp;</p> <p dir="ltr">g= solve(&#39;a+b=1&#39;,&#39;a&#39;)</p> <p dir="ltr">class(g)</p> <p dir="rtl">دستور بالا مقدار <span lang="en-us">a</span> را طوری پیدا می کند که عبارت <span lang="en-us">a+b=1</span> برقرار باشد و دستور زیر این معادله برای <span lang="en-us">b </span>حل می کند</p> <p dir="ltr">g= solve(&#39;a+b=1&#39;,&#39;b&#39;)</p> <p dir="rtl">وقتی بخواهیم چند معادله را همزمان حل کنیم خروجی&nbsp; دستور یک structure<span lang="en-us"> </span>از نوع سمبولیک است</p> <p dir="ltr">&nbsp;g= solve(&#39;a^2+b=2&#39;,&#39;a-b&#39;)</p> <p dir="ltr">class(g)</p> <p dir="ltr"><span lang="en-us">g.a</span></p> <p dir="ltr"><span lang="en-us">g.b</span></p> text/html 2006-09-12T00:39:00+01:00 matlabedu.mihanblog.com امین باشی حل معادلات خطی http://matlabedu.mihanblog.com/post/72 <p dir="rtl">معمولا دستگاه معادلات&nbsp; خطی&nbsp; را به صورت زیر نمایش می دهند</p> <p dir="ltr"><span lang="en-us">A X = B</span></p> <p dir="rtl">روشهای زیادی برای حل این دستگاه وجود دارد که تعدای از آنها در ادامه آورده می شود.</p> <p dir="rtl"><b>حل این دستگاه با استفاده از ماتریس معکوس است </b></p> <p dir="ltr"><span lang="en-us">syms a1 a2 a3 a4</span></p> <p dir="ltr"><span lang="en-us">syms x1 x2</span></p> <p dir="ltr"><span lang="en-us">A=[a1 a2;a3 a4]</span></p> <p dir="ltr"><span lang="en-us">X=[x1;x2]</span></p> <p dir="ltr"><span lang="en-us">B=A*X</span></p> <p dir="ltr"><span lang="en-us">X=A^-1*B</span></p> <p dir="rtl"><b>تجزیه <span lang="en-us">LU</span></b></p> <p dir="ltr"><span lang="en-us">A = pascal(3);</span></p> <p dir="ltr"><span lang="en-us">[L,U]=lu(A)</span></p> <p dir="rtl"><b>روش حذفی گوس</b></p> <p dir="rtl">بهترین روش حل دستگاه معادلت خطی (سریع تر و دقیق تر) استفاده از روش حذفی گوس است </p> <p dir="rtl">اگر دستگاه را به صورت زیر در نظر بگیریم </p> <p dir="ltr">&nbsp;<span lang="en-us">A X = B</span></p> <p dir="rtl">آنگاه</p> <p dir="ltr"><span lang="en-us">X = A\B</span></p> <p dir="rtl">و اگر دستگاه به این صورت باشد </p> <p dir="ltr">&nbsp;XA = B</p> <p dir="rtl">خواهیم داشت</p> <p dir="ltr">X = B/A</p> <p dir="rtl">استفاده از شکل دوم دستگاه چندان مرسوم نیست و کمتر مورد استفاده قرار می گیرد</p> <p dir="ltr"><span lang="en-us">A=[a1 a2;a3 a4]</span></p> <p dir="ltr"><span lang="en-us">X=[x1;x2]</span></p> <p dir="ltr"><span lang="en-us">B=A*X</span></p> <p dir="ltr">X=A\B</p> <p dir="rtl">به تفاوت <span lang="en-us">X </span>با هنگامی که از روش ماتریس معکوس استفاده کردیم دقت کنید</p> <p dir="rtl">فرض کنید که <span lang="en-us">y , t </span>&nbsp;به صورت زیر موجود باشند</p> <p dir="ltr">t = [0 .3 .8 1.1 1.6 2.3]&#39;;<br> y = [.82 .72 .63 .60 .55 .50]&#39;;</p> <p dir="rtl">و بخواهیم آنها با صورت </p> <p dir="ltr"><span lang="en-us">y(t) = c1 + c2 * exp(-t)</span></p> <p dir="rtl">برازش کنیم . در این حالت دو مجهول و 6 معادله داریم یعنی دستگاه Overdetermined (معادل فارسی اش را بلد نیستم)است. </p> <p dir="rtl">برای محاسبه مجهولات می توان از دستور <span lang="en-us">fit </span> استفاده کرد</p> <p dir="ltr">f=fit(t,y,&#39;c1+c2*exp(-x)&#39;)</p> <p dir="rtl">اما روش دیگری هم برای حل معادله وجود دارد&nbsp; </p> <p dir="rtl">ماتریس <span lang="en-us">E</span> که یک متاریس 2*6<span lang="en-us"> </span>است را طوری انتخاب می کنیم که در رابطه زیر صدق کند</p> <p dir="ltr"><span lang="en-us">EC = y</span></p> <p dir="rtl"><span lang="en-us">C </span>ماتریس <span lang="en-us">&nbsp;</span>مجهولات است</p> <p dir="ltr">E = [ones(size(t)) exp(-t)]</p> <p dir="ltr"><span lang="en-us">C = E\y</span> </p> text/html 2006-09-02T01:39:00+01:00 matlabedu.mihanblog.com امین باشی BVP http://matlabedu.mihanblog.com/post/71 <p dir="rtl"><b>حل معادلات <span lang="en-us">BVP</span></b></p> <p dir="rtl">حل معادلات <span lang="en-us">BVP</span> با استفاده از دستور bvp4c انجام می شود. ساده ترین حالت استفاده از این دستور به صورت زیر است.</p> <p dir="ltr">sol = bvp4c(odefun,bcfun,solinit)</p> <p dir="rtl">فرض کنید <span lang="en-us">y </span>در معادله زیر صدق کند</p> <p dir="ltr"><span lang="en-us">D2y = sin(x) + 2x</span></p> <p dir="rtl">و داشته باشیم </p> <p dir="ltr"><span lang="en-us">y(-pi) = 10.8696</span></p> <p dir="ltr"><span lang="en-us">y(pi) = 10.8696</span></p> <p dir="rtl">با توجه به شرایط داده شده مساله از نوع <span lang="en-us">BVP</span>&nbsp; (فرق <span lang="en-us">BVP</span> با <span lang="en-us">IVP</span> رو می دانید؟) و از مرتبه دوم است.هر وقت مرتبه معادله دفرانسیل از یک بیشتر باشد، باید آن را به معادلات مرتبه اول تجزیه کنیم.</p> <p dir="rtl">اگر </p> <p dir="ltr"><span lang="en-us">y(1) = y</span></p> <p dir="ltr"><span lang="en-us">y(2) = Dy</span> </p> <p dir="rtl">خواهیم داشت</p> <p dir="ltr">dydx = [ y(2);-sin(x)+2*x];</p> <p dir="rtl">حالا شرایط مرزی را می نویسیم :</p> <p dir="rtl">اگر <span lang="en-us">res</span> مشخص کننده شرایط مرزی باشد، شرایط مرزی را طوری می نویسیم که مقدار <span lang="en-us">res</span> در آن نقاط صفر شود<span lang="en-us"> </span>یعنی</p> <p dir="ltr">res = [ ya(1)-10.8969;yb(1)-10.8969];</p> <p dir="rtl">منظور از <span lang="en-us">a,b</span> نقاطی است که مقدارمرزی در آن تعریف شده است.</p> <p dir="rtl">حالا می توانیم معادله را حل کنیم (برنامه زیر)</p> <p dir="ltr">function bvptest<br> solinit = bvpinit(linspace(-pi,pi,10),[-1 0]);<br> sol = bvp4c(@twoode,@twobc,solinit);<br> x = linspace(-pi,pi);<br> y = deval(sol,x);<br> plot(x,y(1,:));<br> %----------------------------------------------<br> function dydx = twoode(x,y)<br> dydx = [ y(2);-sin(x)+2*x];<br> %----------------------------------------------<br> function res = twobc(ya,yb)<br> res = [ ya(1)-10.8969;yb(1)-10.8969];</p> <p dir="rtl">همانطور که می بنید در خط دوم برنامه از دستور <span lang="en-us"> bvpint</span> استفاده شده است. این دستور برای تعریف حدس اولیه&nbsp; بکار می رود.</p> <p dir="ltr">solinit = bvpinit(x,yinit)</p> <p dir="rtl">بردار <span lang="en-us">x </span>بازه ای است که معادله در آن حل می شود. و <span lang="en-us">y</span> حدس اولیه است.</p> <p dir="rtl">در این مثال، معادله را در بازه <span lang="en-us">[pi,pi-] </span> حل کرده و این بازه را به 10 قسمت تقسیم کرده ایم.</p> <p dir="rtl">کار دستور <span lang="en-us">deval</span> محاسبه جواب معادله در یک بازه دیگر است، این بازه باید زیر مجموعه بازه قبلی باشد. </p> <p dir="rtl">مطالب گفته شده برای معادلات مرتبه دوم کابرد دارد و برای معادلات مرتبه بالاتر لازم<span lang="en-us"> </span>است تغیراتی در نحوه استفاده از دستور <span lang="en-us">bpvinit</span> و نحوه نعریف شرایط مرزی داده شود.</p> text/html 2006-08-27T21:38:00+01:00 matlabedu.mihanblog.com امین باشی چاپ محتویات یک دایرکتوری http://matlabedu.mihanblog.com/post/70 <p dir="rtl">تا حالا شده کخ بخوهایم محتویات یک دایرکتوری را چاپ کنید؟واسه من که خیلی پیش آمده. </p><p dir="rtl">برنامه زیر این کار را انجام می دهد و فهرست محتویات یم دایرکنپتوری را در یک فایل <span lang="en-us">rtf</span> می نویسد.</p><p dir="ltr">function get_dir_file_name<br />hfig = figure('unit','pixel','pos',[200,200,300,100],'menu','none');<br />uicontrol('pos',[10, 10,70 20],'style','checkbox','string','Directory','tag','dir') <br />uicontrol('pos',[250, 60,40 30],'string','Go','callback',@getname)<br />uicontrol('pos',[10, 40,70 20],'style','checkbox','string','Size','tag','size') <br />uicontrol('pos',[10, 70,70 20],'style','checkbox','string','Dime','tag','date') <br /><br />function getname(hobject,eventdata,hhandle)<br />Vdir = get(findall(0,'tag','dir'),'value');<br />Vsize = get(findall(0,'tag','size'),'value');<br />Vdate = get(findall(0,'tag','date'),'value');<br />dir_name = uigetdir;<br />dir_file = dir(dir_name);<br />num_file = size(dir_file);<br />fid=fopen('temp.rtf','w');<br />controlchar =0;<br />for i=3:num_file(1)<br />if ~ dir_file(i).isdir<br />fprintf(fid,'%s\t',dir_file(i).name);<br />if Vdate<br />fprintf(fid,'%s\t',dir_file(i).date);<br />end<br />if Vsize<br />fprintf(fid,'%s\t',num2str(dir_file(i).bytes));<br />end<br />fprintf(fid,'%s\n','');<br />elseif (dir_file(i).isdir &amp; Vdir)<br />fprintf(fid,'%s\t',dir_file(i).name);<br />if Vdate<br />fprintf(fid,'%s\t',dir_file(i).date);<br />end<br />fprintf(fid,'%s\t','directory');<br />fprintf(fid,'%s\n','');<br />end<br />end<br />fclose(fid);<br /> </p><p dir="rtl">  </p> text/html 2006-08-27T08:38:00+01:00 matlabedu.mihanblog.com امین باشی pdepe http://matlabedu.mihanblog.com/post/69 <p dir="rtl"><b>حل معادلات دیفرانسیل  پاره ای وابسته به زمان در یک بعد</b></p><p dir="rtl">فرض کنید <span lang="en-us">u </span>تابعی باشد که در معادله زیرصدق کند.</p><p dir="ltr"><img height="56" src="http://amin.bashi.googlepages.com/math_p39.gif" width="548" border="0" /> </p><p dir="rtl"> </p><p dir="rtl">و شرایط مرزی آن به صورت زیر باشد.</p><p dir="ltr"><img height="58" src="http://amin.bashi.googlepages.com/math101a.gif" width="410" border="0" /></p><p dir="rtl">این معادله می تواند معادله حاکم بر انتقال حرارت در یک تیغه , استوانه و یا کره باشد<span lang="en-us">؛</span> در این صورت <span lang="en-us"> f </span>عبارت مربوط به شار انتقال حرارت و <span lang="en-us">s </span>مربوط به تولید یا مصرف انرژی می باشد.</p><p dir="rtl">برای خل این معادله از دستور <span lang="en-us">pdepe</span> استفاده می شود.</p><p dir="ltr">  sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan)</p><p dir="rtl"><span lang="en-us">m</span> : مشخص کننده هندسه مساله است. 0 برای تیغه، 1 برای سیلندر و 2 برای کره</p><p dir="rtl"><span lang="en-us">pdefun</span> : تابعی که معادله را تعریف می کند</p><p dir="ltr">[c,f,s] = pdefun(x,t,u,dudx)</p><p dir="rtl"><span lang="en-us">c, f, s</span> همان پارامترهای معادله دیفرانسیل پاره ای هستند</p><p dir="rtl"><span lang="en-us">icfun</span> : تابعی که شرایط اولیه را تعریف می کند </p><p dir="ltr">u = icfun(x)</p><p dir="rtl"><span lang="en-us">bcfun</span> : تابعی که شرایط مرزی را بیان می کند</p><p dir="ltr">[pl,ql,pr,qr] = bcfun(xl,ul,xr,ur,t)</p><p dir="rtl">اندیس <span lang="en-us">l </span>مربوط <span lang="en-us">x0 , </span>و اندیس <span lang="en-us">r</span> مربوط به <span lang="en-us">xn</span> (نقاط ابتدایی و انتهایی بردار <span lang="en-us">xmesh</span> )</p><p dir="rtl"><span lang="en-us">xmesh</span> : برداری شامل  نقاط <span lang="en-us">x1</span> تا <span lang="en-us">xn</span>  </p><p dir="rtl"><span lang="en-us">tspan </span>: بردار زمان متناظر با بردار <span lang="en-us">xmesh</span>  </p><p dir="rtl"><b>مثال</b></p><p dir="rtl">یک لوله استوانه ای را در نظر بگیرید که از وسط با یک<span lang="en-us">&nbsp;</span>غشا به دو نیم تقسیم شده است.در یک طرف این لوله گاز <span lang="en-us">A</span> با فشار 10<span lang="en-us">&nbsp;</span>بار و در طرف دیگر گاز <span lang="en-us">B</span> وجود دارد.اگر <span lang="en-us">t=0 </span>غشا پاره شود گاز <span lang="en-us">A </span>در <span lang="en-us">B</span> نفوذ می کند تغییرات فشار جزیی گاز <span lang="en-us">A</span> را در طول لوله حساب کنید.</p><p dir="rtl">معادله حاکم بر این سیستم به این شکل است </p><p dir="ltr"><img height="71" src="http://amin.bashi.googlepages.com/eqpdepe.JPG" width="190" border="0" /></p><p dir="rtl"><span lang="en-us">D</span> ضریب نفوذ گاز <span lang="en-us">A</span> در <span lang="en-us">B</span> است و معمولا از مرتبه <span lang="en-us">1e-5 </span>است.</p><p dir="rtl">شرایط اولیه </p><p dir="ltr"><img height="63" src="http://amin.bashi.googlepages.com/eqpdepe2.JPG" width="170" border="0" /></p><p dir="rtl">و شرایط مرزی</p><p dir="ltr"><img height="63" src="http://amin.bashi.googlepages.com/eqpdepe1.JPG" width="173" border="0" /></p><p dir="rtl">با مقایسه معادله<span lang="en-us">3 </span>با معادله <span lang="en-us">1</span> می بینیم که </p><p dir="ltr"><span lang="en-us">m = 0</span></p><p dir="ltr"><span lang="en-us">c = 1</span></p><p dir="ltr"><span lang="en-us">s = 0</span></p><p dir="ltr"><span lang="en-us">f = 1e-5 * DuDx </span></p><p dir="rtl">پس تابع <span lang="en-us">pdefun</span> به این صورت تعریف می شود.</p><p dir="ltr">function [c,f,s] = pdefun0(x,t,u,DuDx)<br />c = 1;<br />f = 1e-5*DuDx;<br />s = 0;</p><p dir="rtl">تابع <span lang="en-us">pdeic</span> </p><p dir="ltr">function u0 = pdeic0(x)<br />if ((x &gt;= 0) &amp; (x &lt;= .5))<br /><span lang="en-us">     </span>u0=10;<br />elseif ((x &gt;= 0.5) &amp; (x &lt;= 1))<br /><span lang="en-us">    </span>u0=0;<br />end</p><p dir="rtl"> و تابع <span lang="en-us">pdebc</span> </p><p dir="ltr">function [pl,ql,pr,qr] = pdebc0(xl,ul,xr,ur,t)<br />pl = 0;<br />ql = 100000;<br />pr = 0;<br />qr = 100000;</p><p dir="rtl">حالا با استفاده از <span lang="en-us">pdepe</span> (برنامه زیر) می توانیم معادله را حل کنیم. </p><p dir="ltr">function pdex<br />x=linspace(0,1,20);<br />t=linspace(0,30000,20);<br />m=0;<br />sol = pdepe(m,@pdefun0,@pdeic0,@pdebc0,x,t);<br />u=sol(:,:,1);<br />uu=u;<br />surf(x,t,u)<br />title('Numerical solution computed with 20 mesh points.')<br />xlabel('Distance x')<br />ylabel('Time t')<br />%--------------------------------------------<br />function [c,f,s] = pdefun0(x,t,u,DuDx)<br />c = 1;<br />f = 1e-5*DuDx;<br />s = 0;<br />%---------------------------------------------<br />function u0 = pdeic0(x)<br />if ((x &gt;= 0) &amp; (x &lt;= .5))<br />u0=10;<br />elseif ((x &gt;= 0.5) &amp; (x &lt;= 1))<br />u0=0;<br />end<br />%---------------------------------------------<br />function [pl,ql,pr,qr] = pdebc0(xl,ul,xr,ur,t)<br />pl = 0;<br />ql = 100000;<br />pr = 0;<br />qr = 100000;<br /> </p> text/html 2006-08-23T07:38:00+01:00 matlabedu.mihanblog.com امین باشی معادلات با درجه بالاتر http://matlabedu.mihanblog.com/post/68 <p dir="rtl"><b>حل عددی معادلات دیفرانسیل با درجات بالاتر از یک</b></p> <p dir="rtl">&nbsp;حتما می دانید که هر معادله دیفرانسیل با درجه <span lang="en-us">n </span>&nbsp;را می شود به <span lang="en-us">n </span>&nbsp;معادله درجه اول تبدیل کرد.از این روش برای حل معادلات با درجه بالاتر از یک استفاده می شود.</p> <p dir="rtl">معادله زیر را در نظر بگیرید:</p> <p dir="rtl"> <img border="0" src="http://amin.bashi.googlepages.com/eqdif2.JPG" width="151" height="32" align="left"></p> <p dir="rtl">برای حل تحلیلی این معادله کافی است بنویسیم</p> <p dir="ltr">f=dsolve(&#39;D2y =(y-6*Dy)/t/4&#39;,&#39;y(1)=2&#39;,&#39;y(2)=3&#39;);</p> <p dir="ltr">&nbsp;ezplot(f,[1 , 10]);</p> <p dir="rtl">و اما حل عددی :</p> <p dir="rtl">فرض کنید</p> <p dir="rtl"> <img border="0" src="http://amin.bashi.googlepages.com/eqdif2-2.JPG" width="80" height="66" align="left"></p> <p dir="ltr">&nbsp;</p> <p dir="rtl">در نتیجه خواهیم داشت </p> <p dir="rtl"> <img border="0" src="http://amin.bashi.googlepages.com/eqdif2-4.JPG" width="121" height="89" align="left"></p> <p dir="rtl">&nbsp;</p> <p dir="rtl">&nbsp;</p> <p dir="rtl">و اگر آن را به شکل ماتریس بنویسیم</p> <p dir="ltr"><img border="0" src="http://amin.bashi.googlepages.com/eqdif2-3.JPG" width="158" height="104"></p> <p dir="rtl">حالا باید تابع <span lang="en-us">odefun</span> را بنوسیم </p> <p dir="ltr">function dy=odefun(t,y)<br> A = [0 1;1/t/4 -6/t/4];<br> dy = A*y;</p> <p dir="rtl">و در خط فرمان مطلب دستور زیر را </p> <p dir="ltr">[t,y]=ode45(&#39;odefun&#39;,[1 ,10],[2;3]);</p> <p dir="rtl">متغییر <span lang="en-us">y </span>دو ستون دارد که ستون اول به <span lang="en-us">y1</span> و ستون دوم یه <span lang="en-us">y2 </span>اختصاص دارد که <span lang="en-us">y1 </span>جواب معادله و <span lang="en-us">y2 </span> مشتق آن است.</p> <p dir="rtl">&nbsp;</p> <p dir="ltr">&nbsp;</p> text/html 2006-08-20T23:38:00+01:00 matlabedu.mihanblog.com امین باشی حل عددی IVP http://matlabedu.mihanblog.com/post/67 <p dir="rtl"><b>حل عددی معادلات دیفرانسیل معمولی <span lang="en-us">(IVP)</span> </b></p> <p dir="rtl">روشهای زیادی برای حل عددی معادلات دیفرانسیل وجود دارد که هر کدام از این روشها برای نوعی از معادلات کاربرد دارد در مطلب نیز توابع متفاوتی بر اساس این روشها وجود دارد برای مثال <span lang="en-us">0de45</span> بر اساس روش رانگ کوتا عمل می کند.</p> <p dir="ltr">[t,Y] = solver(odefun,tspan,y0)</p> <p dir="rtl">فرم کلی حل عددی معادلات دیفرانسیل به این صورت است که به جای <span lang="en-us">solver</span> در دستور بالا نوع <span lang="en-us">ode</span> (برای مثال <span lang="en-us">ode45</span>) مورد نظر باید ذکر شود. </p> <p dir="rtl">منظور از <span lang="en-us">odefun</span> تابعی است که در آن مادلات دیفرانسیل مورئ نظر تعریف شده است و به شکل&nbsp; زیر است. <span lang="en-us">t </span>متغیر مستقل&nbsp; اسکالر&nbsp; و <span lang="en-us">y </span>متغیر وابسته به صورت بردار ستونی&nbsp; است.</p> <p dir="ltr"><span lang="en-us">dydt = odefun(t,y)</span></p> <p dir="rtl">منظور از <span lang="en-us">tspan</span> بازه ای است که معادله در آن حل می شود و <span lang="en-us">y0</span> شرایط اولیه است.</p> <p dir="rtl">مثال)</p> <p dir="rtl">کنترل سطح مایع در یک مخزن&nbsp; یک مثال کلاسیک&nbsp; است که در اکثر کتابهای کنترل دیده می شود.</p> <p dir="rtl">معادله دیفرانسیل این فرآیند به این صورت است<span lang="en-us"> </span>.</p> <p dir="rtl"><img border="0" src="http://amin.bashi.googlepages.com/eq.jpg" width="175" height="88" align="left"></p> <p dir="rtl">&nbsp;</p> <p dir="rtl">&nbsp;</p> <p dir="rtl"><span lang="en-us">q </span>دبی حجمی، <span lang="en-us">h </span> ارتفاع، <span lang="en-us">A</span> سطح مقطع و <span lang="en-us">R</span> مقاومت شیر خروجی مخزن است.</p> <p dir="rtl">برای حل این معادله ابتدا تابع <span lang="en-us">odefun</span> را تشکیل می دهیم.</p> <p dir="rtl">فرض کنید <span lang="en-us">A=1, R=1</span> و تغییرات دبی ورودی به صورت سینوسی باشد. </p> <p dir="ltr">function dy=testode(t,y)<br> dy=sin(t)-y;</p> <p dir="rtl">پس از ذخیره کردن نابع ، در خط فرمان مطلب دستور زیر را می نوسییم <span lang="en-us">:</span></p> <p dir="ltr"><span lang="en-us">[t,y]=ode45(&#39;testode&#39;,[0 ,10],0);</span>&nbsp; </p>