آموزش مطلب http://matlabedu.mihanblog.com 2010-03-10T16:00:20+01:00 text/html 2009-05-28T08:09: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-23T00:07:00+01:00 matlabedu.mihanblog.com امین باشی تعریف هندسه pde http://matlabedu.mihanblog.com/post/83 <p class="MsoNormal" dir="RTL" style="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">این مقاله حاوی اصطلاحات عجیب و غریب است و خواندن آن برای افراد زیر 7 سال توصیه نمی</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">شود</span></p> <p class="MsoNormal" dir="RTL" style="text-align: right; margin: 5.0pt 0cm"> <span lang="AR-SA" style="font-family: Arial">روش کار متلب برای حل معادلات پاره ای رامی توانید در آدرس زیر ببنید</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed; margin: 5.0pt 0cm"> <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="text-align: justify; margin-left: 0cm; margin-right: 0cm; margin-top: 12.0pt; margin-bottom: 5.0pt"> <span lang="FA" style="font-family: Arial">اگر ارل بالا را باز کنید می</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">بینید که برای حل</span><span dir="LTR" style="font-family: Arial"> pde </span> <span lang="FA" style="font-family: Arial">ابتدا باید ماتریس هندسه مسئله</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 lang="FA" style="font-family: Arial">این ماتریس را تجزیه می</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">کنیم که به ماتریس حاصل ماتریس هندسه تجزیه شده می</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">گویند</span><span dir="LTR" style="font-family: Arial">(<i>Decomposed Geometry matrix)</i></span><span lang="FA" style="font-family: Arial">. این ماتریس ناحیه</span><span lang="FA">ای</span><span lang="FA" style="font-family: Arial"> </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="text-align: justify; margin-left: 0cm; margin-right: 0cm; margin-top: 12.0pt; margin-bottom: 5.0pt"> <span lang="FA" style="font-family: Arial">مثال زیر روش بدست آوردن این دو ماتریس را نشان می</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">دهد.</span></p> <p class="MsoNormal" dir="RTL" style="text-align: justify; margin-left: 0cm; margin-right: 0cm; margin-top: 12.0pt; margin-bottom: 5.0pt"> <span lang="FA" style="font-family: Arial">مثال)</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed; margin: 5.0pt 0cm"> <span style="font-family: Arial">s = tf(&#39;s&#39;);</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed; margin: 5.0pt 0cm"> <span style="font-family: Arial">sys = 1/(s+1)^2;</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed; margin: 5.0pt 0cm"> <span style="font-family: Arial">nyquist(sys)</span></p> <span lang="FA" dir="RTL" style="font-size: 12.0pt; font-family: Arial">می بینید که نایکویست این تابع شبیه قلب است؛ و همانطور که می</span><span lang="FA" dir="RTL" style="font-size: 12.0pt; font-family: Times New Roman">‌</span><span lang="FA" dir="RTL" style="font-size: 12.0pt; font-family: Arial">دانید نمودار نایکویست در صفحه اعداد مختلط رسم می</span><span lang="FA" dir="RTL" style="font-size: 12.0pt; font-family: Times New Roman">‌</span><span lang="FA" dir="RTL" style="font-size: 12.0pt; font-family: Arial">شود. برای حل &nbsp;یک معادله پاره ای را بر روی این شکل باید آن را از فضای اعداد مختلط به فضای اعداد حقیقی تبدیل کنیم(جزییات کار به عهده خودتان).</span><p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed; margin: 5.0pt 0cm"> <span style="font-family: Arial">w=-10:.1:10;</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed; margin: 5.0pt 0cm"> <span style="font-family: Arial">x=(1-w.^2)./(1+w.^2).^2;</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed; margin: 5.0pt 0cm"> <span style="font-family: Arial">y=2*w./(1+w.^2).^2;</span></p> <p class="MsoNormal" style="text-align: left; direction: ltr; unicode-bidi: embed; margin: 5.0pt 0cm"> <span style="font-family: Arial">plot(x,y)</span></p> <p class="MsoNormal" dir="RTL" style="margin: 5.0pt 0cm" align="right"> <span lang="FA" style="font-family: Arial">بد نشد ولی یک مقدار تمیز کاری می</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">خواهد. </span></p> <p class="MsoNormal" style="text-align: left; text-autospace: none; 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; text-autospace: none; 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; text-autospace: none; 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; text-autospace: none; 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="text-autospace: none"> <span lang="FA" style="font-family: Arial">حالا یک مقدار چرخش </span></p> <p class="MsoNormal" style="text-align: left; text-autospace: none; 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; text-autospace: none; 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="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">اگر به معادلات</span><span dir="LTR" style="font-family: Arial"> x,y </span><span lang="FA" style="font-family: Arial">دقت کنید می بینید هنگامی که</span><span dir="LTR" style="font-family: Arial"> w </span> <span lang="FA" style="font-family: Arial">به سمت بینهایت میرود</span><span dir="LTR" style="font-family: Arial"> x,y </span><span lang="FA" style="font-family: Arial">برابر با صفر می شوند ولی در عمل نمی توان</span><span dir="LTR" style="font-family: Arial"> w </span> <span lang="FA" style="font-family: Arial">را به سمت بی نهایت میل داد٬ پس صفر را خودمان اضافه کردیم.</span></p> <p class="MsoNormal" dir="RTL" style="margin: 5.0pt 0cm" align="right"> <span lang="FA" style="font-family: Arial">هنوز یک مقدر پهن است.</span></p> <p class="MsoNormal" dir="LTR" style="text-align: left; text-autospace: none; 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="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">الان باید ماتریس هندسه را بنویسم</span></p> <p class="MsoNormal" dir="RTL" style="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">هر ستون این ماتریس مربوط به یک شکل است یعنی اگر بخواهیم معادله را همزمان برای دو شکل حل کنیم ماتریس دو ستون خواهد داشت</span><span dir="LTR" style="font-family: Arial">.</span></p> <p class="MsoNormal" dir="RTL" style="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">در این مثال یک شکل داریم و ماتریس یک ستونی است</span><span dir="LTR" style="font-family: Arial">.</span></p> <p class="MsoNormal" dir="RTL" style="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">اگر هندسه</span><span dir="LTR" style="font-family: Arial"> :</span></p> <p class="MsoNormal" dir="RTL" style="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">به شکل دایره باشد در سطر اول عدد ۱ ٬&nbsp;در سطر دوم و سوم به ترتیب مختصات</span><span dir="LTR" style="font-family: Arial"> x,y </span><span lang="FA" style="font-family: Arial">مرکز دایره و در سطر ۴ شعاع دایره را می نویسیم</span><span dir="LTR" style="font-family: Arial">.</span></p> <p class="MsoNormal" dir="RTL" style="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">به شکل چند ضلعی باشد در سطر اول عدد ۲ ٬&nbsp;در سطر دوم تعداد اضلاع</span><span dir="LTR" style="font-family: Arial">(n) </span><span lang="FA" style="font-family: Arial">٬</span><span lang="FA" dir="LTR" style="font-family: Arial"> </span><span lang="FA" style="font-family: Arial">در</span><span dir="LTR" style="font-family: Arial"> n </span><span lang="FA" style="font-family: Arial">سطر بعدی</span><span dir="LTR" style="font-family: Arial"> x</span><span lang="FA" style="font-family: Arial">ها و در</span><span dir="LTR" style="font-family: Arial"> n </span><span lang="FA" style="font-family: Arial">سطر بعد از آن</span><span dir="LTR" style="font-family: Arial"> y </span><span lang="FA" style="font-family: Arial">ها می نویسیم</span><span dir="LTR" style="font-family: Arial">.</span></p> <p class="MsoNormal" dir="RTL" style="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">به شکل</span><span lang="FA" dir="LTR" style="font-family: Arial"> </span><span lang="FA" style="font-family: Arial">چهار ضلعی باشد در سطر اول</span><span dir="LTR" style="font-family: Arial">&nbsp;</span><span lang="FA" style="font-family: Arial">&nbsp;عدد ۳ ٬&nbsp;را می نویسیم. سطرهای بعدی را مانند حلت چند ظلعی پر می کنیم.</span></p> <p class="MsoNormal" dir="RTL" style="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">به شکل بیضی باشد در سطر اول عدد ۴ ٬ در&nbsp;سطر دوم و سوم به ترتیب مختصات </span> <span dir="LTR" style="font-family: Arial">x,y</span><span lang="FA" style="font-family: Arial">&nbsp;مرکز بیضی در سطر چهار و پنج اندازه قطر بزرگ و کوچک بیضی و در سطر ششم زاویه چرخش&nbsp;قرار می گیرد.</span></p> <p class="MsoNormal" dir="RTL" style="text-align: right; margin: 5.0pt 0cm"> <span lang="FA" style="font-family: Arial">حالا می</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">توانیم ماتریس هندسه &nbsp;بنویسیم.</span></p> <p class="MsoNormal" dir="RTL" style="margin: 5.0pt 0cm" align="right"> <span lang="FA" style="font-family: Arial">شکل ما از نوع چند ضلعی است پس در سطر اول عدد 2 را می</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">نویسیم.توابع </span><span dir="LTR" style="font-family: Arial">x,y</span><span lang="FA" style="font-family: Arial"> دو تا صفر دارند، یکی در بی</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">نهایت و یکی در منفی بی</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">نهایت ولی ما فقط یکی را اضافه کردیم چون هر نقطه را فقط 1 بار باید بیاوریم.</span></p> <p class="MsoNormal" dir="LTR" style="text-align: left; text-autospace: none; direction: ltr; unicode-bidi: embed"> <span style="font-family: Arial; color: black">x = XY(1,:)&#39;;</span></p> <p class="MsoNormal" dir="LTR" style="text-align: left; text-autospace: none; direction: ltr; unicode-bidi: embed"> <span style="font-family: Arial; color: black">y = XY(2,:)&#39;;</span><span dir="RTL" style="font-family: Arial"> </span></p> <p class="MsoNormal" dir="LTR" style="text-align: left; text-autospace: none; 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; text-autospace: none; 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; text-autospace: none; direction: ltr; unicode-bidi: embed"> <span style="font-family: Arial; color: black">dl = decsg(gd);</span></p> <p class="MsoNormal" dir="RTL" style="text-autospace: none" align="right"> <span lang="FA" style="font-family: Arial; color: black">تا اینجا توانستیم که ماتریس هندسه و ماتریس هندسه تجزیه شده را بدست آوریم. اگر به ارلی در اول مقاله آوردم نگاه کنید می</span><span lang="FA" style="color: black">‌</span><span lang="FA" style="font-family: Arial; color: black">بیند که 3 مرحله اول حل الگوریتم معادلات پاره</span><span lang="FA" style="color: black">‌</span><span lang="FA" style="font-family: Arial; color: black">ای را انجام داده</span><span lang="FA" style="color: black">‌</span><span lang="FA" style="font-family: Arial; color: black">ایم. این 3 مرحله را می</span><span lang="FA" style="color: black">‌</span><span lang="FA" style="font-family: Arial; color: black">توان در یک ام-فایل خلاصه کرد. برای نوشتن این ام-فایل از دستور </span> <span dir="LTR" style="font-family: Arial; color: black">wgeom</span><span lang="FA" style="font-family: Arial; color: black"> استفاده می</span><span lang="FA" style="color: black">‌</span><span lang="FA" style="font-family: Arial; color: black">کنیم.</span></p> <p class="MsoNormal" dir="LTR" style="text-align: left; text-autospace: none; direction: ltr; unicode-bidi: embed"> <span style="font-family: Arial; color: black">fid=wgeom(dl,</span><span style="font-family: Arial; color: #A020F0">&#39;cardiodgeom&#39;</span><span style="font-family: Arial; color: black">) </span></p> <p class="MsoNormal" dir="RTL" style="text-autospace: none" align="right"> <span lang="FA" style="font-family: Arial">این دستور یک ام-فایل با اسم </span> <span dir="LTR" style="font-family: Arial">cardiodgeom</span><span lang="FA" style="font-family: Arial"> ایجاد می</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">کند. اگر به هر دلیلی این فایل ایجاد نشود مقدار </span> <span dir="LTR" style="font-family: Arial">fid</span><span lang="FA" style="font-family: Arial"> برابر با </span><span dir="LTR" style="font-family: Arial">-1 </span> <span lang="FA" style="font-family: Arial">&nbsp;می</span><span lang="FA">‌</span><span lang="FA" style="font-family: Arial">شود.</span></p> <p class="MsoNormal" dir="RTL" style="text-autospace: none" align="right"> <span lang="FA" style="font-family: Arial">ادامه دارد...</span></p> <p class="MsoNormal" style="text-align: right; text-autospace: none; unicode-bidi: embed">&nbsp;</p> <p align="right">&nbsp;</p> <p class="MsoNormal" style="text-align: right; unicode-bidi: embed; margin: 5.0pt 0cm">&nbsp;</p> text/html 2007-01-28T21:01:00+01:00 matlabedu.mihanblog.com امین باشی معادلات هذلولی ۲ http://matlabedu.mihanblog.com/post/82 <p style="DIRECTION: rtl">مثال مطلب قبلی در نظر بگیرید٬ یک بار دیگر می خواهیم این مثال را حل کنیم.</p><p style="DIRECTION: rtl">اولین تغییری که در حل مثال می دهیم٬ نحوه شبکه بندی مسئله است.به نظر می آید که تعداد گره ها برای حل مسئله کافی نباشد با استفاده از دستور refinemesh تعداد گره ها بیشتر می کنیم.با زیاد  شدن گره ها تعتداد محاسبات و زمان آن بالا تر می رود ولی ممکن است که نتیجه کار چندان تغییر نکند و یا بهتر باشد که نوع شبکه را عوض کنیم. برای درک بهتر می توانید به کتاب هایی در مورد روش تفاضل محدود-متلب از این روش استفاده می کند- مراجعه کنید.</p><p style="DIRECTION: ltr">  <font face="Courier New" size="2"></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 border="0" src="Http://mihanblog.com/Yahoo/1.Gif">'; </p><p style="DIRECTION: ltr">y=p(2,<img border="0" src="Http://mihanblog.com/Yahoo/1.Gif">'; </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-25T02:01: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-04T02:01: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-28T23:12: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-19T23:12: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-15T21:09: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-11T21:09: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-01T22:09: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-27T18:08: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-27T05:08: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-23T04:08: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-20T20:08: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> text/html 2006-08-19T22:08:00+01:00 matlabedu.mihanblog.com امین باشی fourier http://matlabedu.mihanblog.com/post/66 <p dir="rtl"><b>سری فوریه (2)</b></p> <p dir="rtl">حتما می دانید که سری فوریه هر تابع، تقریبی از آن تابع است.هرچه چملات سری بیشتر باشد مقدار سری به مقدار واقعی تابع نزدیک تر است.</p> <p dir="rtl">یکی از راه های بدست آوردن سری فوریه یک تابع استفاده از دستور <span lang="en-us">fit </span>است.این دستور توانایی محاسبه سری فوریه با حداکثر 8 جمله را دارد.</p> <p dir="ltr"><span lang="en-us">x=[-pi:.1:pi]&#39;;</span></p> <p dir="ltr"><span lang="en-us">y=sin(x);</span></p> <p dir="ltr">f=fit(x,y,&#39;fourier1&#39;)</p> <p dir="rtl">به جای fourier1 می توان&nbsp; fourier2...fourier8 را قرار داد.</p> <p dir="rtl">توابع زیر هم نیاز معرفی ندارند/</p> <p dir="rtl"><b>تابع گاما</b></p> <p dir="ltr">Y = gamma(A)</p> <p dir="rtl"><b>تابع خطا</b></p> <p dir="ltr">Y = erf(X)</p>