تبلیغات
آموزش مطلب - مطالب امین باشی

سری فوریه

نویسنده :امین باشی
تاریخ:پنجشنبه 26 مرداد 1385-11:08 ق.ظ

سری فوریه

فرض کنید تابع f به صورت زیر تعریف شده یاشد.

 

 

تابع f یک تابع تناوبی با دوره 2L می باشد و  ثابتهای بسط فوریه  این تابع از روایط زیر بدست می آیند

 

برای محاسبه این ثوابت از دستور int استفاده می کنیم

R = int(S)
R = int(S,v)
R = int(S,a,b)
R = int(S,v,a,b)

استفاده از این دستور ببسیار ساده است.S عبارتی است که می خواهیم از آن انتگرال بگیریم، v متغیر مستقل است و a,b حدود انتگرال گیری هستند

اولین قدم برای استفاده از این دستور تعریف متغیرهاست

syms w A t n

و بعد از آن محاسبه ثوابت

a0= w/pi*int('A*sin(w*t)','t',0,pi/w)

an=w/pi*int('A*sin(w*t)*cos(n*w*t)','t',0,pi/w)

bn=w/pi*int('A*sin(w*t)*sin(n*w*t)','t',0,pi/w)

قدم بعدی یافتن مقدار ثوابت در n های مختلف است.برای این کار از دستور subs استفاده می کنیم

subs(bn,n,3)

دستور بالا مقدار bn را به ازای n=3 محاسبه می کند

 مقدار an را در n=1  مبهم است  چون صورت و  مخرج an صفر می شود .با استفاده از دستور limit حد این عبارت را در n=1 می توان بدست آورد.

limit(an,n,1,'right')

limit(an,n,1,'left')



نوع مطلب : سری فوریه 

لاپلاس

نویسنده :امین باشی
تاریخ:دوشنبه 23 مرداد 1385-06:08 ق.ظ

تبدیل لاپلاس

تبدیل لاپلاس یکی از روشهای حل معادلات دیفرانسیل است که در حل معدلات دیفرانسیل معمولی و جزیی کاربرد فروانی دارد.برای لاپلاس گرفتن از دستور laplace استفاده می شود.

برای استفاده از این دستور ابتدا باید متغیر مستقل را تعریف کرد

syms t

البته هر متغیر دلخواه دیگری را هم می شود تعریف کرد و تابع برگشتی هم بر حسب s می باشد.

r = laplace(t)

 برای لاپلاس معکوس گرفتن هم از دستور ilaplace استفاده می شود.

ilaplace(r)

حالا فرض کنید بخواهید از تابع 1 لاپلاس بگیرید و بنویسید 

laplace(1)

 نوشتن این دستور به این شکل اشتباه است و موجب خطا می شود، برای این کار باید 1 را به صورت نماد تعریف کنیم

m=sym(1)

ilaplace(m)

 



نوع مطلب : لاپلاس 

dsolve

نویسنده :امین باشی
تاریخ:شنبه 7 مرداد 1385-06:07 ق.ظ

حل معادلات دیفرانسیل معمولی

وقتی که می خواهیم به صورت تحلیلی از مطلب استفاده کنیم باید از Symbolic Math Toolbox استفاده کنیم . این جعبه ابزار مجموعه ای از دستورات مطلب است که برای تعریف و کار با متتغیرها به صورت نمادین جمع آوری شده اند.

  a=sqrt(sym(2))

f = sym('x^2 + x + 1')

ezplot(f)

دستور dsolve از این جعبه ابزار برای حل معادلات دیفرانسیل استفاده می شود.

dsolve('Dy=x')

ans =

x*t+C1

حتما می دانید که عملگر D هم ارز با dy/dx است و هدف ازدستور بالا یافتن جواب معادله dy/dx=x ؟!

متغیر پیش فرض این دستور t است بنابراین x در دستور بالا به صورت یک ثابت عمل می کند.

dsolve('Dy=x','x')

ans =

1/2*x^2+C1

پس هنگامی که متغیر مستقل معادله، t نباشد حتما باید ذکر شود.

در بسیاری از موارد جواب خصوصی معادله مورد نیاز است؛ فرض کنید بخواهیم معادله D2y=x را حل کنیم بطوریکه

y(1)=3

y(2)=5

 برای اینکار از این حالت دستور dsolve استفاده می کنیم

dsolve('D2y=x','y(1)=3,y(2)=5', 'x')

شکل کلی استفاده از این دستور  یکی از اشکال زیر است که با هم معادل هستند

 r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v')
r = dsolve('eq1','eq2',...,'cond1','cond2',...,'v')

منظور از v متغیر مستقل، cond شرط اولیه و eq معادله دفرانسیل مورد نظر است.

فزض کنید بخواهیم دستگاه معادلات دیفرانسیل زیر را حل کنیم(متغیر مستقل را t فرض کنید).

Dx = y

Dy=-x

به این صورت عمل می کنیم

r=dsolve('Dx = y', 'Dy = -x')



نوع مطلب : dsolve 

مطلب و ریاضیات

نویسنده :امین باشی
تاریخ:پنجشنبه 5 مرداد 1385-06:07 ق.ظ

فکر کنم که در مورد گرافیک خیلی حرف زده‌ام و تقربیا همه مطالب اساسی را گفته‌ام و از این به بعد به دیگر قسمتهای مطلب می پردازم .

مطلب یک نرم افزار مهندسی است و اولین و مهمترین چیزی که یک مهندس باید بلد باشد ریاضیات است. اکثر رشته‌های مهندسی در دوره  کارشناسی حدود 19 واحد ریاضی پاس می کنند ولی خیلی ها بلد نیستند در این ضمینه از مطلب استفاده کنند .از این به بعد قرار است یاد بگیرم که ( من هم خیلی چیزها را بلد نیستم) در حد ریاضیات دوره کارشناسی از مطلب استفاده کنیم.

برای شروع از معادلات دیفراسیل معمولی شروع می کنم و حل تحلیلی و پس از آن به سراغ حل عددی می روم



نوع مطلب : خودم 

guide

نویسنده :امین باشی
تاریخ:پنجشنبه 22 تیر 1385-09:07 ق.ظ

guide

در مورد گرافیک در مطلب خیلی صحبت کردم اما بدون صحبت از guide مطالبم ناقص است.

ویرایشگر رابط گرافیکی(guide) که از این پس ویرایشگر نامیده می شود  ساده ترین راه برای ایجاد رابط گرافیکی است .توسط این ویرایشگر شبیه تمام زبانهای ویژوال کافی است که مکان تکمه ها، نمودارها، منوها و ... انتخاب کرده و رابط گرافیکی خوتان را ایجاد کنید.

اگر از ویرایشگر مطلب 7.0 استفاده کنید نمی توانید از رابط ایجاد شده در نسخه های پایین تر مطاب استفاده کنید. البته امکان ذخیره کردن رابط به صورت m-file که در نسخه های پایین تر قابل استفاده باشد نیز وجود دارد اما  ترچیح می دهم که این کار را نکنم و در صورت لزوم رایط گرافیکی را مستقیما با نوشتن دستورات مطلب ایجاد کنم.

  ویرایشگر رابط گرافیکی ایجاد شده را در دو فایل ذخیره می کند.یک fig-file و یک m-file . چیدمان نمودارها و .... در fig-file ذخیره می شود و m-file برای برنامه نویسی استفاده می شود.

اولین کار برای ایجاد رابط - پیدا کردن یک تیکه گچ ، کشیدن رابط و ... رابط اسم یک بازی است که قدیما  از صبح تا شب بازی می کردیم - کشیدن یک طرح از پنجره مورد نظر روی کاغذ است .بعد از این کار دستور guide را اجرا کرده و طرح خود را در ویرایشگر می کشیم .

بعد از این کار باید ویژگی های اشیا قرار داده شده را تنظیم کنیم.مهمترین ویژگی که باید تنظیم شود ویژگی tag است.برای دسترسی به لیست ویژگی ها روی شئ مورد دوبار کلیک کنید.

در قسمت tag یک اسم یکتا را وارد کنید، اگر در لیست باز شده به قسمت callback  (اگر وجود داشته باشد) نگاه کنید خواهید دید که در مقابل عبارت automatic ذکر شده است.معنی این عبارت این است که در m-file ایجاد شده یک تابع به اسم tag_Callback ایجاد می شود گه به جای tag اسمی که وارد کردید قرار می گیرد(البته گاهی بهتر است که برای گروهی از اشیا یک اسم انتخاب کنید).

پس از ذخیره یرنامه m-file آن باز می شود. در m-file ایجاد شده توضیحات کامل برای کار آن توسط مطلب قراردهده شده است .در اینجا مقداری از آنها را برسی می کینم. 

ویرایشگر را باز کنید و یک Edit Text، یک Static Text . یک Push Bottun در صفحه باز شده قرار دهید(در منو سمت چپ می توانید اینها را پیدا کنید).بر روی هرکدام از این اشیا کلیک کرده تا لیست ویژگی های هرکدام باز شود.می بنید که برای ویژگی tag مربوط به Edit Text عبارت edit1 نوشته شده است.می توانید هر عبارت دیگری را بنوسید اما من تغیری در آن و در tag مربوط به دیگر اشیا نمی دهم.

من برنامه را به اسم guitest ذخیره کرده ام در m-file باز شده 6 تابع دیده می شود.

guitest

guitest_OpeningFcn

guitest_OutputFcn

نظیر این سه تابع در همه رابطهایی که با ویرایشگر ایجاد می شود وجود دارد و توابع دوم و سوم تابع داخلی تابع guitest (اسمی که رابط با آن ذخیره شده است) می باشند.

سه تابع دیگر در این m-file دیده می شود

edit1_Callback

edit1_CreateFcn

pushbutton1_Callback

در اینجا با تابع edit1_CreateFcn کاری نداریم  در لیست ویژگی های Edit text در مقابل  CreateFcn عبارت automatic نوشته شده است اگر این عبارت را پاک کنید این تابع ایجاد نخواهد شد.عملکرد این تابع همانند تابع guitest_OpeningFcn است .

در زیرتابع edit1_Callback این عبارات دیده می شود.

% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double

عبارت edit1 همان عبارتی است که در مقابل ویژگی tag شئ Edit Text نوشتیم و hobject دستگیره مربوط به این شئ است.

eventdata در حال حاضر در مطلب کاربرد ندارد

handles یک متغیر از نوع structure است.در این متغیر دستگیره تمام اشیا موجود در رابط قرار دارند.شما می توانید هر داده مورد نیاز را در آن قرار دهید.

و اما guidata

با کمک این دستور می توان متغیر handles به عنوانguidata ( داده های مورد نیاز تابع guitest) تعریف کرد و در هر قسمت از این تابع به این داده ها دسترسی پیدا کرد. با این کار نیازی به استفاده از متغیرهای سراسری و یا دستورات مشابه نیست.

این دستورات را به تابع edit1_Callback اضافه کنید

input = str2double(get(hObject, 'String'));
handles.metricdata.input = input;
guidata(hObject,handles)

دستور اول رشته موجود در شئ edit1 را به عدد تبدبه عنوان guidataیل می کند.دستور دوم این عدد را در متغیر handles ذخیره می کند و دستور سوم این متغیر را به عنوان guidata تعریف می کند.

شکل استفاده از دستور guidata به این صورت است.

guidata(object_handle, data)

آرگومان object_handle دستگیره رابط گرافیکی است ولی می توان دستگیره هر کدام از اشیا موجود در رابط را به جای به کار برد.

در زیر تابع pushbutton1_Callback دستورات زیر را اضافه کنید.

output = handles.metricdata.input * 3;
set(handles.text1, 'String', output);

واضح است که دستور اول عدد وارد شده در edit1 را در 3 ضرب کرده و در متغیر output قرار می هد.

برای دسترسی به دستگیره یک شئ کافی است به متغیر handles و فیلدی به اسم tag ان شئ مراجعه کیند.

لینکهای زیر رابط گرافیکی ایجاد شده برای این برنامه و یکی از مثالهای مطلب می باشد.که با مطلب 7.0 درست شده اند.

http://amin.bashi.googlepages.com/Guitest.rar

http://amin.bashi.googlepages.com/Guitest2.rar



نوع مطلب : GUIDE 

evalin

نویسنده :امین باشی
تاریخ:سه شنبه 20 تیر 1385-08:07 ق.ظ

در پست قبلی با فضای کار(workspace) در مطلب آشنا شدیم، امروز دستور evalin را برسی می کنیم.این دستور نیز برای کار کردن با فضای کار می باشد.

در اکثر زبانهای برنامه نویسی مفهومی به اسم متغیر سراسری و متغیر محلی وجود دارد.در مطلب برای تعریف نتغیر سراسری از دستور global استفاده می شود.استفاده از متغیرهای سراسری ساده ترین کار در هنگام کار با فضای حالت است اما همیشه ساده ترین راه قشنگ ترین راه نیست.

 توابعی که در پست قبلی استفاده کردیم را با کمی تغیر دوباره  مورد استفاده قرار می دهیم

 

function b=testcaller
testcurrent
m=67;
r=m+l

-------------

function testcurrent
assignin('caller','b',23)
assignin('base','t',33)
m=34;
evalin('base','b=t+2') % 1
evalin('caller','l=b+2') % 2
r= evalin('base','b+3')+evalin('caller','b+2')+m %3

دستور 1 متغیر b را برابر با جمع t و 2 قرار می دهد (این متغیرها در فضای base- فضای کار اصلی مطلب- قرار دارند)

دستور2  متغیر b را که در فضای کار تابع testcaller قرار دارد با 2 جمع کرده و در متغیر l قرار می دهد.

دستور 3 متغیر b که در base قرار دارد را با نتغیر b که در caller قرار دارد و متغیر محلی m را جمع کرده و در r قرار می دهد.

حال دستور h=testcaller را اجرا کنید بعد از پایان برنامه باید متغیرهای t,h,b در فضای base وجود داشته باشند.



نوع مطلب : evalin 

نویسنده :امین باشی
تاریخ:شنبه 17 تیر 1385-07:07 ق.ظ

Worcspace

حافظه ای که برای ذخیره متغیرها اختصاص داده می شود فضای کار نام دارد.چند نوع فضای کار در مطلب وجود دارد.فضایی به نام base که مروبط به فضای کار اصلی مطلب است فضایی به نام current که مربوط به فضای کاری جاری است؛ و فضای کاری parent یا caller .

برای روشن شدن مطلب فایلهای زیر را درست کنید

 

function testcurrent
assignin('caller','b',23)
assignin('base','t',33)
m=34

و فایل

function b=testcaller
 testcurrent

m=67

هر تابع برای خود یک فضای کاری مسقل دارد یعنی اگر در درون دو تابع یک متغیر وجود داشته باشد مقدار این متغیر در دو تابع برابر نخواهد بود.

حالا د رخط فرمان دستور h=testcaller را اجرا کنید.

با اجرای این دستور تابع testcaller اجرا می شود.این تابع  خود تابع  testcurrent  را فراخوانی می کند؛ در این حالت فضای کاری تابع testcaller به عنوان caller فضای کاری تابع   testcurrent در نظر گرفته می شود.

با اجرای تابع  testcurrent دستورات این تابع اجرا می شوند. با اجرای دستور اول متغیر b به درون فضای تابع testcaller فرستاده می شود.با اجرای دستور دوم متغیر t به فضای کاری base فرستاده می شود.

خروجی تابع testcaller متغیر b است که مقدار آن در متغیر h ذخیره می شود.

 



نوع مطلب : workspace 

fit

نویسنده :امین باشی
تاریخ:چهارشنبه 14 تیر 1385-03:07 ق.ظ

fit

معمولا پدیده های انتقال (انتفال جرم و حرارت و مکانیک سیالات) پیچیده تر از آن هستند که روابط حاکم بر آنها از طریق تئوری بدست آوریم؛ و از طریق آزمایش و ایجاد داده های تجربی، روابطی برای آنها بدست می آید.معمولا بعد از هر آژمایش نیاز به اختصاص دادن یک فرمول به داده های ایجاد شده است.استفاده از نرم افزار Excel ساده ترین راه این کار است اما در محیط مطلب نیز این کار قابل انجام است.

کار دستور fit برازش منحنی برای داده های موجود است .

fresult = fit(xdata,ydata,'ltype')

آرگومان ltype مربوط به نوع مدلی است که برای برازش انتخاب می کنیم.منظور خطی، درجه دوم، درجه سوم، سینوسی و ...... می باشد.حتی می توانید مدل خاص خودتان را تعریف کنید.

فرض کنید که

x=[1.1000 2.2000 2.9000 3.8000 5.0000]';

y=[ 0.9000 2.1000 3.0000 4.0000 5.0000]';

یادتون باشه که x,y حتما باید ستونی باشند.

حالا باید نوع برازش را مشخص کنیم.تعدادی از مدلهای موجود در سطور زیر آورده شده اند.

poly1                           Y = p1*x+p2
poly2                           Y = p1*x^2+p2*x+p3
poly3                           Y = p1*x^3+p2*x^2+...+p4
...
poly9                           Y = p1*x^9+p2*x^8+...+p10

برای دیدن لست کامل مدل های موجود کافی است دستور cflibhelp را اجرا کنید.

دستور fit امکانات بسیار زیادی دارد که اگر وقت کنم بطور کامل توضیح خواهم داد.

fit1=fit(x,y,'poly1')

با اجرای این دستور خروجی زیر حاصل می شود.

fit1 =

Linear model Poly1:
fit1(x) = p1*x + p2
Coefficients (with 95% confidence bounds):
p1 = 1.069 (0.92, 1.217)
p2 = -0.2056 (-0.6934, 0.2822)

خروجی این دستور به صورت structure است.یعنی اگر بخواهیم مقدار p1 را بدانیم کافی است بنویسیم

fit1.p1

 



نوع مطلب : برازش منحنی 



  • تعداد صفحات :10
  • 1  
  • 2  
  • 3  
  • 4  
  • 5  
  • 6  
  • 7  
  • ...  


All right reserved©2005 Amin Bashi