آموزش مقدماتي

Report
‫جزوه آموزش ی مطلب‬
‫(‪)MATLAB‬‬
‫?‪What is MATLAB‬‬
‫•‬
‫)‪MATLAB (MATrix LABoratory‬‬
‫یک زبان برنامه نویس ی سطح با ال برای انجام برنامه های محاسباتی است‪.‬‬
‫•‬
‫دارای محیطی است که انجام محاسبات‪ ،‬برنامه نویس ی او مشاهده نتایج آنها را به راحتی‬
‫ی نمود‪.‬‬
‫می توان پیاده ساز ا‬
‫•‬
‫یر اشاره نمود‪.‬‬
‫ااز مهمترین کاربردهای آن می توان به موارد ز ا‬
‫•‬
‫ریاضیات او محاسبات عددی‬
‫•‬
‫ی آلگوهای مختلف‬
‫پیاده ساز ا‬
‫•‬
‫ی‬
‫ی او نمونه ساز ا‬
‫مدل سازی‪ ،‬شبیه ساز ا‬
‫•‬
‫ی‬
‫تحلیل داده های آمار ا‬
‫•‬
‫ی او مهندس ی‬
‫ترسیم نمودارهای مختلف آمار ا‬
‫•‬
‫پردازش تصویر‬
‫•‬
‫رباتیک‬
‫‪Matlab‬‬
‫‪High Level‬‬
‫‪Languages such as‬‬
‫‪C, Pascal etc.‬‬
‫‪Assembly‬‬
‫‪ ‬مطلب برنامه ای ترجمه شده (‪ )compile‬با مزایا و معایب خاص خودش است‪.‬‬
‫اگرچه مترجم آن وجود دارد اما از نظر سرعت تعریفی ندارد‪.‬‬
‫مزایا‬
‫‪ ‬سرعت بالی نمونه سازی‬
‫‪ ‬یادگیری اسان به دلیل راهنمای بسیار کامل‬
‫‪ ‬کتابخانه کامل برای توابع پردازش تصویر‬
‫‪ ‬توانایی نمایش عالی‬
‫‪ ‬گستردگی استفاده در مراکز آموزش ی و صنعتی‬
‫معایب‬
‫‪ ‬سرعت کم برای برخی از انواع پردازش ها‬
‫‪ ‬مناسب نبودن برای پیاده سازی سیستم های مقیاس بزرگ‬
‫برخی از ویژگی های محیط مطلب‬
Matlab
Series of
Matlab
commands
m-files
Command
Line
mat-files
functions
Input
Output
capability
Command execution
like DOS command
window
Data
storage/
loading
‫‪ ‬مطلب یک برنامه برای انجام محاسبات عددی است‪.‬‬
‫در اوايل دهه ‪ 1980‬با زبان ‪ C‬بازنويس ي شد‪.‬‬
‫در اوايل دهه ‪ 1970‬توسط ‪ Cleve Moler,‬به وجود آمد‪ .‬ا‬
‫‪ ‬ا‬
‫‪ ‬در ‪ 1984‬شركت ‪ Mathwork‬تأسيس شد‪.‬‬
‫جبر خطی با استفاده ااز ماتریس طراحی شد‪.‬‬
‫بار این برنامه برای حل مسایل ا‬
‫‪ ‬نخستین ا‬
‫‪ ‬به همین دلیل نام آن مخفف آزمایشگاه ماتریس (‪ )MATrix LABoratory‬است‪.‬‬
‫ظیر تحلیل‬
‫بسیار گسترش یافته او شامل توابع ااز پیش ساخته بسیاریا برای حل مسایل مختلف ن ا‬
‫ا‬
‫‪ ‬امروزه این برنامه‬
‫دیگر محاسبات علمی است‪.‬‬
‫داده ها‪ ،‬پردازش سیگنال‪ ،‬بهینه سازیا او انواع ا‬
‫‪ ‬این برنامه همچنین شامل توابعی برای گرافیک دو و سه بعدی می باشد‪.‬‬
‫همه چیز در مطلب به صورت یک ماتریس است‪.‬‬
‫ظاهر شده او دستورا‬
‫ا‬
‫بر دستورا است‪ .‬یک پرومپت روی صفحه‬
‫‪ ‬محیط مطلب شبیه سیستم عامل لینوکس مبتنی ا‬
‫نظر جلویا آن وارد می شود‪.‬‬
‫مورد ا‬
‫ظاهر می شود‪.‬‬
‫ا‬
‫‪ ‬وقتی که کلید >‪ <Enter‬زده می شود دستورا وارد شده اجرا شده او پرومپت دیگریا‬
‫اگر جمله ای با سمیکالونا (;) تمام شود هیچ نتیجه ای نمایش داده نمی شود‪ .‬بدونا آن قبل ااز پرومپت بعدی حاصل‬
‫‪ ‬ا‬
‫دستورا نمایش داده می شود‪.‬‬
.‫ظاهر می شود‬
‫یر ا‬
‫بار این برنامه اجرا می شود پنجره ز ا‬
‫هنگامی که برای اولین ا‬
• Current Directory
▫ View folders and m-files
• Workspace
▫ View program variables
▫ Double click on a variable
to see it in the Array Editor
• Command Window
• type commands
Command History
view past commands
save a whole session
Command window: Type your
instructions here and press
ENTER to execute them.
Example: Declare a column matrix with
values 1,2 and 3.
Command history: a list of instructions
executed by MATLAB is shown here.
Workspace: shows a list of
variables created by MATLAB.
As you can see, the value of ‘aaa’
is shown.
Another way to create a variable
Is to press this button.
MATLAB will prompt you to enter
the variable name.
As you can see, the variable
name has been changed to bbb.
2) Or by double clicking
on bbb.
To assign a value to bbb, you can do it in
two ways: 1) Using the command window.
When you click on bbb, the variable
editor window appears. You can type
in new values into bbb by filling in the
cells.
An example is shown here.
Try and do it yourself.
To display variables at the console,
you can type the variable name,
or you can type disp(variable_name).
To clear all variables from
memory and close all
figures, use the
clear, close all command.
As you can see, all workspace
variables are deleted when
you execute this command.
To clear the command window,
use the clc (clear console) command.
Example: search for
function mean
To create an m-file, 1) type edit at
the command window, or
2) Press this button.
The previous command will
display the editor window.
The editor creates an m-file
that can be used to write
your MATLAB programs.
To execute a program, press
the RUN button.
This window will appear. Press the
Change Directory button.
‫متغیرها‬
‫• در مطلب نیازی به پیش تعریف متغیرها و تعیین نوع آنها در ابتدای برنامه نیست‪.‬‬
‫;‪int a‬‬
‫;‪double b‬‬
‫;‪float c‬‬
‫• برای تعریف یک متغیر تنها کافی است که کمیت مورد نظر را به آن منسوب کنیم‪.‬‬
‫مثال‬
‫;‪>> x = 5‬‬
‫;‪>> x1 = 2‬‬
‫;’‪>> y = ‘hello‬‬
‫• پس از این انتساب‪ ،‬هر یک از متغیر های تعریف شده یک ماتریس ‪ 1*1‬می باشند‪.‬‬
‫• مطلب بین حروف بزرگ و کوچک فرق قائل است‪.‬‬
‫‪>> X‬‬
‫‪Undefined function or variable 'X'.‬‬
‫بردارها و ماتریس ها‬
‫• برای تعریف یک بردار سطری مانند ]‪ x=[1 2 5 1‬به یکی از روش های زیر عمل می کنیم‪.‬‬
‫;]‪>> x = [1 2 5 1‬‬
‫]‪>> x = [1,2,5,1‬‬
‫=‪x‬‬
‫‪1 2 5 1‬‬
‫• برای تعریف یک بردار ستونی به یکی از روش های زیر عمل می کنیم‪.‬‬
‫;]‪>> x1 = [1;2;5;1‬‬
‫;’]‪>> x1 = [1 2 5 1‬‬
‫• برای محاسبه ترانهاده یک ماتریس به روش زیر عمل می کنیم‪.‬‬
‫;)‪• y = transpose(x1‬‬
‫• با توجه به آن که بردار فوق مختلط نیست می توان عمل فوق را با دستور زیر انجام داد‪.‬‬
‫‪y=1‬‬
‫‪2‬‬
‫‪5‬‬
‫‪1‬‬
‫’‪• y = x1‬‬
‘ means complex conjugate of transposed :‫• دقت کنید‬
‫• مثال‬
>> z=[1+3i , 2-4i ; 2 , -5+10i];
>> z'
ans =
1.0000 - 3.0000i 2.0000
2.0000 + 4.0000i -5.0000 -10.0000i
>> transpose(z)
ans =
1.0000 + 3.0000i 2.0000
2.0000 - 4.0000i -5.0000 +10.0000i
.‫ استفاده کنیم فاصله بین خطوط در نمایش پاسخ ها حذف می شود‬format compact ‫اگر از دستور‬
‫تعریف بردارها و ماتریس های طوالنی‬
‫• در صورتی که بخواهیم یک بردار طولنی دارای یک ریتم و آهنگ خاص تعریف کنیم می توانیم از روش زیر استفاده کنیم‪.‬‬
‫‪10‬‬
‫‪0 -0.5000 -1.0000‬‬
‫‪0‬‬
‫‪9‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪>> t = 1:10‬‬
‫=‪t‬‬
‫‪1 2 3‬‬
‫‪>> k =2:-0.5:-1‬‬
‫=‪k‬‬
‫‪2.0000 1.5000 1.0000 0.5000‬‬
‫‪>> phi = -pi:pi/6:pi‬‬
‫= ‪phi‬‬
‫‪-3.1416 -2.6180 -2.0944 -1.5708 -1.0472 -0.5236‬‬
‫‪0.5236 1.0472 1.5708 2.0944 2.6180 3.1416‬‬
‫روش دیگر استفاده از دستور )‪ linspace(a,b‬یا )‪ linspace(a,b,n‬می باشد‪.‬‬
‫این دستور برای تولید بردارهایی با فواصل خطی استفاده می شود‪ .‬مثال‪:‬‬
‫)‪sai = linspace(-pi,pi,11‬‬
‫= ‪sai‬‬
‫‪0 0.6283 1.2566 1.8850‬‬
‫‪-3.1416 -2.5133 -1.8850 -1.2566 -0.6283‬‬
‫‪2.5133 3.1416‬‬
‫;)‪A = linspace(1,36,12‬‬
‫در صورتی که ‪ n‬را مشخص نکنیم به صورت اتوماتیک ‪ 100‬در نظر گرفته می شود‪.‬‬
‫]‪>> B = [1:4; 5:8‬‬
‫=‪B‬‬
‫‪4‬‬
‫‪8‬‬
‫‪3‬‬
‫‪7‬‬
‫‪2‬‬
‫‪6‬‬
‫‪1‬‬
‫‪5‬‬
.‫ استفاده می کنیم‬who ‫برای مشاهده نام متغیرهای ایجاد شده از دستور‬
>> who
Your variables are:
B ans k phi sai t x z
.‫ استفاده می کنیم‬whos ‫برای دیدن لیست متغیرها به همراه سایز و نوع آنها از دستور‬
>> whos
Name
Size
Bytes
Class
B
2x4
64
double
ans
1x100
800
double
k
1x7
56
double
phi
1x13
104
double
sai
1x11
88
double
t
1x10
80
double
x
1x5
10
char
z
2x2
64
double
Attributes
complex
‫تولید بردارها با استفاده از توابع از پیش تعریف شده مطلب‬
‫تولید یک ماتریس صفر به سایز ‪:m*n‬‬
‫)‪zeros(m,n‬‬
‫)‪>> zeros(2,3‬‬
‫= ‪ans‬‬
‫تولید ماتریس یک به سایز ‪:m*n‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫)‪ones(m,n‬‬
‫)‪>> ones(1,3‬‬
‫= ‪ans‬‬
‫‪1‬‬
‫تولید یک ماتریس تصادفی با توزیع یکنواخت روی بازه )‪:(0,1‬‬
‫‪1‬‬
‫‪1‬‬
‫)‪rand(m,n‬‬
‫)‪>> rand(1,4‬‬
‫= ‪ans‬‬
‫‪0.9134‬‬
‫‪0.1270‬‬
‫‪0.9058‬‬
‫‪0.8147‬‬
‫تولید یک ماتریس مربعی یکه به سایز ‪:n*n‬‬
‫)‪eye(n‬‬
‫)‪>> X = eye(3‬‬
‫=‪X‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫برخی از توابعی که روی آرایه ها عمل می کنند‪:‬‬
‫تمام مولفه های بردار ‪ x‬را با هم جمع می کند‪:‬‬
‫)‪sum(x‬‬
‫;]‪>> A=[1 2 3‬‬
‫)‪>> sum(A‬‬
‫= ‪ans‬‬
‫‪6‬‬
‫‪>> B‬‬
‫=‪B‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫)‪>> sum(B‬‬
‫= ‪ans‬‬
‫‪12‬‬
‫‪10‬‬
‫‪8‬‬
‫‪6‬‬
‫))‪>> sum(sum(B‬‬
‫= ‪ans‬‬
‫‪36‬‬
‫تمام مولفه های بردار ‪ x‬را از اول تا آن مولفه با هم جمع می کند‪:‬‬
‫)‪cumsum(x‬‬
‫)‪>> cumsum(1:5‬‬
‫= ‪ans‬‬
‫‪15‬‬
‫تمام مولفه های بردار ‪ x‬را در هم ضرب می کند‪:‬‬
‫‪10‬‬
‫‪6‬‬
‫‪3‬‬
‫‪1‬‬
‫)‪prod(x‬‬
‫‪>> A‬‬
‫=‪A‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫)‪>> prod(A‬‬
‫= ‪ans‬‬
‫‪>> B‬‬
‫=‪B‬‬
‫‪1 2 3 4‬‬
‫‪5 6 7 8‬‬
‫)‪>> prod(B‬‬
‫= ‪ans‬‬
‫‪5 12 21 32‬‬
‫‪6‬‬
‫)‪max(x‬‬
‫‪ ‬بزرگترین مولفه بردار ‪ x‬را پیدا می کند‪:‬‬
‫)‪>> max(A‬‬
‫= ‪ans‬‬
‫‪3‬‬
‫در ماتریسها با این دستور بزرگترین مولفه هر ستون پیدا می شود‪.‬‬
‫)‪>> max(B‬‬
‫= ‪ans‬‬
‫‪8‬‬
‫‪ ‬کوچکترین مولفه بردار ‪ x‬را پیدا می کند‪:‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫)‪min(x‬‬
‫)‪sort(x‬‬
‫مولفه های ‪ x‬را مرتب می کند‪:‬‬
‫;]‪>> C=[2,-2,1,0,5,1,7‬‬
‫)‪>> sort(C‬‬
‫= ‪ans‬‬
‫‪7‬‬
‫‪5‬‬
‫‪2‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪-2‬‬
‫‪ ‬مقدار متوسط یا میانگین ‪ x‬را پیدا می کند‪:‬‬
‫)‪mean(x‬‬
‫)‪>> mean(A‬‬
‫= ‪ans‬‬
‫‪2‬‬
‫‪ ‬ماتریس تنک‪ :‬ماتریس است که تنها تعداد کمی از درایه های آن مقدار دارد و بقیه عناصر آن صفر است‪.‬‬
‫‪ ‬برای صرفه جویی در میزان حافظه و افزایش سرعت از دستورات زیر استفاده می کنیم‪:‬‬
‫‪ :Sparse(m,n) ‬یک ماتریس تنک به سایز مشخص شده تولید می کند‪ .‬تمام درایه های این ماتریس صفر است‪.‬‬
‫)‪>> zeros(2,3‬‬
‫= ‪ans‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫)‪>> sparse(2,3‬‬
‫= ‪ans‬‬
‫‪All zero sparse: 2-by-3‬‬
‫‪ :Sparse(A) ‬قالب تعریف ماتریس ‪ A‬را به حالت تنک تبدیل می کند‪.‬‬
‫)‪>> II=eye(3‬‬
‫)‪>> sparse(II‬‬
‫= ‪II‬‬
‫= ‪ans‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫)‪(1,1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫)‪(2,2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫)‪(3,3‬‬
‫‪ :Speye(n) ‬یک ماتریس یکه مربعی ‪ n*n‬را به فرم تنک تبدیل می کند‪.‬‬
‫)‪>> speye(3‬‬
‫= ‪ans‬‬
‫‪1‬‬
‫)‪(1,1‬‬
‫‪1‬‬
‫)‪(2,2‬‬
‫‪1‬‬
‫)‪(3,3‬‬
‫)‪ :spones(S‬به جای تمام عناصر ماتریس ‪ S‬عدد یک می گذارد‪.‬‬
‫برای نمایش یک ماتریس تنک به فرم معمولی از دستور ‪ full‬استفاده می کنیم‪.‬‬
‫)‪>> full(II‬‬
‫= ‪ans‬‬
‫‪1 0 0‬‬
‫‪0 1 0‬‬
‫‪0 0 1‬‬
‫نحوه نامگذاری (ایندکس) درایه های ماتریس‬
‫• اندیس های یک ماتریس در مطلب از ‪ 1‬شروع می شوند‪( .‬نه مانند ‪C‬از صفر)‬
‫• اندیس ماتریس ها در مطلب اعداد مثبت می باشند‪.‬‬
‫)‪A(-2), A(0‬‬
‫‪Error: ??? Subscript indices must either be real positive integers or logicals.‬‬
‫)‪A(4,2‬‬
‫‪Error: ??? Index exceeds matrix dimensions.‬‬
‫نحوه اتصال ماتریس ها‬
• x = [1 2], y = [4 5], z=[ 0 0]
A = [ x y]
1 2 4 5
B = [x ; y]
12
C = [x y ;z]
4 5 Error:
??? Error using ==> vertcat CAT arguments dimensions are not consistent.
‫برای این منظورا می توان ااز دستورهای‬
vertcat ‫ یا‬horzcat ‫ یا‬cat
.‫استفاده کرد‬
‫• تعیین تعداد سطر و ستون های یک ماتریس‬
‫)‪size(A‬‬
‫‪>> B‬‬
‫=‪B‬‬
‫)‪>> size(B‬‬
‫= ‪ans‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫• تعیین طول یک بردار‬
‫)‪length(A‬‬
‫‪>> A‬‬
‫=‪A‬‬
‫)‪>> length(A‬‬
‫= ‪ans‬‬
‫‪3‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫)‪flipud(A‬‬
‫• چرخش درایه های یک ماتریس از بال به پایین‬
‫]‪>> A=[1 2;3 4;-1 0‬‬
‫=‪A‬‬
‫)‪>> B=flipud(A‬‬
‫=‪B‬‬
‫‪-1 0‬‬
‫‪3 4‬‬
‫‪1 2‬‬
‫• چرخش درایه های یک ماتریس از چپ به راست‬
‫‪2‬‬
‫‪1‬‬
‫‪4‬‬
‫‪3‬‬
‫‪0‬‬
‫‪-1‬‬
‫)‪fliplr(A‬‬
‫]‪>> A=[1 2;3 4;-1 0‬‬
‫)‪>> C=fliplr(A‬‬
‫=‪C‬‬
‫‪2 1‬‬
‫‪4 3‬‬
‫‪0 -1‬‬
‫=‪A‬‬
‫‪2‬‬
‫‪1‬‬
‫‪4‬‬
‫‪3‬‬
‫‪0‬‬
‫‪-1‬‬
‫عملگرهای ماتریس ی‬
‫‪+‬‬
‫*‬
‫^‬
‫جمع‬
‫ضرب‬
‫توان‬
‫‬‫‪/‬‬
‫تفریق‬
‫تقسیم‬
‫اعمال عملگرها به صورت عضو به عضو‬
A = [1 2 3; 5 1 4; 3 2 1]
A=
1 2 3
5 1 4
3 2 -1
x = A(1,:)
x=
.*
‫تقسیم هر درایه بر درایه متناظر‬
./
‫به توان رساندن نظیر به نظیر‬
.^
b = x .* y
c=x./y
d = x .^2
b=
c=
0.33 0.5 -3
d=
y = A(3 ,:)
y=
1 2 3
‫ضرب درایه در درایه‬
3 8 -3
3 4 -1
K= x^2
Erorr:
??? Error using ==> mpower Matrix must be square.
B=x*y
Erorr:
??? Error using ==> mtimes Inner matrix dimensions must agree.
1 4 9
‫برخی از توابع ماتریس ی عبارتند از‪:‬‬
‫دترمینان ماتریس مربعی‬
‫)‪det(a‬‬
‫محاسبه وارون ماتریس‬
‫)‪inv(a‬‬
‫مقادیر و بردار ویژه ماتریس مربعی‬
‫)‪eig(a‬‬
‫تولید یک بردار از درایه های روی قطر اصلی یک ماتریس مربعی‬
‫تولید ماتریس مربعی قطری‬
‫)‪diag(a‬‬
‫)‪diag(v‬‬
‫کاربردهای دستور ‪format‬‬
‫این دستور فقط نحوه نمایش داده ها در صفحه نمایش را مشخص می کند و تاثیری روی دقت نگه داری آنها در حافظه‬
‫ندارد‪.‬‬
‫))‪>> v=exp(-10*(1:5‬‬
‫اگر ‪ format short‬یا همان ‪ format‬انتخاب شود (اعداد بعد از نقطه اعشار‪)4 :‬‬
‫=‪v‬‬
‫* ‪1.0e-04‬‬
‫‪0.4540 0.0000 0.0000 0.0000 0.0000‬‬
‫اگر ‪ format short e‬انتخاب شود‬
‫=‪v‬‬
‫‪4.5400e-05 2.0612e-09 9.3576e-14 4.2484e-18 1.9287e-22‬‬
‫اگر ‪ format long‬انتخاب شود (اعداد بعد از نقطه اعشار‪)14 :‬‬
‫=‪v‬‬
‫* ‪1.0e-04‬‬
‫‪0.453999297624848 0.000020611536224 0.000000000935762 0.000000000000042‬‬
‫‪0.000000000000000‬‬
‫اگر ‪ format long e‬انتخاب شود‬
‫=‪v‬‬
‫‪4.539992976248485e-05 2.061153622438558e-09 9.357622968840175e-14‬‬
‫‪4.248354255291589e-18 1.928749847963918e-22‬‬
‫اگر ‪ format rational‬انتخاب شود ‪ ،‬نمایش به صورت کسر متعارفی‬
‫‪>> eps‬‬
‫>‪<Enter‬‬
‫= ‪ans‬‬
‫‪1/4503599627370496‬‬
‫عملیات منطقی‬
‫در مطلب عالمت های زیر برای مقایسه اعداد و حروف به کار می روند‪.‬‬
‫==‬
‫=~‬
‫=>‬
‫=<‬
‫<‬
‫>‬
‫حاصل همه عملیات صفر (نادرست) و یک (درست)است‪.‬‬
‫‪>> 3<5‬‬
‫= ‪ans‬‬
‫‪1‬‬
‫]‪>> [1 2]>=[0,3‬‬
‫= ‪ans‬‬
‫‪0‬‬
‫‪1‬‬
‫;]‪>> x=[1 2 -1 0 -5 4 -1.5 3 2.5 -.5‬‬
‫)‪>> x(x>0‬‬
‫مولفه های مثبت بردار را نشان می دهد‪.‬‬
‫= ‪ans‬‬
‫‪2.5000‬‬
‫‪3.0000‬‬
‫‪4.0000‬‬
‫‪2.0000‬‬
‫‪1.0000‬‬
x((x>=0)&(x<=3))
ans =
1.0000 2.0000
0 3.0000 2.5000
>> length(x((x>=0)&(x<=3)))
ans =
5
&
|
>> m=[1 2 4; -2 3 -1];
>> ~(m>0)
ans =
0 0 0
1 0 1
>> (m>0)|(m<=2)
ans =
1 1 1
1 1 1
>> (m>0)&(m<=2)
ans =
1 1 0
0 0 0
xor
.‫عملگرهای منطقی به صورت زیر مشخص می شوند‬
~
‫آیا در بردار (ماتریس) مورد نظر مقداری با شرط مورد نظر وجود دارد؟‬
‫)‪any(A>3‬‬
‫آیا در بردار (ماتریس) مورد نظر تمام مقادیربا شرط مورد نظر را دارند؟‬
‫)‪all(A>3‬‬
‫در بردار (ماتریس) مورد نظر کدام مقدارها شرط مورد نظر را دارند؟‬
‫)‪>> find(v>3‬‬
‫= ‪ans‬‬
‫‪4‬‬
‫)‪find(A>3‬‬
‫;]‪>> v=[-2 1 3 5‬‬
‫)‪>> any(v<1‬‬
‫= ‪ans‬‬
‫‪1‬‬
‫)‪>> any(v>6‬‬
‫= ‪ans‬‬
‫‪0‬‬
‫)‪>> all(v<1‬‬
‫= ‪ans‬‬
‫‪0‬‬
‫)‪>> all(v<6‬‬
‫= ‪ans‬‬
‫‪1‬‬
‫توابع سمبلیک در مطلب‬
‫توابع سمبلیک در مطلب از نسخه ‪ MATLAB 6.0‬در دسترس قرار گرفت‪.‬‬
‫(برای تعیین ورژن برنامه از دستور ‪ ver‬استفاده کنید)‪.‬‬
‫مباحث تحت پوشش‬
‫امکانات ارائه شده‬
‫حساب دیفرانسیل و انتگرال‬
‫مشتق‪ ،‬انتگرال‪ ،‬حد‪ ،‬سری‪ ،‬بسط تیلورا‬
‫جبر خطی‬
‫معکوس‪ ،‬دترمینان‪ ،‬مقدار ویژه‬
‫ساده سازیا‬
‫ساده کردن عبارات جبریا‬
‫حل معادلت‬
‫راه حل های سمبلیک و عددی معادلت جبریا و دیفرانسیل‬
‫توابع ریاض ی خاص‬
‫توابع ریاض ی خاص‬
‫تبدیل ها‬
‫فوریه‪ ،‬لپالس‪ ،‬تبدیل ‪ z‬و تبدیل های معکوس آنها‬
‫معرفی توابع نمادین‪ :‬برای هرنوع عملیات نمادین باید ابتدا متغیرهای مورد استفاده را معرفی نمود‪ .‬این کار با دستورهای‬
‫‪ sym‬و ‪ syms‬انجام می شود‪.‬‬
‫‪ans =(a + b)^2‬‬
‫‪>> (a+b)^2‬‬
‫‪>> syms a b‬‬
.‫ یک چند جمله ای را به حاصلضرب چند عبارت چند جمله ای تجزیه می کند‬،‫ این تابع‬:factor
>> syms x
>> n=(1:9)';
>> p=x.^n-1;
>> f=factor(p);
>> [p,f]
ans =
[ x - 1,
x - 1]
[ x^2 - 1,
(x - 1)*(x + 1)]
[ x^3 - 1,
(x - 1)*(x^2 + x + 1)]
[ x^4 - 1,
(x - 1)*(x + 1)*(x^2 + 1)]
[ x^5 - 1,
(x - 1)*(x^4 + x^3 + x^2 + x + 1)]
[ x^6 - 1,
(x - 1)*(x + 1)*(x^2 + x + 1)*(x^2 - x + 1)]
[ x^7 - 1,
(x - 1)*(x^6 + x^5 + x^4 + x^3 + x^2 + x + 1)]
[ x^8 - 1,
(x - 1)*(x + 1)*(x^2 + 1)*(x^4 + 1)]
[ x^9 - 1,
(x - 1)*(x^2 + x + 1)*(x^6 + x^3 + 1)]
)factor ‫ (عکس‬.‫ برای بسط دادن عبارات سمبلیک به صورت سمبلیک به کار می رود‬،‫ این تابع‬:expand
>> expand((x-2)*(x-4))
ans =
x^2 - 6*x + 8
>> expand(cos(x+y))
ans =
cos(x)*cos(y) - sin(x)*sin(y)
)substitution ‫ (مخفف‬.‫ از این تابع برای جایگزاری یک عدد به جای متغیر سمبلیک به کار می رود‬:subs
>> a=cos(x+y)
a=
cos(x + y)
>> subs(a,x,0)
ans =
-cos(y)
>> subs(a,y,0)
ans =
cos(x)
>> subs(a,{x,y},[pi,0])
ans =
-1
‫ی‬
‫حل معادلت جبر ا‬
.‫ را پیدا می کند‬S=0 ‫ یک عبارت سمبلیک باشد تابع روبرو جوابهای معادله‬S ‫ اگر‬:solve(S)
>> syms a b c x
>> S=a*x^2+b*x+c;
>> solve(S)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
>> pretty (ans)
+-+
|
2
1/2 |
| b + (b - 4 a c)
|
| - ------------------- |
|
2a
|
|
|
|
2
1/2 |
| b - (b - 4 a c)
|
| - ------------------- |
|
2a
|
+-+
>> subs(ans,{a,b,c},[1,1,1])
ans =
-0.5000 - 0.8660i
-0.5000 + 0.8660i
>> solve('cos(2*x)+sin(x)=1')
ans =
0
pi/6
(5*pi)/6
>> ss=x^2+1
ss =
x^2 + 1
>> x=sym(0)
x=
0
>> eval(ss)
ans =
1
>> solve(cos(2*x)+sin(x)-1)
ans =
0
pi/6
(5*pi)/6
‫مشتق گیری از توابع سمبلیک در مطلب‬
‫)‪ :diff(f‬از تابع سمبلیک ‪ f‬مشتق می گیرد‪( .‬متغیر پیش فرض ‪ x‬می باشد)‬
‫برای تغییر متغیر به این صورت عمل می کنیم‬
‫)‪>> diff(f,a‬‬
‫= ‪ans‬‬
‫)‪x*cos(a*x‬‬
‫‪>> syms a x‬‬
‫;)‪>> f=sin(a*x‬‬
‫)‪>> diff(f‬‬
‫= ‪ans‬‬
‫)‪a*cos(a*x‬‬
‫این تابع از درایه های یک ماتریس هم مشتق می گیرد‪.‬‬
‫])‪>> A=[cos(a*x),sin(a*x),-sin(a*x),tan(a*x‬‬
‫=‪A‬‬
‫])‪[ cos(a*x), sin(a*x), -sin(a*x), tan(a*x‬‬
‫)‪>> diff(A‬‬
‫= ‪ans‬‬
‫])‪[ -a*sin(a*x), a*cos(a*x), -a*cos(a*x), a*(tan(a*x)^2 + 1‬‬
‫حل معادلت دیفرانسیل‬
.‫ دستور زیر برای حل معادله دیفرانسیل معمولی با شرایط اولیه به کار می رود‬: S = dsolve(eqn,cond)
‫ بدون شرط اولیه‬dy/dx=1+y^2 ‫حل معادله دیفرانسیل‬
>> dsolve('Dy=1+y^2')
ans =
tan(C3 + t)
>> x=dsolve('Dx^2+x^2=1','x(0)=0')
x=
cosh((pi*i)/2 + t*i)
cosh((pi*i)/2 - t*i)
y(0)=1 ‫حل همان معادله با شرط اولیه‬
>> dsolve('Dy=1+y^2','y(0)=1')
ans =
tan(pi/4 + t)
x(0)=0 ‫ و‬dy/dx(0)=0 ‫ با شرایط اولیه‬d2y/dx2=cos2x-y ‫حل معادله دیفرانسیل مرتبه دوم‬
>> y=dsolve('D2y=cos(2*x)-y','y(0)=1','Dy(0)=0','x')
y=
(5*cos(x))/3 + sin(x)*(sin(3*x)/6 + sin(x)/2) - (2*cos(x)*(6*tan(x/2)^2 - 3*tan(x/2)^4
+ 1))/(3*(tan(x/2)^2 + 1)^3)
>> simplify(y)
ans =
1 - (8*(cos(x)/2 - 1/2)^2)/3
‫انتگرال گیری از توابع سمبلیک در مطلب‬
‫)‪ :int(f‬اگر ‪f‬یک تابع سمبلیک باشد این دستور انتگرال نامعین آن را حساب می کند‪.‬‬
‫برای محاسبه انتگرال معین‪ ،‬ابتدا و انتهای بازه را می نویسیم‪.‬‬
‫)‪>> int(x^n‬‬
‫= ‪ans‬‬
‫)])‪piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1‬‬
‫))‪>> int(sin(2*x‬‬
‫= ‪ans‬‬
‫‪sin(x)^2‬‬
‫))‪>> int(exp(n*x‬‬
‫= ‪ans‬‬
‫‪exp(n*x)/n‬‬
‫))‪>> int(exp(n*x^2‬‬
‫= ‪ans‬‬
‫))‪(pi^(1/2)*erf((-n)^(1/2)*x))/(2*(-n)^(1/2‬‬
‫)‪>> int(exp(-x),0,inf‬‬
‫= ‪ans‬‬
‫‪1‬‬
‫)‪>> int(x^2,0,1‬‬
‫= ‪ans‬‬
‫‪1/3‬‬
>> syms x
>> ac=cos(x);
>> ezplot(ac)
‫ به صورت پیش فرض در محدوده‬.‫ را رسم می کند‬f(x) ‫ نمودار تابع‬:ezplot(f)
.‫[ رسم می کند‬-pi,pi]
cos(x)
>> ezplot(ac,[0,2*pi])
1
cos(x)
1
0.5
0.5
0
0
-0.5
-0.5
-1
-6
-4
-2
0
x
2
4
6
-1
0
1
2
3
4
x
5
6
tan(x)
>> ezplot('tan(x)')
6
4
2
0
-2
x 2+y 2-36 = 0
6
-4
4
-6
-4
-2
0
x
2
4
6
y
-6
>> fc='x^2+y^2-36';
>> ezplot(fc)
>> axis equal; % ‫طول محورها يکسان مي شود‬
2
0
-2
-4
-6
-6
-4
-2
0
x
2
4
6
exp(-x 2/2)
1
>> syms x
>> k=sym(1/sqrt(2));
>> f=exp(-(k*x)^2);
>> ezplot(f)
0.8
0.6
0.4
1/(4 cos(x) + 5)
0.2
1
0.9
0
0.8
-3
-2
-1
0
x
1
2
3
0.7
0.6
0.5
>> syms x
>> f=1/(5+4*cos(x));
>> ezplot(f)
0.4
0.3
0.2
0.1
-6
-4
-2
0
x
2
4
6
‫رسم نمودار‬
‫)’‪ :plot(x,y,’o‬این دستور برای رسم بردار ‪ y‬بر حسب ‪ x‬به کار می رود‪.‬‬
‫;‪>> x=-10:0.5:10‬‬
‫;‪>> y=-x.^3+3*x.^2+1‬‬
‫)'‪>> plot(x,y,'o‬‬
‫)‪>> plot(x,y‬‬
‫‪10‬‬
‫‪8‬‬
‫‪6‬‬
‫‪4‬‬
‫‪2‬‬
‫‪0‬‬
‫‪-2‬‬
‫‪-4‬‬
‫‪-6‬‬
‫‪-8‬‬
‫‪1500‬‬
‫‪1500‬‬
‫‪1000‬‬
‫‪1000‬‬
‫‪500‬‬
‫‪500‬‬
‫‪0‬‬
‫‪0‬‬
‫‪-500‬‬
‫‪-500‬‬
‫‪-1000‬‬
‫‪10 -10‬‬
‫‪8‬‬
‫‪6‬‬
‫‪4‬‬
‫‪2‬‬
‫‪0‬‬
‫‪-2‬‬
‫‪-4‬‬
‫‪-6‬‬
‫‪-8‬‬
‫‪-1000‬‬
‫‪-10‬‬
.‫ با این دستور می توان نمودارهای دیگر را هم بر روی یک نمودار رسم کرد‬:hold on/off
>> x=0:0.1:2*pi;
>> x1=sin(x);
>> x2=cos(x);
>> x3=sin(x).^2-cos(2*x);
>> plot(x,x1)
>> hold on;
>> plot(x,x2,'r')
>> hold on;
>> plot(x,x3,'.-k')
>> legend('x_1','x_2','x3')
2
x1
x2
1.5
x3
1
0.5
0
-0.5
-1
0
1
2
3
4
5
6
7
>> hr=0:2:24;
>> temp=[-2 -2 -1 0 .5 3 7 10 12 16 10 3 1];
>> bar(hr,temp,1)
>> xlabel('Hours of The Day')
>> ylabel('Temp, Celcius')
16
Voltage (V)
:‫برچسب ها‬
>> title('Plotting Test Program (PTP)')
>> xlabel('Time (\mus)')
>> ylabel('Voltage (V)','fontsize',18)
14
Plotting Test Program (PTP)
2
x1
x2
1.5
x3
1
0.5
0
-0.5
12
-1
Temp, Celcius
10
0
1
2
3
4
Time (s)
5
6
8
6
‫ به صورت نمودار‬x ‫ را بر حسب‬y :bar(x,y,w)
.‫ رسم می کند‬w ‫میله ای با عرض‬
4
2
0
-2
0
2
4
6
8 10 12 14
Hours of The Day
16
18
20
22
24
7
>> p=[10 3 6 5 2];
>> w=[0.5 1 1 0.5 1];
>> m={'Tehan','Shiraz','Esfahan','Tabriz','Ahvaz'}
m=
'Tehan' 'Shiraz' 'Esfahan' 'Tabriz' 'Ahvaz'
>> pie(p,w,m)
Ahvaz
Tabriz
Tehan
Esfahan
Shiraz
>> x=linspace(-2*pi,2*pi,20);
>> figure(1); plot(x,tan(x),x,sin(x),x,cos(x))
>> fs='[tan(t) sin(t) cos(t)]';
>> figure(2), fplot(fs,[-2*pi 2*pi -5 5])
15
10
5
5
4
0
3
2
-5
1
0
-10
-1
-15
-8
-6
-4
-2
0
2
4
6
8 -2
-3
-4
-5
-6
-4
-2
0
2
4
6
‫رسم نمودارهای سه بعدی‬
‫ می توان نمودارهای سه بعدی را‬surf(x,y,z) ‫ و‬mesh(x,y,z) ‫ و‬plot3 (x,y,z) ‫با استفاده ااز توابع‬
.‫رسم نمود‬
>> alfa=linspace(0,10*pi,400);
>> x1=cos(alfa);
>> y1=sin(alfa);
>> z1=linspace(0,40,400);
>> plot3(x1,y1,z1)
40
30
20
10
0
1
0.5
1
0.5
0
0
-0.5
-0.5
-1
-1
>> x=-10:0.5:10;
>> y=x;
>> z=-2*x.^3+x+3*y.^2-1;
>> plot3(x,y,z)
>> grid
3000
2000
1000
0
-1000
-2000
10
5
10
5
0
0
-5
-5
-10
100
-10
zp
50
>> [xp,yp]=meshgrid(-6:6,-4:4);
>> zp=xp.^2+yp.^3;
>> mesh(xp,yp,zp)
>> xlabel('xp')
>> ylabel('yp')
>> zlabel('zp')
0
-50
-100
4
2
10
5
0
0
-2
yp
-5
-4
-10
xp
mesh plotting for Z=X2+Y2
18
16
20
14
15
12
10
10
8
5
6
0
4
4
2
4
2
0
2
0
-2
-2
-4
-4
>> [X,Y]=meshgrid(-3:0.1:3);
>> Z=X.^2+Y.^2;
>> mesh(X,Y,Z)
>> colorbar
>> title('mesh plotting for
Z=X^{2}+Y^{2}')
0
>> [x,y,z]=peaks(30);
>> surf(x,y,z)
>> surf(x,y,z,'facecolor','red','edgecolor','none'); light
10
5
0
-5
-10
4
2
4
2
0
0
-2
-2
-4
-4
‫رسم کره با دستور ‪sphere‬‬
‫;‪>> [X,Y,Z]=sphere‬‬
‫)‪>> mesh(X,Y,Z‬‬
‫;‪>> axis equal‬‬
‫گراف را متقارن مي کند ‪%‬‬
‫;‪>>axis off‬‬
‫محورها را محو مي کند‪% .‬‬
‫;‪>>hidden off‬‬
‫قسمت هاي مخفي نمودار را نمايان مي کند‪% .‬‬
‫برنامه نویس ی در مطلب‬
‫• برای نوشتن برنامه (توالی چند دستور که در صورت اجرای آنها می توان به هدف مشخص ی رسید) باید از محیط‬
‫دیگری موسوم به ادیتور ام‪-‬فایل (‪ )m-file‬استفاده نمود‪.‬‬
‫• برای باز کردن ادیتور ام‪-‬فایل از دکمه )‪ New script (Ctrl+N‬از نوار ابزار بالی صفحه یا از منوی ‪File‬‬
‫‪  New  Script‬از منوهای بالی صفحه استفاده نمود‪.‬‬
‫• هر برنامه را باید با نام دلخواه و با پسوند ‪( .m‬بدون خط فاصله) ذخیره نمود‪.‬‬
‫• برای اجرای برنامه می توان به یکی از دو روش زیر عمل نمود‪.‬‬
‫‪ -1‬با تایپ نام آن در محیط دستور و فشردن کلید ‪Enter‬‬
‫‪ -2‬با فشردن دکمه ‪ Run‬در محیط ادیتور ام‪-‬فایل‬
‫انواع برنامه‪:‬‬
‫‪ -1‬برنامه اصلی (‪ :)script m-file‬برنامه اصلی است که اجرای آن باعث انجام عملیات مورد نظر می شود‪.‬‬
‫‪ -2‬تابع (‪ :)function m-file‬تابع است و از داخل برنامه اصلی یا توابع دیگر صدا زده می شود‪.‬‬
‫مسیر فعال (‪ )Active directory‬چیست؟‬
‫در هر لحظه مطلب دایرکتوری فعال خود را چک می کند و تمامی توابع و برنامه های موجود در آن شاخه قابل اجرا‬
‫هستند‪ .‬این مسیر در پنجره ‪ Command‬در قسمت نوار بالی صفحه قابل مشاهده است‪.‬‬
‫البته مطلب غیر از مسیر فعال دنبال توابع پیش فرض خود در سایر دایرکتوری ها هم می گردد‪.‬‬
‫با استفاده از دستور ‪ path‬می توان تمامی این مسیرها را مشاهده کرد‪.‬‬
‫‪ :pwd‬با استفاده از این دستور مسیر فعال نمایش داده می شود‪.‬‬
‫دقت داشته باشید که نام متغیرهای استفاده شده در برنامه با متغیرهای پیش فرض یکسان نباشد‪.‬‬
‫دقت داشته باشید که نام برنامه با توابع پیش فرض مطلب یکسان نباشد‪.‬‬
‫;‪x = pi/100:pi/100:10*pi‬‬
‫;‪y = sin(x)./x‬‬
‫)‪plot(x,y‬‬
‫‪grid‬‬
‫• مثال‪ :‬نمونه ای از یک برنامه ساده‬
‫• مثال‪ :‬برنامه ای با نام ‪ bank.m‬بنویسید که جدول سرمایه نهایی بر حسب سرمایه اولیه (به تومان) را با نرخ سود‬
‫‪ r‬پس از ‪ n‬سال برای ‪ 5‬نمونه از سرمایه به دست دهد‪.‬‬
‫‪format bank‬‬
‫;]‪A=[75000 100000 300000 500000 1000000‬‬
‫;‪r=0.09‬‬
‫;‪n=10‬‬
‫;‪B=A*(1+r)^n‬‬
‫]'‪nama=[A' B‬‬
‫= ‪nama‬‬
‫‪177552.28‬‬
‫‪236736.37‬‬
‫‪710209.10‬‬
‫‪1183681.84‬‬
‫‪2367363.67‬‬
‫‪75000.00‬‬
‫‪100000.00‬‬
‫‪300000.00‬‬
‫‪500000.00‬‬
‫‪1000000.00‬‬
‫ در غیر این صورت ادامه برنامه به‬.‫ در صورتی که شرط مورد نظر درست باشد وارد آن می شود‬:if ‫• دستور شرطی‬
.‫ منتقل می شود‬end ‫بعد از‬
if condition 1
Statements
elseif condition 2
a=input('please enter a number: ');
Statements
if a==2
Else
Statements
end
disp('your entered number is 2')
elseif a==3
disp('your entered number is 3')
elseif a==4
disp('your entered number is 4')
else
disp('your entered number is not 2, 3 or 4')
end
clc
.‫ را حل کرد‬2 ‫ برنامه ای بنویسید که توسط آن بتوان معادله درجه‬:‫• مثال‬
clear all;
% This program solves equation
a=input('Enter a (ax^2_bx+c) : ');
b=input('Enter b (ax^2_bx+c) : ');
c=input('Enter c (ax^2_bx+c) : ');
if a==0 && b~=0
x=-c/b;
answer=[x,x];
elseif a~=0
delta=b^2-4*a*c;
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
answer=[x1,x2];
elseif a==0 && b==0
disp ('this is not an equation')
answer =[];
end
answer
% Evaluation of Z
‫• برنامه ای که اعداد مختلط را به صورت‬
% the complex numbers are entered
Z1 = 3+4*j;
.‫• قطبی تبدیل می کند‬
Z2 = 5+2*j;
theta = (60/180)*pi; % angle in radians
Z3 = 2*exp(j*theta);
Z4 = 3+6*j;
Z5 = 1+2*j;
% Z_rect is complex number Z in rectangular form
disp('Z in rectangular form is'); % displays text inside brackets
Z_rect = Z1*Z2*Z3/(Z4+Z5);
Z_rect
Z_mag = abs (Z_rect); % magnitude of Z
Z_angle = angle(Z_rect)*(180/pi); % Angle in degrees
disp('complex number Z in polar form, mag, phase'); % displays text
%inside brackets
Z_polar = [Z_mag, Z_angle]
function y=fact(n)
% FACT – Display factorials of integers 1..n
if isempty(n)
error('No input argument assigned')
elseif n < 0
error('Input must be non-negative')
elseif abs(n-round(n)) > eps
error('Input must be an integer')
else
for k=1:n
kfac=prod(1:k);
disp([num2str(k),' ',num2str(kfac)])
y(k)=kfac;
end;
end
.‫• تابعی فاکتوریل اعداد را محاسبه می کند‬
% maximum power transfer
vs = 10; rs = 10e3;
rl = 0:1e3:50e3;
k = length(rl); % components in vector rl
% Power dissipation calculation
for i=1:k
curr(i) = vs/(rs+rl(i));
pl(i) = rl(i)*curr(i)^2;
end
% Derivative of power is calculated using backward difference
dp = diff(pl)./diff(rl);
rld = rl(2:length(rl)); % length of rld is 1 less than that of rl
% Determination of critical points of derivative of power
prod = dp(1:length(dp) - 1).*dp(2:length(dp));
crit_pt = rld(find(prod < 0));
max_power = max(pl); % maximum power is calculated
% print out results
fprintf('Maximum power occurs at %8.2f Ohms\n',crit_pt)
fprintf('Maximum power dissipation is %8.4f Watts\n', max_power)
% Plot power versus load
plot(rl/1000,pl*1000,'+')
title('Power delivered to load')
xlabel('load resistance in K Ohms')
ylabel('power in mili watts')
% Charging of an RC circuit
c = 10e-6;
r1 = 1e3;
tau1 = r1*c;
t = 0:0.002:0.05;
v1 = 10*(1-exp(-t/tau1));
r2 = 10e3;
tau2 = r2*c;
v2 = 10*(1-exp(-t/tau2));
r3 = .1e3;
tau3 = r3*c;
v3 = 10*(1-exp(-t/tau3));
plot(t,v1,‘:k',t,v2,‘.-b', t,v3,‘-rs')
axis([0 0.06 0 12])
title('Charging of a capacitor with three
time constants')
xlabel('Time, s')
ylabel('Voltage across capacitor')
text(0.03, 5.0, '+ for R = 1 Kilohms')
text(0.03, 6.0, 'o for R = 10 Kilohms')
text(0.03, 7.0, '* for R = 0.1 Kilohms')
‫رسم نمودار شارژ خازنا‬
function v = ideal(t,p)
% ideal: Calculation of ideal gas specific volume
% v=ideal(t,p) takes the vector of temperature (t) in K
% and the vector of pressure (p) in Pa and returns the
% matrix of specific volume (v) in m3/kmol.
% Start of calculations
R = 8314;
% Gas constant (J/kmol.K)
for k = 1:length(p)
v(k,:) = R*t/p(k);
% Ideal gas law
end
» p=1:10; t=300:10:400;
» vol=ideal(t,p);
» surf(t,p,vol)
» view(135,45), colorbar
H = zeros(5);
for k=1:5
for l=1:5
H(k,l) = 1/(k+l-1);
end
end
H
H=
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111

similar documents