|
|
|
|
|
+
نوشته شده در دوشنبه چهاردهم فروردین 1391ساعت 16:54 توسط دوست تو
|
|
||
|
|
|
|
|
سلام دوستان عید نوروز مبارک به امید پیروزی نور بر تاریکی |
||
|
+
نوشته شده در شنبه هفتم فروردین 1389ساعت 19:3 توسط دوست تو
|
|
||
|
|
|
|
|
+
نوشته شده در چهارشنبه هفتم فروردین 1387ساعت 22:6 توسط دوست تو
|
|
||
|
|
|
|
|
آغاز برنامه نویسی در MATLAB : تا به حال تنها از توابعي استفاده ميکرديم که قبلا براي matlab تعريف شده بود؛ ولي ممكن است اين توابع نتوانند نيازهاي ما را پاسخ دهند، يا بخواهيم توابعي با کاربري خاص بنويسيم. يك تابع (function file) مانند يك m-file است با اين تفاوت که خط اول آن به صورت زير است: function [outputs]= name(inputs) اين خط مشخص مي کند که اين M-file يك تابع است. همچنين تعداد ورودي ها و خروجي ها را مشخص کرده و هر يك را در يك متغير قرار مي دهد.در صورتي که تنها يك ورودي داشته باشيم نيازي به کروشه [] نیست .name نيز نام تابع را مشخص مي کند. بهتر است براي خواناتر شدن برنامه از عبارات توضيحي استفاده کنيم.اين عبارات بايد ورودي ها و خروجي ها را مشخص کند.همچنين مي توان نام برنامه نويس و تاريخ نوشتن آن را نيز مشخص کرد. اين خطوط با اجرا دستور help name << به نمایش در می آیند . به عنوان مثال M-file زیر دستور prod را شبیه سازی می کند: function p=prod2 (x) % function p=PROD2 (x) % shabih sazi farman PROD % a:radif b:sotoon [a,b]=size2(x); p(1,:)=x(1,:); for i=2:a, % satr aval p dar satr haye x zarb shode % va dar satr aval p zakhir mishavad p(1,:)=p(1,:).*x(i,:); end % if x is rowvector while a==1; p=1; for i=1:b, p=p*x(i); end a=0; end حلقه هاي تكرار: اين دستورات در اغلب زبان هاي برنامه نويسي به خصوص c وجود دارند. حلقه for : اين حلقه اين امكان را به وجود مي آورد که تعدادي از دستورات به تعداد دفعات از قبل تعيين شده تكرار شوند.شكل کلی آن به صورت زير است: for variable = a statement 1 statement 2 … end که a یک ماتریس است . در هر بار تكرار حلقه يك ستون ماتريس a در variable قرار مي گيرد.به اين ترتيب حلقه به تعداد ستون هاي a تكرار مي شود. اين حلقه را مي توان به صورت تو در تو استفاده کرد. مثال زير با استفاده از حلقه هاي تو در تو جدول ضرب ايجاد مي کند. for i=1:5 for j=1:5 s(i,j)=i*j; end end حلقه while : اين حلقه چند دستور را به تعداد دفعات نامحدود تكرار مي کند. از اين دستور هنگامي استفاده مي شود که تعداد دفعات تكرار مشخص نباشد. شكل کلي اين دستور به صورت زير است: while expression statements end expression يك عبارت شرطي است و تا هنگاميکه درست باشد، حلقه تكرار مي شود. (عبارات شرطي در قسمت بعد شرح داده مي شود.) ساختارهاي تصميم: شرط if-else-end : حتما با عملكرد اين دستور در زبان هاي برنامه نويسي ديگر آشنا شده ايد.شكل کلی اين دستور را در زير مي بينيد. if expression 1 statements 1 elseif expression 2 statements 2 … elseif expression n statements n else statements end همان طور که مشاهده ميکنید در حالت کلی مي توان از يك if بیشمار elseif و یک else و end استفاده کرد . استفاده از else و elseif اختیاری است . اگر شرط مقابل if درست باشد دستورات شماره 1 اجرا مي شوند، در غير اين صورت شرط 2 (مقابل Elseif) بررسي مي شود در صورتي که درست باشد دستورات 1 ودر غير اين صورت شرط 3 بررسي مي شود ... در صورتي کهn شرط بررسي شد و درست نبود دستورات قسمت else اجرا می شوند. MATLABاعداد مختلط در اعداد مختلط رادر matlab به راحتی می توان ایجاد کرد.برای این کار کافیست ازj وi استفاده کرد به مثال زیر توجه کنید: >> a=1+2j a = 1.0000 + 2.0000i >> b=2-3i b = 2.0000 - 3.0000i می بینید که به به راحتی می توان عدد مختلط ساخت توجه کنید که1+j2 درست نیست مگر اینکه از علامت * استفاده کنیم. >> 1+i2 ??? Undefined function or variable 'i2'. >> 1+i*2 ans = 1+ 2.0000i چند تابع برای کار با اعداد مختلط: :absتابع این تابع برای بدست آوردن اندازه در اعداد مختلط بکار می رود: >> a=1+2j a = 1.0000 + 2.0000i >> abs(a) ans = 2.2361 :angleتابع اندازه عدد مختلط را بر حسب رادیان می دهد: >> a=1+2j; >> angle(a) ans = 1.1071 :conjتابع مزدوج مختلط را محاسبه می کند: >> conj(a) ans = 1.0000 - 2.0000i :imagتابع قسمت موهومی عدد مختلط را می دهد: 1.0000 - 2.0000i >> imag(a) ans = 2 :realتابع قسمت حقیقی عدد مختلط را می دهد: >> real(a) ans = 1 :isrealتابع اگر متغیر حقیقی باشد عدد یک و اگر موهومی باشد صفر را بر می گرداند: >> a=1+2j; >> b=6; >> isreal(a) ans = 0 >> isreal(b) ans = 1 :complexتابع یک عدد مختلط ایجاد می کند: >> complex(5,10) ans = 5.0000 +10.0000i عدد اول در پرانتز قسمت حقیقی و عدد دوم قسمت موهومی است. :matlabچند جمله ایها در ایجاد چند جمله ای : فرض کنید می خواهیم چند جمله ای زیر را در مطلب ایجاد کنیم: x4-12x3+25x+116 برای شناساندن این چند جمله ای به مطلب کافیست یک بردار از ضرایب این چند جمله ای در مطلب تشکیل دهیم . p=[1 -12 0 25 116]; بهره ببرید:rootاگر بخواهید ریشه های این چند جمله ای را در مطلب بدست آورید کافیست از دستور :rootدستور در زیر با استفاده ازاین دستور ریشه های چند جملهای را بدست آورده ایم: >> r=roots(p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i همانطور که می بینید دو تا از ریشه ها مختلط هستند. فرض کنید می خواهیم چند جمله ای های زیر را ضرب کنیم: x3+2x2+3x+4 x3+4x2+9x+16 :convدستور این دستوررا برای ضرب چند جمله ای ها استفاده می کنیم: نتایج را در زیر مشاهده می کنیم: >> a=[1 2 3 4]; >> b=[1 4 9 16]; >> c=conv(a,b) c = 1 6 20 50 75 84 64 :deconvدستور از این دستور برای تقسیم چند جمله ای ها استفاده می کنیم: را بر هم تقسیم می کنیمb وa >> [q,r]=deconv(a,b) q = 1 r = 0 -2 -6 -12 به ترتیب خارج قسمت و باقیمانده هستند.r و qدر بالا نکته:استفاده از عدد صفر را هرگز از یاد نبرید اگر ضریبی از یک توان خاص وجود نداشت باید حتما از عدد صفر استفاده کنید. : polyderدستور از این دستور برای مشتق گیری از چند جمله ایها استفاده می کنیم: ضرایب یک چند جمله ایست: با استفاده از این دستور به راحتی مشتق گیری می کنیم:aفرض کنید >> a=[1 5 18 24 39 7]; >> s=polyder(a) s = 5 20 54 48 39 :polyintدستور از این دستور برای انتگرالگیری در چند جمله ایها استفاده می کنیم: انتگرال چند جمله ای بالا را محاسبه می کنیم: . >> a=[1 5 18 24 39 7]; >> i=polyint(a) i = Columns 1 through 5 0.1667 1.0000 4.5000 8.0000 19.5000 Columns 6 through 7 7.0000 0 امیدوارم این بحثها مفید واقع شده باشند.
مطالب این قسمت از سایت http://matlabseven.blogfa.com گرفته شده اند. |
||
|
+
نوشته شده در شنبه بیستم بهمن 1386ساعت 23:51 توسط دوست تو
|
|
||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
رسم نمودار در مطلب قسمت اول: از این قسمت به بعد تصمیم گرفتم رسم نمودار در مطلب رو به صورت خلاصه و مفید شروع کنم: مطلب نمودارهای مختلفی را رسم می کند و این بحث در مطلب خیلی گسترده است اما سعی می کنم آنچه را که لازم به نظر میرسد توضیح دهم. دستور plot: شکل کلی این دستور به صورت زیر است: plot(x1,y1,'s1'x2,y2,'s2'…) مفهوم این دستور این است که شما می توانید y1 را بر حسب x1 و y2 را برحسب x2 را رسم کنید. مثلا فرض کنید می خواهیم تابع 1+cos(2x)را در بازه [-5 5] رسم کنیم پس به این صورت عمل عمل می کنیم: >> x=-5:0.1:5; >> y=1+cos(2*x); >> plot(x,y)
حال فرض کنید می خواهیم رنگ نمودار را قرمز و خط آن را ستاره ای کنیم ،پس می نویسیم: این همان s1 است که سیمبول محسوب می شود. >> plot(x,y,'r*') دیدید که برای این تغییرات علایمی را در کوتیشن قرار دادیم این تغییرات را می توانیم بر حسب جدول زیر مدل کنیم:
که می توانیم این تغییرات را در هر شکل ایجاد کنیم و این علایم را داخل کوتیشن کنار هم قرار دهیم. دستور ezplot: برای رسم توابع به کار می رود که در این هنگام دیکر حتی نیازی به تعریف بردار هم ندارید: فرض کنید می خواهیم cosh(x) را رسم کنیم پس داریم: ezplot('cosh(x)')
دستور semilogy: مقدار log(y) را جایگزین می کند . دستور semilogx: مقدار log(x) را جایگزین می کند . >> x=-5:0.1:5; >> y=exp(-2*x); >> semilogy(x,y) دستور title: برای تا یپ متن در بالای نمودار از آن استفاده می شود. title('your text') دستور grid: grid onخطوط شبکه ای ایجاد می کند, grid off این خطوط را از بین می برد. دستور box: box on جعبه محور های مختصات را ایجاد می کند.وbox off آن را از بین می برد. دستورات xlabel و ylabel وzlabel : به ترتیب برچسب هایی را در کنار محور های x و y وz ایجاد می کند. xlabel('your text') دستور gtext: پس از تایپ به صورت gtext('your text') اگر مکان نما روی figure قرار بگیرد می توانید متن را در هر نقطه ای قرار دهید. ادامه رسم نمودار . . . در این جلسه قصد دارم در مورد ایجاد تغییرات در یک شی گرافیکی صحبت کنم. هر زمان که شما یک نمودار را در مطلب رسم می کنید چند شی متفاوت ایجاد می شود:اول یک صفحه خالی است که figure نامیده می شود. دستور figure: یک پنجره خالی ایجاد می کند.که حاوی هیچ نموداری نیست. قسمت دوم قسمتی است که نمودار در آن رسم می شود و شامل محور های مختصات می باشد. و در مطلب axes نامیده می شود. دستور axes : یک figure رسم می کند که حاوی یک axes خالی است . و در نهایت چیزی است که در axes رسم می شود. اما همه این حرفها را گفتم تا این چیز را بدانید که تمام اشیا که بوجود می آیند دارای خواص منحصر به فرد خود نیز هستند مثلا زمانی که شما یک نمودار را رسم می کنید این نمودار دارای خواصی مثل رنگ زمینه ، نوع خطی که شکل با آن رسم می شود، قطر خط و . . . غیره می باشد که می توان تمام خواص یک شی را گرفت و همچنین آنها را به دلخواه خود تغییر داد که برای این کار از دستورات زیر استفاده می کنیم : دستور get: می توان خواص و یا یک خاصیت از یک شی را در یافت کرد. مثلا در زیر خواص نموداری را که در جلسه قبل رسم کردیم را با دستور get دریافت می کنیم: دتورات رسم را دوباره در زیر آورده ام: >> x=-5:0.1:5; >> y=1+cos(2*x); >> handel=plot(x,y); >> get(handel) Color: [0 0 1] EraseMode: 'normal' LineStyle: '-' LineWidth: 0.5000 Marker: 'none' MarkerSize: 6 MarkerEdgeColor: 'auto' MarkerFaceColor: 'none' XData: [1x101 double] YData: [1x101 double] ZData: [1x0 double] BeingDeleted: 'off' ButtonDownFcn: [] Children: [0x1 double] Clipping: 'on' CreateFcn: [] DeleteFcn: [] BusyAction: 'queue' HandleVisibility: 'on' HitTest: 'on' Interruptible: 'on' Selected: 'off' SelectionHighlight: 'on' Tag: '' Type: 'line' UIContextMenu: [] UserData: [] Visible: 'on' Parent: 157.0016 DisplayName: '' XDataMode: 'manual' XDataSource: '' YDataSource: '' ZDataSource: '' چیز هایی را که در بالا می بینید همان خواصی هستند که در مورد آنها صحبت کردم البته صحبت در مورد همه خواص بالا خارج از حوصله است و چند تا از خاصیت ها را ذکر کرده و با دستور set تغییر می دهیم: دستور set: توسط این دستور می توان خواص یک شی را به دلخواه تغییر داد: مثلا فرض کنید می خواهم رنگ نمودار را از آبی به قرمز و نوع marker آن را به ستاره ای با سایز 8 تغییر دهیم: پس از دستور set به ترتیب نام مشخصه و سپس مقدار آن را وارد می نماییم: >> set(handel,'color',[1 0 0],'marker','*','markersize',8) از دستورات set و get در طراحی رابط های گرافیکی به وفور استفاده می شود. رسم کردن رویه ها : رسم کردن رویه ها در MATLAB ، همانند رسم نمودار مبحث گسترده ای است ( البته برای حرفه ای ها ) . ولی در زیر چند مثال را آورده ام که امیدوارم برای شروع کار مفید مفید واقع شود : دستور meshgrid : آرایه های x و yرا برای نمودار های سه بعدی تولید می کند . >> [X,Y] = meshgrid(1:3,10:14) X = 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 Y = 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14 در مثال های آتی این دستور را در کنار دیگر دستورات رسم سه بعدی خواهیم آورد . دستور surf : نمودار صفحه ای (surface plot ) را رسم می کند . مثال :تابع را رسم کنید . xg=linspace(-5,5,20); [x,y]=meshgrid(xg,xg); z=2-x.^2-y.^2; surf(x,y,z) دستور surfc : خطوط تراز را روی صفحه ثابت z و در زیر رویه نمایش می دهد . xg=linspace(-5,5,20); [x,y]=meshgrid(xg,xg); z=2-x.^2-y.^2; surfc(x,y,z) دستور mesh : نمودار شبکه ای را رسم می کند . xg=linspace(-5,5,20); [x,y]=meshgrid(xg,xg); z=2-x.^2-y.^2; mesh(x,y,z) رسم کلاه مشهور مکزیکی : >> [x,y]=meshgrid(-8.2:0.5:8.2); >> r=sqrt(x.^2+y.^2); >> z=sin(r)./r; >> mesh(z) زیر نمودار ها : دستور subplot : در یک پنجره figure می توانیم بیش یک مجموعه از محورهای مختصات را رسم کنید . دستور subplot(m,n,p) پنجره figure جاری را به m*n ناحیه تبدیل کند و ناحیه p را به عنوان ناحیه فعال انتخاب می کند . زیر نمودارها به ترتیب از چپ به راست و بالا به پایین شماره گذاری می شوند . مثال : نمودارهای sin(x) ، cos(x) ، sinh(x) و cosh(x)را توسط زیر نمودار ها رسم کنیـد ؟ x=-5:0.1:5; y=sin(x); z=cos(x); y1=sinh(x); z1=cosh(x); subplot(2,2,1) plot(x,y) subplot(2,2,2) plot(x,z) subplot(2,2,3) plot(x,y1) subplot(2,2,4) plot(x,z1)
دستور area : از این تابع برای ساخت نموداری که از تعدادی نواحی رو هم انباشته شده تشکیل می شود ، استفاده کنید .دستور area(x,y) با دستور plot(x,y) برابر می باشد که در آن x,y هر دو بردار می باشند . با این تفاوت که فضای زیر نمودار رنگ می شود .در دستور area(x,y) ، y ماتریس و x هم ماتریس یا برداری می باشد که تعداد سطرهای آن با تعداد سطر های y برابر می باشد .اگر x نوشته نشود ، دستور area از مقدار پیش فرض x=1:size(y,1) استفاده می کند . مثال : z=cos(x); z=-pi:pi/5:pi; area([sin(z);cos(z)])
دستور fill : برای رنگ کردن یک چند ضلعی می توانید از این تابع استفاده کنید .دستور fill(x,y,’c’) یک چند ضلعی را که بر حسب بردار های ستونی x و y و رنگ c مشخص می شود رنگ می کند . مثال : به عنوان یک مثال ساده مثلثی با رنگ سبز را رسم می نماییم : >> x=[1 2 3]; >> y=[1 5 4]; >> fill(x,y,'g') دستور pie : با استفاده از تابع pie(a,b) می توانید نمودارهای استاندارد کیکی رسم کنید که در آن a برداری از مقادیر و b یک بردار منطقی اختیاری می باشد که قاچ یا قاچهایی را که می بایست از نمودار کیکی بیرون آورده شوند را توصیف می کند . >> a=[0.5 1 1.6 1.2 0.8 2.1]; >> pie(a,a==max(a)) نمودارهای قطبی : دستور polar : این تا بع داده ها را بر روی مختصات قطبی رسم می کند . شکل کلی این تابع به صورت زیر است : Polar(theta,r) که در آن theta آرایه ای از زاویه ها بر حسب رادیان بوده و r آرایه ای از فواصل می باشد . مثال : تا بعr=1+cos(theta) را رسم کنید : >> theta=0:pi/20:2*pi; >> r=1+cos(theta); >> polar(theta,r)
دستور bar : این تابع یک نمودار میله ای عمودی تولید می کند : >> x=-2.9:0.2:2.9; >> y=exp(-x.*x); >> bar(x,y)
دستور bar3 : نمودار میله ای سه بعدی را رسم می کند : نمودار بالا را با این دستور رسم می کنیم : >> x=-2.9:0.2:2.9; >> y=exp(-x.*x); >> bar3(x,y)
دستورstairs : یک نمودار stairs با هر پله بر روی نقطه ((x,y ترسیم می کند: >> x=-2.9:0.2:2.9; >> y=exp(-x.*x); stairs(x,y) دستور compass : این تابع یک نمودار قطبی با یک فلش کشیده شده از مبدا به مکان ((x,y تولید می کند . مختصات نقاطی که قرار است ترسیم شوند در مختصات کارتزین هستند نه قطبی . >> z=eig(randn(20)); >> compass(z) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
+
نوشته شده در شنبه بیستم بهمن 1386ساعت 23:35 توسط دوست تو
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||
|
توابع رشته ای : است .هر کا راکتر در دو بایت از حافظه ذخیره می شود .charیک رشته در مطلب آرایه ای از نوع یک متغیر کاراکتری هنگامی که یک رشته بدان نسبت داده می شود خود به خود به وجود می آید : مثال : >> str='matlabseven.blogfa' str = matlabseven.blogfa >> whos str Name Size Bytes Class str 1x18 36 char array Grand total is 18 elements using 36 bytes :ischarدستور برای چک کردن آرایه های کاراکتری به کار می رود اگر متغیر ورودی یک کاراکتر باشد این تابع یک و در غیر این صورت صفررا بر می گرداند . >> ischar str ans = 1 :doubleدستور تبدیل شوند.doubleبه charمتغیر ها می توانند با استفاده از این تابع از نوع >> a='matlab' a = matlab >> x=double(a) x = 109 97 116 108 97 98 :charدستور عکس عمل بالا را انجام می دهد یعنی متغیر ها را از نوع دابل به کاراکتری تبدیل می کند . >> char(x) ans = matlab ایجاد آرایه کاراکتری دو بعدی : امکان ایجاد آرایه های کاراکتری دو بعدی وجود دارد ولی بدین منظور سطرهای آرایه باید دارای طول یکسانی باشند. اگر یکی از سطر ها کوتاهتر از دیگری باشد آرایه کاراکتری تولید اشتباه می کند.چون برخلاف قانون بیان شده است. >> name=['hi';'salam']; ??? Error using ==> vertcat CAT arguments dimensions are not consistent. است.charآسانترین راه برای ایجاد آرایه کاراکتری استفاده از تابع >> name=char('abbas salimi','matlabseven') name = abbas salimi matlabseven : deblankدستور هر گونه فضای خالی اضافی را از انتهای یک رشته هنگام استخراج آن از درون یک آرایه از بین برد . >> A{1,1} = 'MATLAB '; A{1,2} = 'SIMULINK '; A{2,1} = 'Toolboxes '; A{2,2} = 'The MathWorks '; >> A A = 'MATLAB ' 'SIMULINK ' 'Toolboxes ' 'The MathWorks ' >> deblank(A) ans = 'MATLAB' 'SIMULINK' 'Toolboxes' 'The MathWorks' :strcatدستور دو یا چند رشته را به صورت افقی به هم متصل می کند .این تابع به فضا های خالی درون رشته ها کاری ندارد ولی فضاهای خالی بین دو رشته را حذف می کند: >> result=strcat('matlab','seven') result = matlabseven :strvcatدستور دو یا چند رشته را به صورت عمودی به هم وصل می کند: >> h=strvcat('welcom','to','matlabseven') h = welcom to matlabseven
|
||||
|
+
نوشته شده در شنبه بیستم بهمن 1386ساعت 23:23 توسط دوست تو
|
|
||||
|
|
|
|
|
عمليات ماتريسی مقدماتی در ابتدا می توان بردار ساده ای با 9 عنصر ساخت. a = [1 2 3 4 6 4 3 4 5] حالا می شود 2 را به هر یک از عناصر بردار اضافه و نتيجه را در یک بردار جدید ذخیره کنیم b = a + 2
A = [1 2 0;2 5 -1;4 10 -1] ما به سادگی می توانیم وارون(ترانهاده) ماتریس را بیابیم . B = A' حال می توان این دو ماتریس را در هم ضرب کنيم. باز هم توجه کنید که نرم افزارمطلب حق ندارد ماتربس را به عنوان جمعی از اعداد در نظر بگیرد مطلب می داند شما چه وقت با ماتریس سروکار دارید واز این رو محاسبات شما را تطبیق می دهد . C = A * B
C = A .* B بیایید معکوس ماتریس را پیدا کنیم . X = inv(A) این واقعیت را که ضرب یک ماتریس در خودش ,ماتریس واحد است را نشان میدهیم . I = inv(A) * A مطلب برای اکثر محاسبات عمومی ماتریس ,تابع دارد در اینجا توابعی برای بدست آوردن مقادیر ویژه وجود دارد . eig(A) svd(A) ما به راحتی میتوانیم ریشه های یک کثیرالجمله ای را با استفاده از تابع"roots" پیدا کنیم .این در حقیقت مقادیر ویژه ماتریس اصلی هستند . roots(p) نرم افزار "Matlab" کاربرد های زیادی ماورای محاسبات ماتریسی دارد . برای محاسبه "کانولوشن"دو بردار: q = conv(p,p) یا به منظور بدست آوردن کانولوشن دوباره و رسم نتیجه محاسبه r = conv(p,q) در هر زمان ما می توانیم فهرستی از متغیرهای ذخیره شده در حافظه را با استفاده از دستور "whos"یا"who" بدست آوریم. whos Name Size Bytes Class A 3x3 72 double array B 3x3 72 double array C 3x3 72 double array Grand total is 488 elements using 3904 bytes شما می توانید مقدار یک متغیر خاص را با تایپ نمودن نام آن دریافت کنید. A می توانید بیش از یک دستور را در یک خط با تفکیک نمودن هر دستور توسط کاما یا سمیکالن داشته باشیم .اگر شما یک متغیر را برای ذخیره شدن نتیجه یک عملیات انتخاب نکنید نتیجه در یک متغیر بنام "ans" ذخیره می شود . sqrt(-1), log(0) در اين مورد چون ما دستورات را با کاما تفکیک نمودیم نتیجه هر عملیات روی صفحه نمایش منعکس شده است همان طور که می بینیم نرم افزار مطلب براحتی با اعداد مختلط و بینهایت در محاسبات کار ميكند. sqrt(-1), log(0) اميدوارم اين برنامه به شما برای شروع کار برنامه نويسی با matlab کمک کافی کرده باشه . مطالب این پست از سایت http://www.prdev.com/search/aisearch.asp?id=183 گرفته شده است |
||
|
+
نوشته شده در یکشنبه هفتم بهمن 1386ساعت 7:45 توسط دوست تو
|
|
||
|
|
|
|
|
الگوريتم ها
برای حل مسائل مختلف توسط کامپيوتر بايد اين مسائل را به صورت مراحل عملياتی و تصميم گيری ساده ای که کامپيوتر قادر به اجرای آن باشد تبديل کرد. بدين ترتيب ليست مرتبی از مراحل عملياتی بدست می آيد که اجرای مرتب آنها منجر به حل مسئله توسط کامپيوتر می شود. اين ليست مرتب از مراحل عملياتی و تصميم گيری ، الگوريتم ناميده می شود.
در حالت کلی الگوريتم ها بايد ويژگی های زير را داشته باشند:
الف) الگوريتم بايد ما را به نتيجه مورد نظر برساند.
ب) در زمان محدود پايان يابد.
ج) دستورالعملها بايد به ترتيب منطقی پشت سرهم قرار گيرند.
د) جملات الگوريتم ها بايد به صورت امری ، سؤالی باشند.
ه) هر الگوريتم بايد نقطه آغاز و پايان داشته باشد.
يکی از توانايی هايی که در کامپيوتر وجود دارد استفاده از خانه های حافظه است که می توان در آن اطلاعات را قرار داد و در هر لحظه از اجرای الگوريتم می توان محتويات آن را تغيير داده و مقدار جديدی را در آن قرار دهيم اين ويژگی کارايی ما را برای حل مسائل پيچيده تر افزايش می دهد.
مثال : الگوريتم تعويض چرخ پنچر شده يک اتومبيل.
0- شروع.
1- جک را زير اتومبيل بگذاريد.
2- پيچهای چرخ پنچر شده را باز کنيد.
3- چرخ را خارج کنيد.
4- چرخ يدک را به جای چرخ پنچر شده بگذاريد.
5- پيچها را ببنديد.
6- اگر پيچها سفت نشده اند به مرحله 5 برو.
7- جک را پايين بياوريد.
8- چرخ پنچر شده را در صندوق عقب اتومبيل بگذاريد.
9- پايان.
مثال : الگوريتمی بنويسيد که دو عدد از ورودی دريافت شود و سپس تعيين شود که مجموع دو عدد بزرگتر از 20 است يا نه.
0- شروع .
1- دو عدد a و b را از ورودی در يافت کن.
2- a+b را محاسبه کن.
3- آيا a+b>20 است؟ اگر بلی به مرحله 6 برو.
4- بنويس خير.
5- به مرحله 7 برو.
6- بنويس بلی.
7- پايان.
با برنامه ريزی و ساماندهی دقيق می توان به راه حلی مناسب جهت حل يک مسئله به کمک کامپيوتر رسيد. هرگونه کم توجهی و بی دقتی در نوشتن الگوريتم ضمن بروز مشکلات بسيار، برنامه نويس را نيز از هدف خود دور خواهد کرد؛ لذا برای به هدف رسيدن بايد درک صحيح و کاملی از صورت مسئله داشت و سپس راه حل مورد نظر را به صورت الگوريتم بنويسيم. و در نهايت الگوريتم مورد نظر را به زبان برنامه نويسی مورد نظر تبديل کنيم. برای درک بهتر شيوه حل مسائل و نوشتن الگوريتم به مثالهای زير توجه کنيد:
مثال : الگوريتمی بنويسيد که مجموع اعداد طبيعی مضرب 7 و کوچکتر از 50 را حساب کند.
برای نوشتن اين الگوريتم به دو خانه حافظه نياز داريم.
0- شروع.
1- در خانه حافظه sum عدد صفر را قرار بده.
2- در خانه حافظه index عدد 7 را قرار بده.
3- مقدار index را با مقدارsum جمع کن
و حاصل را در sum قرار بده.
4- مقدار 7 را با مقدار index جمع کن
و حاصل را در index قرار بده.
5- آياindex بزگتراز 50 است،اگر خير به مرحله 3 برو.
6- محتوای sum را چاپ کن.
7- پايان.
در الگوريتم فوق مقادير حافظه sum و index تغيير می کند، تا اينکه سرانجام شرط " آيا index بزرگتر از 50 است " بلی می شود لذا محتوای sum در خروجی چاپ خواهد شد و الگوريتم به پايان می رسد. اما در مراحل قبلی شرط فوق خير می باشد، لذا الگوريتم ادامه پيدا می کند.
مثال : الگوريتمی بنويسيد که 1000 عدد را از ورودی دريافت کرده و کوچکترين را چاپ کند.
فرض کنيد که به شما ليستی از اعداد را می دهند، برای پيدا کردن کوچکترين عدد در ليست اولين عدد را به عنوان کوچکترين در نظر می گيريد سپس عدد بعدی را با آن مقايسه می کنيد، اگر عدد جديد از عدد قبلی کوچکتر بود عدد جديد را به عنوان کوچکترين در نظر می گيريد و گر نه همان عدد قبلی کوچکترين خواهد بود. اين روند را تا انتهای ليست ادامه می دهيد؛ در پايان عددی که در هر بررسی به عنوان کوچکترين عدد بود، جواب مورد نظر ما خواهد بود. توجه کنيد که در اين روال شما همواره يک عدد را در ذهن خود در نظر گرفته بوديد، برای نوشتن الگوريتم مورد نظر ما يک خانه حافظه را به کوچکترين عدد درهر مرحله اختصاص می دهيم.
0- شروع.
1- min را دريافت کن.
2- i =1 .
3- a را دريافت کن.
4- اگر a |
||
|
+
نوشته شده در شنبه ششم بهمن 1386ساعت 0:11 توسط دوست تو
|
|
||
|
|
|
|
|
اللهم صل علی محمد و آل محمد
اللهم صل علی محمد و آل محمد
|
||
|
+
نوشته شده در چهارشنبه نوزدهم دی 1386ساعت 7:51 توسط دوست تو
|
|
||
|
|
|
|
|
E نکته : برای تولید ماتریس همانی ( واحد ) مرتبه ی n از دستور eye(n) استفاده می کنیم . E نکته : a(:,: ) همان ماتریس a است و دستور b=a ( : ) ماتریس a را ستون به ستون در بردار ستونی b ذخیره می کند . E نکته : به منظور الحاق دو ماتریس با استفاده از کاما ( یا فضای خالی ) بایستی تعداد سطرها ی دو ماتریس برابر باشند هم چنین برای الحاق دو ماتریس با استفاده از ; بایستی تعداد ستونهای ماتریسها برابر باشند . E نکته :هر گاه بخواهیم فاصله ی [a,b] را به n زیر فاصله (شامل n+1 نقطه ) تقسیم بندی کنیم دو روش داریم . روش اول استفاده از عملگر: و نوشتن دستوری به صورت x=a:h:b است که در آن h=(b-a)/n است . روش دوم استفاده از تابع linspace است که به صورت linspace(a,b,n) مورد استفاده قرار می گیرد که در آن a نقطه ی انتهایی سمت چپ فاصله و b نقطه ی انتهایی سمت راست فاصله و n تعداد نقاط مورد نظر است . به عنوان مثال هر گاه بخواهیم فاصله ی [0,1] را به 10 زیر فاصله ( شامل 11 نقطه ) به طول 1/0 تقسیم بندی کنیم از یکی از دو روش زیر استفاده کنیم : X= 0: 0.1: 1 X= linspace ( 0,1,11 ) اگر نمو بین نقاط تقسیم شده را بدانیم بهتر است از عملگر : استفاده نماییم و اگر تعداد نقاط تقسیم معلوم باشد استفاده از تابع linspace ترجیح داده میشود . |
||
|
+
نوشته شده در دوشنبه هفدهم دی 1386ساعت 10:55 توسط دوست تو
|
|
||