MATLAB  مخفف عبارت (Matrix Laboratory) به معنای (آزمایشگاه ماتریس) میباشد. این نرم افزار یک زبان برنامهنویسی و محیطی مخصوص برای محاسبات عددی میباشد که امکاناتی از قبیل عملیات ماتریسی، رسم توابع و دادهها، پیاده سازی الگوریتم ها، امکان ایجاد رابط های کاربر و تعامل با برنامه های نوشته شده به زبان های دیگر را فراهم میسازد. گستردگی کاربرد، جعبه ابزارهای عمومی و تخصصی متنوع، این نرم افزار را به پرکاربردترین ابزار مهندسی روز مبدل کرده است. بطوریکه تمام مهندسان و کارشناسان رشته های مرتبط از جمله هوا-فضا، بیولوژی، اقتصاد، مخابرات، الکترونیک، کنترل، پردازش تصویر، اتوماسیون و تمامی تخصصهای مرتبط با ریاضیات و پردازش سیگنال لزوماً بایستی از تسلط کافی بر این نرم افزار و توانایی برنامهنویسی در محیط آن برخوردار باشند. برنامه نویسی در MATLAB، بدلیل سطح بسیار بالای آن، بسیار ساده، قدرتمند و انعطاف پذیر است و بسیاری از ابزارها و اشکال برنامه نویسی که در محیط های دیگر به سختی مورد استفاده قرار میگیرند، در MATLAB به راحتی در دسترس میباشند..

قابلیتهای اکتسابی:

کسب مهارت لازم برای استفاده از نرم افزار MATLAB به عنوان نرم افزار طراحی و تحلیل مسایل علمی و تحقیقاتی
کسب مهارت در انجام عملیات ریاضی با ماتریس ها
کسب مهارت در حل مسائل ریاضی به صورت سمبلیک
توانایی رسم سطوح و خطوط با استفاده از نرم افزار MATLAB

حداقل شرایط شرکت کنندگان : آشنائی با مباحث مقدماتی ریاضیات شامل ماتریس و دترمینان، جبرخطی، معادلات دیفرانسیل معمولی

۱. اولین گام در متلب

  • شروع متلب (help – helpwin- helpdesk-demo-exit-quit)
  • گام اول – نوشتن فرمول  (ans)
  • تعریف ماتریس ها
  • متغییر ها در متلب (who-whos-clear-;)
  • عملگر دونقطه – The Colon Operator (:)
  • فرمان Linspace
  • ترسیم بردار ( plot )

۲. تایپ در متلب

  • ویرایش خط فرمان و کلید های میانبر
  • نوشتن دستورات و متتن های طولانی در خط فرمان (‘- …)
  • رو نوشت و جایگزاری کردن (Copying and Pasting)
  • باز خوانی سریع فرمان

۳. ماتریس ها

  • نوشتن ماتریس در متلب
  • ماتریس های به هم پیوسته (repmat)
  • تولید ماتریس های مفید و پر کاربرد (zeros , ones , rand , rands , eye)
  • زیر نویس ماتریس(rand , 🙂
  • فرمان end به عنوان زیر نویس ماتریس (end , : , spiral)
  • حذف یک ردیف یا ستون در ماتریس (:, [])
  • محاسبه ماتریس ها
  • ترانهاده ماتریس (‘ – ‘.)

۴. اساس و مقدمات گرافیک

  • اساس و مقدمات گرافیک در متلب (plot)
  • ترسیم چندین خط یا نمودار در یک فرمان (plot)
  • اضافه کردن ترسیم (hold on , hold off)
  • ترسیم نمودار ماتریس(plot , grid)
  • فرمان های (clf – close – close all – figure – clc)
  • رسم چندین شکل در یک پنجره با دستور subplot
  • ترسیم سه بعدی (plot3 – rotate3d)
  • محور (axis)
  • برچسب (label, title, text, gtext, box)

۵. جبر ماتریس ها

  • جبر ماتریس ها (pascal – inv , *. , ‘ , ^.)

۶. تجزیه و تحلیل داده ها

  • تجزیه و تحلیل داده ها
  • عملگر های منطقی و رابطه ای در متلب

۷. گرافیک توابع دو متغیره

  • پایه ترسیم (meshgrid – mesh – surf- surfl – surfc – contourf – contour3-imagesc)
  • نقشه رنگ ها ( colour maps)
  • میله رنگ (color bar)
  • استخراج دامنه های منطقی
  • دامنه های سطوح غیر مستطیلی

M .۸ فایل ها (M-Files)

  • مقدمه M-files
  • اسکریپت ها
  • تابع (function)
  • تابع های if – else – elseif
  • تابع های Switch- case – otherwise
  • تابع while
  • تابع for
  • بهینه سازی کد ها برای تسریع زمان اجرای برنامه
  • مقایسه رشته ها

۹٫ داده های فایل ها

  • فرمت های متلب (save و load)
  • فرمت  ASCII
  • دیگر فرمت ها

۱۰٫ سایر مطالب مقدماتی

  •  کار با دایرکتور
  • اطلاعات از دست رفته
  • ترسیم در مختصات قطبی
  • تبدیل فوریه
آغاز برنامه نویسی در 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 درست باشد دستورات شماره ۱ اجرا می شوند، در غیر این صورت شرط ۲ (مقابل

Elseif) بررسی می شود در صورتی که درست باشد دستورات ۱ ودر غیر این صورت شرط ۳ بررسی می

شود … در صورتی کهn شرط  بررسی شد و درست نبود دستورات قسمت else اجرا می شوند.

 

MATLABاعداد مختلط در

اعداد مختلط رادر  matlab به راحتی می توان ایجاد کرد.برای این کار کافیست ازj وi استفاده کرد به مثال زیر توجه کنید:

>> a=1+2j

 

a =

۱٫۰۰۰۰ + ۲٫۰۰۰۰i

>> b=2-3i

b =

۲٫۰۰۰۰ – ۳٫۰۰۰۰i

می بینید که به   به راحتی می توان عدد مختلط ساخت توجه کنید که۱+j2  درست نیست مگر اینکه از علامت * استفاده کنیم.

 

>> 1+i2

??? Undefined function or variable ‘i2’.

 

>> 1+i*2

 

ans =

 

۱+ ۲٫۰۰۰۰i

چند تابع برای کار با اعداد مختلط:

 

:absتابع

 

این تابع برای بدست آوردن اندازه در اعداد مختلط بکار می رود:

 

>> a=1+2j

 

a =

 

۱٫۰۰۰۰ + ۲٫۰۰۰۰i

 

>> abs(a)

 

ans =

 

۲٫۲۳۶۱

:angleتابع

 

اندازه عدد مختلط را بر حسب رادیان می دهد:

>> a=1+2j;

>> angle(a)

 

ans =

 

۱٫۱۰۷۱

:conjتابع

 

مزدوج مختلط را محاسبه می کند:

 

>> conj(a)

 

ans =

 

۱٫۰۰۰۰ – ۲٫۰۰۰۰i

:imagتابع

 

قسمت موهومی عدد مختلط را می دهد:

 

۱٫۰۰۰۰ – ۲٫۰۰۰۰i

 

>> imag(a)

 

ans =

 

۲

:realتابع

 

قسمت حقیقی عدد مختلط را می دهد:

>> real(a)

 

ans =

 

۱

 

:isrealتابع

 

اگر متغیر حقیقی باشد عدد یک و اگر موهومی باشد صفر را بر می گرداند:

 

>> a=1+2j;

>> b=6;

>> isreal(a)

 

ans =

 

۰

 

>> isreal(b)

 

ans =

 

۱

:complexتابع

 

یک عدد مختلط ایجاد می کند:

>> complex(5,10)

 

ans =

 

۵٫۰۰۰۰ +۱۰٫۰۰۰۰i

 

عدد اول در پرانتز قسمت حقیقی و عدد دوم قسمت موهومی است.

 

 

:matlabچند جمله ایها در

 

ایجاد چند جمله ای :

 

فرض کنید می خواهیم چند جمله ای زیر را در مطلب ایجاد کنیم:

x4-12x3+25x+116

 

برای شناساندن این چند جمله ای به مطلب کافیست یک بردار از ضرایب این چند جمله ای در مطلب تشکیل دهیم .

 

p=[1 -12 0 25 116];

بهره ببرید:rootاگر بخواهید ریشه های این چند جمله ای را در مطلب بدست آورید کافیست از دستور

 

:rootدستور

 

در زیر با استفاده ازاین دستور ریشه های چند جملهای را بدست آورده ایم:

>> r=roots(p)

 

r =

 

۱۱٫۷۴۷۳

۲٫۷۰۲۸

-۱٫۲۲۵۱ + ۱٫۴۶۷۲i

-۱٫۲۲۵۱ – ۱٫۴۶۷۲i

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

 

فرض کنید می خواهیم چند جمله ای های زیر را ضرب کنیم:

x3+2x2+3x+4

x3+4x2+9x+16

 

:convدستور

 

این دستوررا برای ضرب چند جمله ای ها استفاده می کنیم:

 

نتایج را در زیر مشاهده می کنیم:

 

>> a=[1 2 3 4];

>> b=[1 4 9 16];

>> c=conv(a,b)

 

c =

 

۱     ۶   ۲۰   ۵۰   ۷۵   ۸۴   ۶۴

 

:deconvدستور

 

از این دستور برای تقسیم چند جمله ای ها استفاده می کنیم:

 

را بر هم تقسیم می کنیمb  وa

 

>> [q,r]=deconv(a,b)

 

q =

 

۱

 

 

r =

 

۰   -۲   -۶   -۱۲

به ترتیب خارج قسمت و باقیمانده هستند.r و qدر بالا

 

نکته:استفاده از عدد صفر را هرگز از یاد نبرید اگر ضریبی از یک توان خاص وجود نداشت باید حتما از عدد صفر استفاده کنید.

 

: polyderدستور

 

از این دستور برای مشتق گیری از چند جمله ایها استفاده می کنیم:

 

ضرایب یک چند جمله ایست: با استفاده از این دستور به راحتی مشتق گیری می کنیم:aفرض کنید

 

>> a=[1 5 18 24 39 7];

>> s=polyder(a)

 

s =

 

۵   ۲۰   ۵۴   ۴۸   ۳۹

:polyintدستور

 

از این دستور برای انتگرالگیری در چند جمله ایها استفاده می کنیم:

انتگرال چند جمله ای بالا را محاسبه می کنیم:

.

>> a=[1 5 18 24 39 7];

>> i=polyint(a)

 

i =

 

Columns 1 through 5

 

۰٫۱۶۶۷   ۱٫۰۰۰۰   ۴٫۵۰۰۰   ۸٫۰۰۰۰   ۱۹٫۵۰۰۰

 

Columns 6 through 7

 

۷٫۰۰۰۰         ۰

امیدوارم این بحثها مفید واقع شده باشند.

 

 

مطالب این قسمت از سایت http://matlabseven.blogfa.com گرفته شده اند.

 

 

رسم نمودار در متلب
رسم نمودار در مطلب قسمت اول:

 

از این قسمت به بعد تصمیم گرفتم رسم نمودار در مطلب رو به صورت خلاصه و مفید شروع کنم:

 

مطلب نمودارهای مختلفی را رسم می کند و این بحث در مطلب خیلی گسترده است اما سعی

می کنم آنچه را که لازم به نظر میرسد توضیح دهم.

 

دستور plot:

 

شکل کلی این دستور به صورت زیر است:

 

plot(x1,y1,’s1’x2,y2,’s2’…)

 

مفهوم این دستور این است که شما می توانید y1 را بر حسب x1 و y2 را برحسب x2 را رسم کنید.

 

مثلا فرض کنید می خواهیم تابع ۱+cos(2x)را در بازه [-۵ ۵] رسم کنیم پس به این صورت عمل

عمل می کنیم:

 

>> x=-5:0.1:5;

>> y=1+cos(2*x);

>> plot(x,y)

 

 

 

حال فرض کنید می خواهیم رنگ نمودار را قرمز و خط آن را ستاره ای کنیم ،پس می نویسیم:

این همان s1 است که سیمبول محسوب می شود.

 

>> plot(x,y,’r*’)

 

 

 

 

 

دیدید که برای این تغییرات علایمی را در کوتیشن قرار دادیم این تغییرات را می توانیم بر حسب جدول زیر مدل کنیم:

 

نماد رنگ نماد علایم نماد نوع خط
b آبی . نقطه توپر
g سبز o دایره : نقطه چین
r قرمز + علامت جمع .- خط نقطه
c فیروزه ای * ستاره خط چین
m ارغوانی s مربع    
y زرد x علامت ضربدر    
k سیاه d لوزی    
w سفید v مثلث رو به پایین    
    ^ مثلث رو به بالا    
    < مثلث رو به چپ    
    > مثلث رو به راست    
    p ستاره پنج پر    
    h ستاره شش پر    

 

 

که می توانیم این تغییرات را در هر شکل ایجاد کنیم و این علایم را داخل کوتیشن کنار هم قرار دهیم.

 

دستور 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: [1×101 double]

YData: [1×101 double]

ZData: [1×0 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 آن را به ستاره ای

با سایز ۸ تغییر دهیم:

 

پس از دستور set به ترتیب نام مشخصه و سپس مقدار آن را وارد می نماییم:

 

>> set(handel,’color’,[1 0 0],’marker’,’*’,’markersize’,8)

 

 

از دستورات set و get در طراحی رابط های گرافیکی به وفور استفاده می شود.

 

 

 

رسم کردن رویه ها :

 

رسم کردن رویه ها در MATLAB ، همانند رسم نمودار مبحث گسترده ای است ( البته

برای حرفه ای ها ) . ولی در زیر چند مثال را آورده ام که امیدوارم برای شروع کار

مفید مفید واقع شود :

 

دستور meshgrid :

 

آرایه های x و yرا برای نمودار های سه بعدی تولید می کند .

 

 

>> [X,Y] = meshgrid(1:3,10:14)

 

X =

 

۱     ۲     ۳

۱     ۲     ۳

۱     ۲     ۳

۱     ۲     ۳

۱     ۲     ۳

 

 

Y =

 

۱۰   ۱۰   ۱۰

۱۱   ۱۱   ۱۱

۱۲   ۱۲   ۱۲

۱۳   ۱۳   ۱۳

۱۴   ۱۴   ۱۴

 

در مثال های آتی این دستور را در کنار دیگر دستورات رسم سه بعدی خواهیم آورد .

 

دستور 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)

 

http://matlabseven.blogfa.com   گرفته شده است مطالب این بخش از سایت

 

 

رشته ها در متلب
توابع رشته ای :

 

است .هر کا راکتر در دو بایت از حافظه ذخیره می شود .charیک رشته در مطلب آرایه ای از نوع

 

یک متغیر کاراکتری هنگامی که یک رشته بدان نسبت داده می شود خود به خود به وجود می آید :

 

مثال :

 

 

>> str=’matlabseven.blogfa’

 

str =

 

matlabseven.blogfa

 

>> whos str

Name     Size                   Bytes Class

 

str       ۱x18                       ۳۶ char array

 

Grand total is 18 elements using 36 bytes

 

:ischarدستور

برای چک کردن آرایه های کاراکتری به کار می رود اگر متغیر ورودی یک کاراکتر باشد این تابع یک و در غیر این صورت صفررا بر می گرداند .

 

 

>> ischar str

 

ans =

 

۱

 

:doubleدستور

 

تبدیل شوند.doubleبه charمتغیر ها می توانند با استفاده از این تابع از نوع

 

 

>> a=’matlab’

 

a =

 

matlab

 

>> x=double(a)

 

x =

 

۱۰۹   ۹۷   ۱۱۶   ۱۰۸   ۹۷   ۹۸

 

: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

 

مقایسه رشته ها:

 

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

 

:strcmpدستور

 

تشخیص می دهد که آیا دو رشته با هم برابرند یا نه .

>> str1=’hello’;

>> str2=’Hello’;

>> str3=’help’;

>> strcmp(str1,str2)

 

ans =

 

۰

 

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

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

 

:strcmpiدستور

 

بدون در نظر گرفتن بزرگی و کوچکی حروف برابری آنها را مقایسه می کند:

 

>> strcmpi(str1,str2)

 

ans =

 

۱

 

>> strcmpi(str1,str3)

 

ans =

 

۰

:strncmp دستور

 

کاراکتر اول دو رشته مشابه هستند یا نه ؟nتشخیص می دهد که آیا

 

>> strncmp(str1,str3,2)

 

ans =

 

۱

 

>> strncmp(str1,str3,3)

 

ans =

 

۱

 

>> strncmp(str1,str3,4)

 

ans =

 

۰

برابرند . help وhelloسه حرف اول از

 

: strncmpiدستور

.

 

nبدون در نظر گرفتن بزرگی و کوچکی حروف برابری آنها را در

کاراکتر اول محاسبه می کند.

 

>> strncmpi(str1,str3,3)

 

ans =

 

۱

 

>> strncmpi(str1,str3,4)

 

ans =

 

۰

 

:isletterدستور

 

مشخص می کند که یک کاراکتر حرف است یا نه در غیر این صورت

صفر بر می کرداند.

 

>> matlabseven=’matlab7′;

>> isletter(matlabseven)

 

ans =

 

۱     ۱     ۱     ۱     ۱     ۱     ۰

 

:isspaceدستور

 

به ازای فضاهای خالی یک بر می گرداند:

 

>> matlabseven=’how are you’;

>> isspace(matlabseven)

 

ans =

 

۰     ۰     ۰     ۱     ۰     ۰     ۰     ۱     ۰     ۰     ۰

 

:findstrدستور

 

درون یک رشته را برای یک کلمه جستجو می کند:

str=’i love learning matlab in matlabseven’;

 

>> findstr(str,’matlab’)

 

ans =

 

۱۷        ۲۷

دو بار در عبارت بالا آمده است .کاراکتر۱۷و۲۷matlabکلمه

 

: strmatchدستور

 

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

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

کاراکتر های مورد نظر ایجاد می کند.

 

ایجاد میکنیم :strvcatیک آرایه کاراکتری با

 

>> x = strmatch(‘max’, strvcat(‘max’, ‘minimax’, ‘maximum’))

 

x =

 

۱

۳

: strrep دستور

 

عمل جستجو و جایگزینی را انجام می دهد:شکل کلی آن به صورت زیر است:

 

result=strrep(str,srch,repl)

 

همان رشته ای است که قرار است بررسی شود.str

رشته ای است که باید جستجو شود.srch

رشته جایگزین شونده است.repl

 

 

>> str=’i love matlab’;

>> result=strrep(str,’matlab’,’matlabseven’)

 

result =

 

i love matlabseven

 

:strtok دستور

 

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

درصورت عدم ذکر کاراکتر محدود ساز در ورودی کاراکتر پیش فرض که فضای سفید

می باشد مورد استفاده قرار می گیرد.

 

شکل کلی آن به صورت زیر است :

 

[token,remainder]=strtok(string,delim)

 

رشته ورودی است .string

که اختیاری است مجموعه ای از کاراکتر های محدود سازاست . delim

قرار میگیرد اولین مجموعه کاراکترهایی را که قبل از کاراکتر محدود ساز token

می آید.delim باقی رشته است که بعد از remainder و درانتها

 

>> [token,remainder]=strtok(‘here is matlabseven’)

 

token =

 

here

 

 

remainder =

 

is matlabseven

 

مطالب این قسمت بر گرفته از سایت  http://www.matlabseven.blogfa.com/post-18.aspx  است.

 

 

 

 

 

 

عملیات ماتریسی در متلب
عملیات ماتریسی مقدماتی

در ابتدا می توان بردار ساده ای با ۹ عنصر ساخت.

a = [1 2 3 4 6 4 3 4 5]

a =
۱ ۲ ۳ ۴ ۶ ۴ ۳ ۴

حالا می شود ۲ را به هر یک از عناصر بردار اضافه و نتیجه را در یک بردار جدید ذخیره کنیم

 

b = a + 2

b =
۳ ۴ ۵ ۶ ۸ ۶ ۵ ۶ ۷
یکی از زمینه های برتری مطلب محاسبه ماتریسی آن است ساختن یک ماتریس به سادگی ساختن یک بردار است با استفاده از سمیکالن می توان سطرهای یک ما تریس را جدا کرد .

A = [1 2 0;2 5 -1;4 10 -1]
A =
۱   ۲   ۰
۲   ۵   -۱
۴  ۱۰  -۱

ما به سادگی می توانیم وارون(ترانهاده) ماتریس را بیابیم .

B = A’
B =
۱  ۲  ۴
۲  ۵  ۱۰
۰ -۱  -۱

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

C = A * B

C =
۵ ۱۲ ۲۴ ۱۲ ۳۰ ۵۹ ۲۴ ۵۹ ۱۱۷
در هنگام ضرب ماتریس با استفاده از عملگر(*) می توان دو ماتریس یا دو بردار را در هم ضرب نمود .

C = A .* B

C =
۱ ۴ ۰ ۴ ۲۵ -۱۰ ۰ -۱۰ ۱

بیایید معکوس ماتریس را پیدا کنیم .

X = inv(A)

X =
۵ ۲ -۲
-۲ -۱ ۱
۰ -۲ ۱

این واقعیت را که ضرب یک ماتریس در خودش ,ماتریس واحد است را نشان میدهیم .

I = inv(A) * A

I =
۱ ۰ ۰ ۰ ۱ ۰ ۰

مطلب برای اکثر محاسبات عمومی ماتریس ,تابع دارد در اینجا توابعی برای بدست آوردن مقادیر ویژه وجود دارد .

eig(A)

ans =
۳٫۷۳۲۱ ۰٫۲۶۷۹ ۱٫۰۰۰۰

 

svd(A)

ans = 12.3171 0.5149 0.1577

ما به راحتی میتوانیم ریشه های یک کثیرالجمله ای را با استفاده از تابع”roots” پیدا کنیم .این در حقیقت مقادیر ویژه ماتریس اصلی هستند .

roots(p)

ans =
۳٫۷۳۲۱ ۱٫۰۰۰۰ ۰٫۲۶۷۹

نرم افزار “Matlab” کاربرد های زیادی ماورای محاسبات ماتریسی دارد .

برای محاسبه “کانولوشن”دو بردار:

q = conv(p,p)

q =
۱ -۱۰ ۳۵ -۵۲ ۳۵ -۱۰ ۱

یا به منظور بدست آوردن کانولوشن دوباره و رسم نتیجه محاسبه

r = conv(p,q)

r =
۱ -۱۵ ۹۰ -۲۷۸ ۴۸۰ -۴۸۰ ۲۷۸ -۹۰ ۱۵ -۱

در هر زمان ما می توانیم فهرستی از متغیرهای ذخیره شده در حافظه را با استفاده از دستور “whos”یا”who” بدست آوریم.

whos

Name   Size   Bytes Class

A         ۳x3    ۷۲ double array

B         ۳x3     ۷۲ double array

C         ۳x3     ۷۲ double array

Grand total is 488 elements using 3904 bytes

شما می توانید مقدار یک متغیر خاص را با تایپ نمودن نام آن دریافت کنید.

A

A =
۱  ۲   ۰
۲  ۵  -۱
۴ ۱۰ -۱

می توانید بیش از یک دستور را در یک خط با تفکیک نمودن هر دستور توسط کاما یا سمیکالن داشته باشیم .اگر شما یک متغیر را برای ذخیره شدن نتیجه یک عملیات انتخاب نکنید نتیجه در یک متغیر بنام “ans” ذخیره می شود .

sqrt(-1), log(0)

ans =
۰ + ۱٫۰۰۰۰i
Warning: Log of zero.

ans =
-Inf

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

sqrt(-1), log(0)

ans =
۰ + ۱٫۰۰۰۰i
Warning: Log of zero.
ans = -Inf

امیدوارم این برنامه به شما برای شروع کار برنامه نویسی با matlab  کمک کافی کرده باشه .

مطالب این پست از سایت http://www.prdev.com/search/aisearch.asp?id=183  گرفته شده است

 

 

 

الگوریتم یک برنامه
الگوریتم ها برای حل مسائل مختلف توسط کامپیوتر باید این مسائل را به صورت مراحل عملیاتی و تصمیم گیری ساده ای که کامپیوتر قادر به اجرای آن باشد تبدیل کرد. بدین ترتیب لیست مرتبی از مراحل عملیاتی بدست می آید که اجرای مرتب آنها منجر به حل مسئله توسط کامپیوتر می شود. این لیست مرتب از مراحل عملیاتی و تصمیم گیری ، الگوریتم نامیده می شود. در حالت کلی الگوریتم ها باید ویژگی های زیر را داشته باشند: الف) الگوریتم باید ما را به نتیجه مورد نظر برساند. ب) در زمان محدود پایان یابد. ج) دستورالعملها باید به ترتیب منطقی پشت سرهم قرار گیرند. د) جملات الگوریتم ها باید به صورت امری ، سؤالی باشند. ه) هر الگوریتم باید نقطه آغاز و پایان داشته باشد. یکی از توانایی هایی که در کامپیوتر وجود دارد استفاده از خانه های حافظه است که می توان در آن اطلاعات را قرار داد و در هر لحظه از اجرای الگوریتم می توان محتویات آن را تغییر داده و مقدار جدیدی را در آن قرار دهیم این ویژگی کارایی ما را برای حل مسائل پیچیده تر افزایش می دهد. مثال : الگوریتم تعویض چرخ پنچر شده یک اتومبیل. ۰- شروع. ۱- جک را زیر اتومبیل بگذارید. ۲- پیچهای چرخ پنچر شده را باز کنید. ۳- چرخ را خارج کنید. ۴- چرخ یدک را به جای چرخ پنچر شده بگذارید. ۵- پیچها را ببندید. ۶- اگر پیچها سفت نشده اند به مرحله ۵ برو. ۷- جک را پایین بیاورید. ۸- چرخ پنچر شده را در صندوق عقب اتومبیل بگذارید. ۹- پایان. مثال : الگوریتمی بنویسید که دو عدد از ورودی دریافت شود و سپس تعیین شود که مجموع دو عدد بزرگتر از ۲۰ است یا نه. ۰- شروع . ۱- دو عدد a و b را از ورودی در یافت کن. ۲- a+b را محاسبه کن. ۳- آیا a+b>20 است؟ اگر بلی به مرحله ۶ برو. ۴- بنویس خیر. ۵- به مرحله ۷ برو. ۶- بنویس بلی. ۷- پایان. با برنامه ریزی و ساماندهی دقیق می توان به راه حلی مناسب جهت حل یک مسئله به کمک کامپیوتر رسید. هرگونه کم توجهی و بی دقتی در نوشتن الگوریتم ضمن بروز مشکلات بسیار، برنامه نویس را نیز از هدف خود دور خواهد کرد؛ لذا برای به هدف رسیدن باید درک صحیح و کاملی از صورت مسئله داشت و سپس راه حل مورد نظر را به صورت الگوریتم بنویسیم. و در نهایت الگوریتم مورد نظر را به زبان برنامه نویسی مورد نظر تبدیل کنیم. برای درک بهتر شیوه حل مسائل و نوشتن الگوریتم به مثالهای زیر توجه کنید: مثال : الگوریتمی بنویسید که مجموع اعداد طبیعی مضرب ۷ و کوچکتر از ۵۰ را حساب کند. برای نوشتن این الگوریتم به دو خانه حافظه نیاز داریم. ۰- شروع. ۱- در خانه حافظه sum عدد صفر را قرار بده. ۲- در خانه حافظه index عدد ۷ را قرار بده. ۳- مقدار index را با مقدارsum جمع کن و حاصل را در sum قرار بده. ۴- مقدار ۷ را با مقدار index جمع کن و حاصل را در index قرار بده. ۵- آیاindex بزگتراز ۵۰ است،اگر خیر به مرحله ۳ برو. ۶- محتوای sum را چاپ کن. ۷- پایان. در الگوریتم فوق مقادیر حافظه sum و index تغییر می کند، تا اینکه سرانجام شرط ” آیا index بزرگتر از ۵۰ است ” بلی می شود لذا محتوای sum در خروجی چاپ خواهد شد و الگوریتم به پایان می رسد. اما در مراحل قبلی شرط فوق خیر می باشد، لذا الگوریتم ادامه پیدا می کند. مثال : الگوریتمی بنویسید که ۱۰۰۰ عدد را از ورودی دریافت کرده و کوچکترین را چاپ کند. فرض کنید که به شما لیستی از اعداد را می دهند، برای پیدا کردن کوچکترین عدد در لیست اولین عدد را به عنوان کوچکترین در نظر می گیرید سپس عدد بعدی را با آن مقایسه می کنید، اگر عدد جدید از عدد قبلی کوچکتر بود عدد جدید را به عنوان کوچکترین در نظر می گیرید و گر نه همان عدد قبلی کوچکترین خواهد بود. این روند را تا انتهای لیست ادامه می دهید؛ در پایان عددی که در هر بررسی به عنوان کوچکترین عدد بود، جواب مورد نظر ما خواهد بود. توجه کنید که در این روال شما همواره یک عدد را در ذهن خود در نظر گرفته بودید، برای نوشتن الگوریتم مورد نظر ما یک خانه حافظه را به کوچکترین عدد درهر مرحله اختصاص می دهیم. ۰- شروع. ۱- min را دریافت کن. ۲- i =1 . 3- a را دریافت کن. ۴- اگر a=1000 به مرحله ۸ برو. ۷- به مرحله ۳ برو. ۸- min را چاپ کن. ۹- پایان. الگوریتم های قبلی به صورت جملات فارسی بودند که سبب طولانی و حجیم شدن الگوریتم می شدند. ولی الگوریتم اخیر بیشتر به صورت جملات ریاضی بود. این شیوه سبب راحتی درک الگوریتم و ساده شدن نگارش آن می شود. از این به بعد نیز الگوریتم ها را به شیوه جدید نگارش خواهیم کرد. شما نیز سعی کنید از این شیوه استفاده کنید. مثال : الگوریتمی بنویسید که سه عدد از ورودی دریافت شود و تعیین شود که این اعداد می توانند اضلاع مثلث باشند یا خیر. ۰- شروع. ۱- a وb وc را از ورودی بگیر. ۲- اگر a>b+c به ۷ برو. ۳- اگر b>a+c به ۷ برو. ۴- اگرc>a+b به ۷ برو. ۵- بنویس ” بلی “. ۶- به ۸ برو. ۷- بنویس ” خیر “. ۸- پایان. فلوچارت در عمل برای نمایش الگوریتم از یک فلوچارت ( شمای جریان عملیات ) استفاده می شود. در حقیقت فلوچارت روش تصویری و استاندارد نمایش الگوریتم است. در رسم فلوچارت علائم و نمادهای استانداردی به کار می رود که هر کدام دارای معانی ویژه ای هستند. از شکل بیضی افقی برای شروع و پایان عملیات استفاده می شود. از شکل مستطیل برای نمایش مراحل پردازشی استفاده می شود و در داخل آن عمل مورد نظر نوشته می شود. این نماد ممکن است چندین ورودی داشته باشد ولی تنها یک خروجی دارد. از نماد لوزی برای نشان دادن مراحل تصمیم گیری استفاده می گردد و شرط یا سؤال مورد نظر در داخل لوزی نوشته می شود. از متوازی الاضلاع برای نشان دادن ورودی یا خروجی استفاده می شود. مطالب این قسمت بر گرفته از سایت http://cppprograms.blogfa.com/post-9.aspx میباشد.
+ نوشته شده در  شنبه ششم بهمن ۱۳۸۶ساعت ۰:۱۱  توسط دوست تو  |  نظر بدهید

 

 

اللهم صل علی محمد و آل محمد

 

 

اللهم صل علی محمد و آل محمد

 

 

 

 

 

خوب بخون
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 تعداد نقاط مورد نظر است . به عنوان

 

مثال هر گاه بخواهیم فاصله ی [۰,۱] را به ۱۰ زیر فاصله ( شامل ۱۱ نقطه )

 

به طول ۱/۰ تقسیم بندی کنیم از یکی از دو روش زیر استفاده کنیم :

 

X= 0: 0.1: 1  

 

X= linspace ( 0,1,11 )

 

اگر نمو بین نقاط تقسیم شده را بدانیم بهتر است از عملگر : استفاده نماییم و

 

اگر تعداد نقاط تقسیم معلوم باشد استفاده از تابع linspace  ترجیح داده

 

میشود .