گاهی اوقات تعدادی دستور داریم که باید به دفعات زیاد اجرا شوند اگر بخواهیم به صورت معمولی آنها را بنویسیم مجبور می شویم کدهای مربوط به آنها را به دفعات زیاد تکرار کنیم اما انتخاب مناسب برای اجرای دستورات تکراری ساخت یک حلقه می باشد . در متلب ساده ترین روش برای ساخت حلقه استفاده از for می باشد . در مثال زیر نحوه استفاده از for را برای ساخت یک حلقه شرح داده ایم :
مثال :
فرض کنید بخواهیم حاصل 10*9*8*7*6*5*4*3*2*1=!10 را با نرم افزار متلب محاسبه کنیم برای این منظور کدهای زیر را می نویسیم :
k=1;
for m=2:10
k=k*m;
end
k
نتیجه :
k =
3628800
در کدهای فوق مشخص کرده ایم که مقدار m از 2 تا 10 باید باشد و در هر بار اجرای دستورات حلقه ، m برابر مقدار یکی از اعداد این بازه خواهد بود (2 و 3 و ... و 9 و 10) . ابتدا مقدار k را قبل از شروع حلقه برابر 1 تعریف کرده ایم . سپس حلقه for شروع می شود . ابتدا مقدار m برابر 2 که اولین عدد است قرار داده می شود ، k در m=2 ضرب می شود و چون دستورات حلقه تمام شده است و مقدار بعدی m=3 در نظر گرفته می شود و این بار مقدار جدید k در m=3 ضرب می شود و همین طور این روند ادامه می یابد تا زمانی که m=10 نیز در مقدار جدید k ضرب شود و چون دیگر مقدار جدیدی برای m وجود ندارد حلقه پایان می یابد و در آخر مقدار k نمایش داده می شود .
برچسبها: آموزش متلب, اموزش متلب, آموزش matlab, matlab

یکی از گله های دائمی کاربران متلب، سرعت بسیار پایین اجرای برنامه ها در متلب است. زبان متلب، یک زبان مفسری است و برنامه های نوشته شده در آن، کامپایل نمی شوند. بنابراین طبیعی است که سرعت اجرای برنامه های متلب، در مقایسه با زبان های کامپایلری، مانند C، پایین باشد. اما آیا واقعا، همه تقصیرها متوجه متلب است؟ در این مقاله آموزشی کوچک، می خواهیم نشان دهیم که چگونه می توان با رعایت اصول ساده، حداکثر سرعت قابل دسترسی در متلب را، برای برنامه ها به دست آوریم.
یکی از اشتباه هایی که بسیاری از برنامه نویسان متلب مرتکب می شوند، عدم تخصیص فضای مناسب برای آرایه ها و ماتریس ها، قبل از مقدار دهی است. زبان هایی مانند C یا #C (بخوانید سی شارپ)، در هنگام تعریف آرایه ها، اندازه آرایه ها را به صورت اجباری از برنامه نویس می خواهند و هر گاه در طول اجرای برنامه، بخواهیم که مقدار آرایه را در جایی که بیش از طول آرایه است، تغییر دهیم، برنامه خطا می دهد. اما متلب، از آن جا که سادگی را به عنوان محور اولیه در نظر گرفته است، چنین ضرورت هایی را به برنامه نویسی تحمیل نمی کند. اما مشکل دقیقا از همین جا شروع می شود. برای آرایه های کوچک، همه چیز به خوبی و خوشی تمام می شود. اما وقتی آرایه ها، از یک حد بزرگ تر می شوند، ایم مسأله واقعا دردسر ساز می شود.
در متلب، برای تخصیص فضای اولیه (Pre-Allocation)، از توابع مختلفی استفاده می شود. ازمیان این توابع، پر کاربردترین آن ها، تابع zeros است. این تابع ابعاد ماتریس مورد نظر را می گیرید، و بخشی از حافظه را به همان اندازه، برای آرایه موزذ نظر تخصیص می دهد. این کار، در زبان C، با تابع malloc انجام می شود. برای آگاهی بیشتر از چگونگی کارکرد این تابع، به راهنمای آن در هلپ متلب، مراجعه کنید.
دو برنامه زیر را در نظر بگیرید. این برنامه ها برای محاسبه تعداد زیادی از جملات سری فیبوناچی (Fibonacci)، نوشته شده است. در سری فیبوناچی، هر جمله با مجموع دو جمله قبل از خودش برابر است. جمله اول و دوم نیز، طبق قرارداد برابر با صفر و یک در نظر گرفته می شوند.
برنامه اول:
clear;
n=300000;
x(1)=0;
x(2)=1;
for k=3:n
x(k)=x(k-1)+x(k-2);
end
برنامه دوم:
clear;
n=300000;
x=zeros(1,n); % Pre-Allocation
x(1)=0;
x(2)=1;
for k=3:n
x(k)=x(k-1)+x(k-2);
end
این دو برنامه، فقط در مورد تخصیص اولیه (خط سوم از برنامه دوم)، با هم اختلاف دارند. اما جالب است بدانید که مدت اجرای برنامه اول، بر روی کامپیوتر من، در حدود ۴ دقیقه بود. در حالی برنامه دوم، در کمتر از یک ثانیه اجرا می شود. حال فرض کنید که در یک برنامه بزرگ، این مشکلات چقدر می تواند حادتر و شدیدتر باشد.
برچسبها: Pre, allocation, آموزش MATLAB, آموزش متلب
نام مقاله : ارتباط با پورت سریال در Matlab و Labview
زبان : فارسی
ناشر : مرکز دانلود رباتیک و الکترونیک ایران
تعداد صفحات : 16
قالب : PDF
حجم:3.95مگابایت
پسوورد:www.redownload.ir
منبع:مجله PMM
سیگنال، سیستم،***** + تبدیلات فوریه + fft() تبدیل فوریه گسسته + ifft(t) تبدیل فوریه گسسته وارون + توابع سیستم ها + tf دستور ایجاد تابع تبدیل زمان پیوسته +ترسیم bode برای یک سیستم + step(), impulse() واکنش پله ای و واکنش ایمپالسی + Nyquist Diagram دیاگرام نایکوییست + tf2ss تغییر تابع تبدیل به فرم فضای حالت + دستور rlocus برای رسم مکان هندسی ریشه ها + سیستم فیدبک منفی با دستور feedback + مدل زمان گسسته Discrete-Time Models + Lead تابع تبدیل زمان گسسته مدار + @@@@@ها + butter() آنالوگ و دیجیتال، دستور Butterworth *****
+ واسط گرافیکی کاربر + واسط گرافیکی کاربر GUI graphical user interface + property inspector شاخصه یاب + Name or String شاخصه عنوان + Tag شاخصه برچسب + Callback Function توابع فراخوان + برنامه نویسی +
نکاتی پیرامون صفحهگسترده + برچسب گذاری + برچسب پیش فرض یک سلول + برچسب گذاری دل خواه، متغیر و آرایه در اکسل excel+ کتابخانه داخلی اکسل excel+ فرمول دهی + Formula Bar میله فرمول + رجوع نسبی و رجوع مطلق به سلول + نامگذاری + پر کردن سلول ها با لیست های قراردادی +
عملیات محاسباتی، توابع ونمودارها + چند تابع کتاب خانه ای + نمودارها + نمودار ستونی + ترسیم منحنی + جبری سازی منحنی + هیستوگرام + تابع کاربر- تعریف در اکسل VBA in Excel + برنامه نویسی + استفاده از تابع VBA در صفحه گسترده + ضبط ماکرو + ابزارهای محاسباتی + Goal Seek + Solver + Data Table جدول داده + تابع خط فرمانinline function + ام- فایل تابعی function M-file +تقریب جبری یک منحنی + مباحثی پیرامون توابع + تابع بدون مقدار برگشتی (بدون آرگومان خروجی) + زیر تابع subfunction + کامپایلرِ متلب MATLAB Compiler + گیره تابع function handle + تابعِ تابع +Function Recursivity + مباحثی پیرامون رشته ها + رشته به مثابه آرایه (بردار) + بلوک try...catch + تابع eval + توابع double و single و عدد اسکی یک کاراکتر + مقایسه رشته ها +برچسبها: راهنمای استفاده از نرم افزار Matlab, آموزش, آموزش متلب, اموزش متلب
دانلود کد Open source تشخیص گفتار :
برای دانلود کلیک کنید ...
برچسبها: راهنمای استفاده از نرم افزار Matlab, آموزش, آموزش متلب, اموزش متلب
35 صفحه شامل عناوین:
-
متلب چیست؟
-
استفاده از help
-
استفاده از demo
-
تعریف کردن آرایه ها و عملیات جبری روی آن ها
-
ذخیره کردن و بازیابی داده ها
-
عملیات ماتریسی روی آرایه ها
-
عملیات عضو به عضو روی آرایه ها
-
تنظیم خروجی ها روی صفحه نمایش با دستورات disp و format
-
ریشه های یک چند جمله ای
-
محاسبه مقدار یک چند جمله ای
-
ضرب و تقسیم چند جمله ای ها
-
مشتق چند جمله ای
-
برازش منحنی چند جمله ای
-
عملیات و توابع منطقی
-
مقایسه منطقی
-
عملگرهای منطقی
-
توابع منطقی any, all, find
-
اعداد ویژه
-
نمودارهای دو بعدی
-
نمودارهای سه بعدی
-
نمودارهای 2.5 بعدی
-
برنامه نویسی (m file)
-
خطایابی برنامه ها
-
پیغام های خطا
آموزش مقدماتی متلب (فارسی) نویسنده: محمد نحوی 12 صفحه دانلود
آموزش متلب (6.5) (فارسی) 37 صفحه دانلود
آموزش مقدماتی متلب (انگلیسی) 99 صفحه دانلود
شبیه سازی مسائل قدرت با سیمولینک متلب
19 صفحه شامل عناوین :
- شبیه سازی یک مدار ساده
ساختن مدار با کتابخانه یpowerlib
هماهنگ کردن مدار با سیمولینک
شبیه سازی مدار
- تحلیل یک مدار ساده
تحلیل حالت پایدار
تحلیل فرکانسی
به دست آوردن امپدانس متقابل فرکانسی از مدل فضای حالت
به دست آوردن امپدانس فرکانسی از قطعه اندازه گیر امپدانس و قطعه نمایشگر گرافیکی
برچسبها: آموزش متلب, آموزش matlab, آموزش نرم افزار مهندسی, دروس عمومی

Matlab دارای جعبه ابزارهای TOOLBOX
متنوعی برای انجام محاسبات مختلف است که از جمله آنها میتوان به جعبه
پردازش سیگنال Signal Processing، پردازشهایی آماری Statistics، شبکههای
عصبی Neural Network، دریافت تصویر Image Acquisition، پردازش تصویر Image
Processing، منطق فازی Fuzzy Logic، الگوریتمهای ژنتیک Genetic
Algorithms و … اشاره کرد. بعضی از این جعبه ابزارها به همراه نرم افزار
Matlab ارائه میشوند و بعضی دیگر را میتوان در کار گروههای مختلف و
نیز سایت www.Mathworks.com یافت.
کتاب Matlab در سیگنالها و سیستمها و کنترل نوشته آقای مهندس جواد راستی می
باشد که در سه بخش به اصول، تحلیل و طراحی این مبحث در Matlab پرداخته
است.
دانلود مستقيم
حجم فايل : 2.6 مگابایت
پسورد فايل : www.elecdl.com
لینک منبعبرچسبها: matlab, Matlab در سیگنالها و سیستمها و کنترل, آموزش متلب, آموزش متلب در سیگنال ها و سیستم ها
Introduction to Simulink
این فایل رو مخصوص دوستان عزیزی که درس کنترل دارند قرار دادم (واسه پروژه های کنترل خیلی مفیده و میتونه بهتون کمک زیادی کنه!)
برچسبها: سیمولینک Matlab, آموزش سیمولینک, Matlab, آموزش سیمولینک Matlab
در این بخش با توابع منطقی any، all و find آشنا می شویم.
تابع any معين مي كند كه آيا مولفه غير صفر در يك بردار وجود دارد يا خير.
» v=[-2 1 3 5];
» any(v<1)
ans =
1
» any(v>6)
ans =
0
تابع all معين مي كند كه آيا همه مقايسه ها درست هستند يا خير.
» all(v<1)
ans =
0
» all(v<6)
ans =
1
توابع فوق را مي توانيد براي ماتريسها نيز بكار ببريد. در اين صورت خروجي اين توابع عبارت است
از حاصل مقايسه هاي گفته شده براي هر ستون ماتريس.
تابع find مكان مولفه هاي غير صفر را در يك آرايه نشان مي دهد.
» find(v>3)
ans =
4
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
يك چند جمله اي در MATLAB به صورت يك بردار سطري كه مولفه هاي آن ضرايب چندجمله اي به ترتيب نزولي هستند معرفي مي شود. براي مثال چند جمله ای p(x)= در MATLAB به شكل زير معرفي مي گردد:
» p=[1 0 -2 5];
ريشه هاي يك چند جمله اي را مي توانيد به صورت زير بدست آورد:
» r=roots(p)
r =
-2.0946
1.0473 + 1.1359i
1.0473 - 1.1359i
با دانستن ريشه هاي معادله مي توانيد ضرايب چند جمله اي مربوطه را محاسبه نمائيد:
» p2=poly(r)
p2 =
1.0000 0.0000 -2.0000 5.0000
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
و را در نظر بگيريد. حاصلضرب اين دو چند جمله اي به طريق زير بدست مي آيد:
» a=[1 1 1]; b=[1 -1];
» c=conv(a,b)
c =
1 0 0 -1
و تقسيم a/b نيز به صورت زير قابل محاسبه است:
» [q,r]=deconv(a,b)
q =
1 2
r =
0 0 3
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
مشتق چند جمله اي را مي توانيد با بكار بردن تابع polyder محاسبه كنيد.
» c=polyder(a)
c =
2 1
مشتق حاصلضرب دو چند جمله اي a*b را مي توانيد به صورت زير بدست آوريد:
» d=polyder(a,b)
d =
3 0 0
در صورتي كه تعداد آرگومانهاي خروجي تابع polyder برابر ٢ باشد، تابع مشتق تقسيم دو چند جمله اي جمله اي را تعيين مي نمايد:
» [q,d]=polyder(a,b)
q =
1 -2 -2
d =
1 -2 1
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
تابع polyval مقدار چند جمله اي را در هر نقطه محاسبه مي نمايد. براي مثال مقدار p در نقطه 5 به طريق زير محاسبه مي گردد:
» polyval(p,5)
ans =
120
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
در صورتي كه بخواهيد در مورد دستور و يا تابع خاصي اطلاعاتي به دست بياوريد مي توانيد در پنجره MATLAB كلمه help و پس از آن نام دستور يا تابع مورد نظر را بنویسید:
» help magic
MAGIC Magic square.
MAGIC(N) is an N-by-N matrix constructed from the integers
1 through N^2 with equal row, column, and diagonal sums.
Produces valid magic squares for N = 1,3,4,5,...
روش ديگر استفاده از help بكار
بردن دستور helpwin است. اين دستور پنجره كمكی را باز مي كند و اجازه مي
دهد تا توضيحات مورد نياز را در پنجره جداگانه اي بدست آوريد. توضيحات داده
شده در اين پنجره همانهايي هستند كه دستور help ارائه مي نمايد.
لازم
به توضيح است كه نام دستورات و توابع در help با حروف بزرگ آورده مي شوند
در حاليكه MATLAB نسبت به بزرگ و كوچك بودن حروف حساس است و هنگام استفاده
از اين دستورات و توابع بايد آنها را با حروف كوچك بكار برد.
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
هدف : رسم تابع
z=f(x,y)
نکته مهم: اگر مثلا x=1:3 و y=1:2 ، z به ازای همه (x,y) ها مقدار باید داشته باشد. (1,1)، (2,1) ، (3,1) و....
دستور meshgrid برای ساخت این نقاط به کار می رود:
[x ,y]=meshgrid(1:3,1:2);
تابع plot3 برای رسم z به کار می رود:
[x,y]=meshgrid(-3:0.01:3,-3:0.01,3);
z=exp(-x.^2-y.^2);
plot3(x,y,z);
دستورات فوق،
نمودار z را رسم می کند. این تابع منحنی را به صورت یک سری خطوط رسم می کند.

دستورات mesh و surf
mesh: منحنی را به صورت شبکه شبکه با خطوط رنگارنگ رسم می کند.
surf: منحنی را به صورت شبکه شبکه با خطوط رنگارنگ رسم می کند و به علاوه داخل شبکه ها را هم رنگ می کند.
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
از قانون کولن میدانیم که دو بار الکتریکی بر یکدیگر نیرو
وارد میکنند. این نیرو را میتوان با استفاده از مفهوم جدیدی به نام میدان
الکتریکی توضیح داد، یعنی واسطهای که بارهای الکتریکی بواسطه آن بر
یکدیگر نیرو وارد میکنند. به بیان دیگر هر بار الکتریکی در فضای اطراف خود
یک میدان الکتریکی ایجاد میکند که هرگاه بار الکتریکی دیگری در محدوده
این میدان قرار گیرد، بر آن نیروی وارد میشود.
معمولاً خطوط میدان
الکتریکی در اطراف هر بار الکتریکی با استفاده از مفهوم خطوط نیرو نشان
داده میشود. به عنوان مثال اگر یک بار الکتریکی نقطهای مثبت را در
نقطهای از فضا در نظر بگیریم، در این صورت خطوطی از این نقطه به طرف خارج
رسم میشوند. این خطوط بیانگر جهت میدان الکتریکی هستند. همچنین با استفاده
از چگالی خطوط میدان الکتریکی میتوان به شدت میدان الکتریکی نیز پی برد.
مسئله
: فرض کنید چند بار در فضا داشته باشیم . می خواسهیم نحوه هی توزیع
پتانسیل را در اطراف این چند بار بدست آوریم . از آنجایی که پتانسیل
الکرتیکی کمیتی اسکالر هست ، می توانیم برای هر بار را در فضا حساب کنیم ،
سپس آن دو را با هم جمع بزنیم .
برای بدست آوردن میدان الکتریکی ، طبق تعریف ، کافی هست که گرادیان بگیریم .
electrical Potential and electrical distribution visualization of charges with MATLAB

سورس برنامه:
close all
%@ 2011 www.mathworks.ir
clear
clc
x=linspace(-4,4,200);
y=x;
[X Y]=meshgrid(x,y);
V=1./sqrt((X-1).^2+(Y).^2+eps)-1./sqrt((X+1).^2+Y.^2+eps)
[Ex Ey]=gradient(V);
[C k]=contourf(X,Y,V,[-2:0.1:2]);
set(k,'LevelStep',30)
% hold on
% h=quiver(X,Y,Ex,Ey)
% set(h,'MaxHeadSize',0.1)
figure
[C2 h]=contour(X,Y,sqrt(Ex.^2+Ey.^2),[ 0:0.01:0.5 ])
با اجرای برنامه فوق پتانسیل و اندازه ی میدان کشیده می شوند .
در
داخل برنامه ، با برداشتن علامت کامنت و اجرای دستور quiver، می تونید
فلش هایی رو نمایش دهید که نحوه ی تغییر میدان را نیز نشان بدهند .
با بزرگ نمایی تصویر به شکل زیر خواهید رسید.
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
روشهاي صريح سادهترن، اما براي اينكه از نظر عددي پايدار باشند و به جواب درست همگرا شن، بايد كنترلشون كرد. اما روشهاي ضمني هميشه پايدار هستند و به جواب درست همگرا ميشن.
نامهاي ديگر روشهاي صريح: باز يا open، پيشگو يا predictor
نامهاي ديگر روشهاي ضمني: بسته يا closed، اصلاحگر يا corrector
بعضي از روشهاي صريح معروف: روش اولر (كاستههاي پيشرو)، روشهاي رانگ ـ كوتا، روش كاستههاي ميانهاي، روشهاي آدامز ـ بشفورث، ...
بعضي از روشهاي ضمني معروف: روش اولر پسرو، روش نيومارك، روشهاي آدامز ـ مولتون، كاستههاي پسرو (روشهاي Gear، يا BDF)، روش NDF، ..
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
Ordinary Differential Equation - initial value problems
(IVPs)
با سلام خدمت تمامی دوستان بخصوص دانشجویان فیزیک. قصد دارم بتدریج به یکسری از مسایل برنامه نویسی عمومی در زمینه فیزیک که غالبا با آن سرو کار داریم بپردازم. اولین گام ( به شرطی که با مقدمات برنامه نویسی در Matlab خصوصا کار با توابع، ماتریسها آشنا باشید) میتواند حل معادلات دیفرانسیل معمولی باشد.
معادلات دیفرانسیل معمولی به آندسته از معادلات دیفرانسیل اطلاق می شود که تمامی متغیرهای وابسته ( بعنوان مثال x، y و z ) تنها تابعی از یک متغیر مستقل (برای مثال t) می باشند. مثال آشنا در این مورد میتواند معادله نوسانگر هارمونیک باشد که در آن مکان نوسانگر تنها تابعی از زمان است. در مقابل معادله دیفرانسیل معمولی معادلات دیفرانسیل جزیی قرار می گیرند که نمونه بسیار آشنای آن معادله شرودینگر است که در آن تابع موج (متغیر وابسته) تابعی از مختصات مکانی و زمان (یعنی متغیرهای مستقل ) می باشد.
ابتدا به حل مسایل مقدار اولیه (IVP) با معرفی سه روش اویلر (Euler’s method)، رانگ کوتا (Runge–Kutta method) و تابع آماده در متلب بانام ode45 می پردازیم.
1- روش اویلر
این ساده ترین روش است. با استفاده از تقریب مشتق عددی پیشرو الگوریتم تکرار بسادگی بدست می آید :
|
|
که در آن h طول گام است. کافست با توجه به معادله دیفرانسیل تابع f(x,t) مشخص گردد و در رابطه تکرار بالا جایگذاری شود. مثال ساده زیر را در نظر بگیرید.
dy/dt+5y=6 , y(t=0)=2
با توجه به معادله بالا خواهیم داشت : f(x,t)=dy/dt=6-5y
بنابراین رابطه تکرار بصورت زیر خواهد بود،
|
|
نهایتا برنامه کوتاه زیر را میتوان نوشت :
|
clc,clear all h=.01; t0=0; tf=2; t=t0:h:tf; y(1)=2; N=length(t); for i=1:N-1 y(i+1)=y(i)+h*(6-5*y(i)); end plot(t,y)
|
باید توجه داشته باشیم که هر سه روش بکار گرفته در حل مسایل
مقدار اولیه مبتنی بر حل معادله دیفرانسیل مرتبه یک می باشند در حالیکه بسیاری از معادلات دیفرانسیل مهم در فیزیک مرتبه دو هستند. در چنین مواردی با استفاده از تغییر متغیر هر معادله دیفرانسیل مرتبه دو به دو معادله دیفرانسیل مرتبه یک شکافته می شود و هر کدام از این دو معادله بصورت جداگانه با توجه به شرایط اولیه با استفاده از روش اویلر حل میشود. بعنان مثال :
|
|
نوسانگر هارمونک ساده
با این توضیحات میتوانیم به حل یک مسئله استاندارد یعنی معادله حرکت نوسانگر هارمونیک بپردازیم. جسمی با جرم معین متصل به فنر تحت تاثیر نیروی بازگردانده در یک بعد حرکت نوسانی انجام می دهد با صرفنظر از نیروهای اتلافی (این مورد در روش رانگ کوتا بررسی می شود) معادله حرکت بشکل زیر است :
|
|
با تغییر متغیر v=dx/dt جفت روابط زیر خواهیم داشت،
|
|
و بنابراین روابط تکرار مطابق مثال قبلی بدست می آیند،
|
|
اگر فرض کنیم که نوسانگر در لحظه t=0 بیشترین فاصله از نقطه تعادل را دارد می توانیم شرایط اولیه زیر را در نظر بگیریم،
|
|
برنامه زیر (Oscilator1) معادله نوسانگر هارمونیک ساده را به روش اویلر حل می کند. نمودارها x و v برحسب زمان رسم میشوند و در پایان حرکت واقعی نوسانگر نیز بصورت انیمیشن نمایش داده میشود.
|
function Oscilator1 % simple harmonic Oscilator- Euler's method % by saeed babanezhad - solid state physics close all k=1; m=1; w=sqrt(k/m); h=.1; % time step t0=0; % initial time tf=20; % final time t=t0:h:tf; % time interval N=length(t); x=zeros(1,N); % specify size of x matrix v=zeros(1,N); % specify size of v matrix x(1)=1; % initial condition for position v(1)=0; % initial condition for speed for i=1:N-1 x(i+1)=x(i)+h*v(i); v(i+1)=v(i)-h*w^2*x(i); end figure(1) subplot(3,1,1) plot(t,x) ylabel('x') subplot(3,1,2) plot(t,v) ylabel('y') % animation subplot(3,1,3) % difine spring spring=line('lineStyle','none','Marker','d',... 'MarkerSize',15,'Color','b','Xdata',[],'ydata',[]); % difine body body=line('Marker','s','MarkerSize',30,... 'MarkerFaceColor','r','xdata',[],'ydata',[]); xlim([min(x) max(x)]) for i=1:N set(body,'XData',x(i),'YData',0) set(spring,'XData',linspace(min(x),x(i),20)... ,'YData',zeros(1,20)) drawnow end
|
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
برنامه از فرمان fill برای ترسیم توپی به رنگ قرمز استفاده می کند و با تنظیم محدوده ی رسم نمودار با کمک فرمان axis صحنه ی نمایش همیشه ثابت می ماند .
اما مسئله سرعت بالای ترسیم گرافیکی در متلب است که باعث می شود فیلم هنوز شروع نشده به پایان برسد و شما متوجه آنچه روی داده نشوید . برای غلبه بر این مشکل از فرمان pause استفاده شده است که به اندازه ی عددی که در داخل آن مشخص می کنید اجرای برنامه های متلب را متوقف می کند.
استفاده از فرمان pause در مواردی کاربرد دارد که شما می خواهید سرعت اجرای عملیاتی را در متلب کاهش دهید و تغییرات را با دقت بیشتری مورد بررسی قرار دهید.
متن برنامه :
|
clc; clf; % define a x,y x=0:.1:2*pi; y=sin(x); for n=1:length(y) %{ hold on plot(x,y) %} % define ball shape fill(x(n)+.1*cos(x),y(n)+.1*sin(x),'r') axis([0 2*pi -pi pi]) % wait for 0.1 miliseconds pause(0.1) end |
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
مشکل دوم نیاز به حدس اولیه مناسب برای رسیدن به جواب است.
Clc;syms x
myf=x^2-4*x+1;df=diff(myf);
k=0;del=10;
while abs(del)>1e-5del=subs(myf,k)/subs(df,k);k=k-del;end;
disp(k);
fzero('x^2-4*x+1',0)
در این برنامه ابتدا تابع در myf تعریف شده است و با diff مشتق آن حساب می شود. حدس اولیه در k قرار می گیرد و میزان خطای پیشفرض یا همان del ابتدا 10 در نظر گرفته می شود. برنامه تا زمانی ادامه می یابد که خطا به e-5 برسد. در خط آخر از fzero که یکی از توابع داخلی متلب برای محاسبه ی ریشه حول نقطه ای خاص است استفاده شده است. شما می توانید نتایج حاصل را خودتان مقایسه کنید.
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
حل معادله :
برای بدست آوردن ریشه های یک معادله ی چند جمله ای می توانید به راحتی از دستور roots استفاده کنید. برای اینکار لازم است ضرایب معادله را به صورت یک ماتریس به دستور roots وارد کنید.
X^3-2X^2-2=0
برای حل چنین معادله ای دستورات متلب به شکل زیر خواهند بود.
P=[1 -2 0 -2];
Roots(p)
ans =
2.3593
-0.1797 + 0.9030i
-0.1797 - 0.9030i
دستور solve به شما کمک می کند معادلات خود را به راحتی با کمک متلب حل کنید.
solve('a*x^2+b*x+c')
ans =
1/2/a*(-b+(b^2-4*a*c)^(1/2))
1/2/a*(-b-(b^2-4*a*c)^(1/2))
همانطور که می بینید معادله ی درجه ی دوم به راحتی با کمک متلب به صورت جبری حل شد. چنانچه در آخر معادله عبارت = 0 قرار داده نشده باشد متلب آن را به صورت یک پیشفرص در نظر می گیرد.
>> s=solve('x + y = 1','x - 11*y = 5')
s =
x: [1x1 sym]
y: [1x1 sym]
این عبارت به این معنی است که جواب معادله یک ماتریس یک در یک و به صورت نمادین است. جوابها در متغیر s ذخیره شده اند که از نوع ساختاری است و برای خواندن آنها به شکل زیر عمل می کنیم.
>> s.x
ans =
4/3
>> s.y
ans =
-1/3
نمونه ی دیگری از این دستور به صورت زیر است.
>> solve('cos(x)+sin(x)=1')
ans =
1/2*pi
0
همچنین چنانچه در انتهای معادله هر کدام از متغیرهای هم لیست کنید متلب معادله را بر حسب آن متغیر حل می کند.
solve('a*x^2 + b*x + c','b')
ans =
-(a*x^2+c)/x
همچنین در متلب از دستور dsolve برای حل جبری معادلات دیفرانسیلی استفاده می شود.
dsolve('Dx = -a*x')
ans =
C1*exp(-a*t)
دقت داشته باشید که Dx یعنی مشتق اول از x و برای نشان دادن مشتق های مراتب بالاتر از D2x یا D5x استفاده می شود که به ترتیب نشان دهنده ی مشتقات از مراتب 2 و 5 می باشند.
معادلات شما می تواند حالات پیچیده تری نیز به خود بگیرند. همچنین با تعیین شرایط مرزی می توانید مقادیر ثابت معادله را نیز بیابید.
dsolve('D2y = -a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0')
ans =
cos(a*t)
در پایان این قسمت نحوه ی رسم معادلات بدون تعیین مقادیر x و y آموزش داده می شود.
برای این کار از دستور ezplot به راحتی می توان استفاده کرد. آیا برنامه ی رسم دایره را به خاطر می آورید!؟ در اینجا همان دایره به شکل کاملا ساده تری رسم می شود.
ezplot('x^2+y^2=3')
برای رسم هر معادله تنها کافیست آنرا به صورت رشته ای به این دستور وارد کنید.
برچسبها: حل کننده انتگرال دو هامل, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
مشتق گیری و انتگرال گیری عددی با متلب
همیشه بازی کردن با ارقام راحت تر از کار با عبارت های جبری بوده است. از این روست که محاسبات عددی امروزه گامهایی فراتر از حل های تحلیلی پیموده است. معادلات فراوانی هستند که حل جبری ندارند اما برای محاسبه ی مقادیر آنها روشهای عددی زیادی وجود دارد. در این پست روشی ساده برای محاسبه ی مشتق و انتگرال یک تابع با استفاده از داده های عددی (و نه از روی خود تابع) معرفی می شود.
در متلب قابلیت های فراوانی برای کار با اعداد در نظر گرفته شده است.شما می توانید به راحتی و با استفاده از Curve Fitting از روی یک ماتریس عددی ضرایب معادله ی چند جمله ای آن را به راحتی بیابید.روال کار قبلا نشان داده شده است.
مشتق گیری عددی :
همه ی شما حتما با تعریف مشتق با کمک حد آشنایی دارید :
کاری که برای مشتق گیری عددی از یک ماتریس می بایست انجام دهید استفاده از همین تعریف و فرمان diff متلب می باشد. با کمک یک مثال روش کار را با هم بررسی می کنیم :
می دانیم مشتق sin همان cos است. در این برنامه دو ماتریس xو y1 ورودی و خروجی تابع sin هستند. در ادامه در y2 مقادیر cos را مستقیما محاسبه کرده و ذخیره می کنیم.
سپس با استفاده از روش مشتق گیری عددی و فرمان diff از xو y1 مشتق گرفته و نتیجه را در ماتریس y3 ذخیره می کنیم.
مشاهده می کنید که وقتی دوتابع y2 و y3 را رسم می کنیم فرقی با هم ندارند. در حالی که اولی مستقیما از تابع cos و دومی با استفاده از مشتق گیری عددی از sin و دستور diff بدست آمده است :
clc;x=0:.1:2*pi;y1=sin(x);y2=cos(x);
y3=diff(y1)./diff(x);figure(1)plot(x,y1);figure(2)
subplot(2,1,1);plot(x,y2,'ro');
subplot(2,1,2);plot(y3,'b.');
تنها نکته ای که باید به آن توجه داشته باشید این است اندازه ی درایه های x و y1 می بایست با هم برابر باشند ونیز تعداد درایه های ماتریس y3 که خروجی مشتق گیری عددی است یکی کمتر از دو تابع y1 و x می باشد.علت آن را هم می توانید در کتب محاسبات عددی به طور دقیقتری بیابید.
انتگرال گیری عددی
روش های زیادی هم برای محاسبه ی انتگرال یک تابع در متلب وجود دارند. اما برای استفاده از آنها (int و quad ) می بایست خود تابع را در اختیاد داشته باشید.
برای اینکه تنها با معرفی یک ماتریس با داده های عددی مقدار انتگرال را محاسبه کنید از trapz استفاده می شود.گرچه دارای درصدی از خطا می باشد.اما سرعت محاسبه آن بسیار بالاست و دیگر اینکه در مواردی که فقط داده های عددی دارید تنها راه محاسبه ی انتگرال می باشد.
تابع y=x را در نظر بگیرید.می دانیم که در بازه ی صفر تا 10 مقدار انتگرال آن (مساحت زیر نمودار) برابر 50 می باشد. حال می خواهیم با استفاده از دو روش انتگرال گیری از دو روش همین مقدار را بدست آوریم.
x=0:10;y1=trapz(x)y2=int('x',0,10)
y1 = 50y2 = 50
مشاهده می کنید که هر دو روش یک مقدار را نتیجه می دهند. اگر دستورات را جداگانه در قسمت Command Window وارد کنید، خواهید دید که هنگام استفاده از int متلب چند لحظه Busy شده و نمایش نتیجه مدت زمان بیشتری به طول می انجامدو تازه این برای تابع ساده ای چون x است. معمولا بهتر است از quad استفاده کنید.اما برای محاسبه ی انتگرال گیری عددی trapz بهترین راه است.
برچسبها: آموزش برنامه نویسی متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
برچسبها: کتاب المان محدود در متلب, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB
ادامه مطلب...
دانلود نرم افزار حل کننده انتگرال دو هامل
( Duhamel Plus ver. 1.0 )
This program uses the Duhamel integration for calculation of the linear response of single-degree-of-freedom structures to arbitrary or harmonic dynamic loading. This program is capable of calculation of the response spectra of earthquake records for different damping ratios. It can normalize the earthquake records and calculate the average spectra of multiple records as well. This program is useful for structural designers who are to scale their earthquake records for a dynamic analysis, or want to calculate a site-specific design spectrum from local records
برنامه انتگرال دیو هامل همراه با راهنمای برنامه
نمونه های دیگر
در ادامه مطلب را حتما ببینید...
برچسبها: حل کننده انتگرال دو هامل, آموزش تصویری متلب, آموزش متلب, آموزش نرم افزار MATLAB










