امیرحسین سبحانی

مطالب وبلاگ

اخبار، اطلاعیه ها و...

جبرخطی در متلب

توابع داخلی متلب در جبر خطی

حل دستگاه‌های معادلات خطی:

برای حل دستگاه معادلات خطی  AX=B می توانیم از دستور C=A\B استفاده کنیم.

A=[2,1,4;1,5,6;3,1,2]

A = 3×3

     2     1     4
     1     5     6
     3     1     2

B=[1;2;1]

b = 3×1

     1
     2
     1

C=A\B

C = 3×1

    0.1875
    0.2500
    0.0938

A*C

ans = 3×1

     1
     2
     1

تابع linsolve:

همچنین برای حل دستگاه AX=B می توان از دستور linsolve(A,B) کمک بگیریم.

C=linsolve(A,B)

C = 3×1

    0.1875
    0.2500
    0.0938

برخی توابع مهم:

تابع :diag(A) عناصر روی قطر اصلی ماتریس A را استخراج می کند.

diag(A)

ans = 3×1

     2
     5
     2

دستور transpose(A): ترانهاده یک ماتریس را بدون مزدوج گیری انجام میدهد.

transpose(A)

ans = 3×3

     2     1     3
     1     5     1
     4     6     2

دستور :ctranspose(A) ترانهاده مزدوج ماتریس A را محاسبه می کند:

A=[1-i 2i 5-6i; 2, 3+i,4+7i;2+i, 4-i,8+3i]

A = 3×3 complex

   1.0000 - 1.0000i   0.0000 + 2.0000i   5.0000 - 6.0000i
   2.0000 + 0.0000i   3.0000 + 1.0000i   4.0000 + 7.0000i
   2.0000 + 1.0000i   4.0000 - 1.0000i   8.0000 + 3.0000i

Ctranspose(A)

ans = 3×3 complex

   1.0000 + 1.0000i   2.0000 + 0.0000i   2.0000 - 1.0000i
   0.0000 - 2.0000i   3.0000 - 1.0000i   4.0000 + 1.0000i
   5.0000 + 6.0000i   4.0000 - 7.0000i   8.0000 - 3.0000i

تابع trace(A): این دستور اثر ماتریس A (جمع عناصر روی قطر اصلی) را محاسبه می کند.

A=magic(3)

A = 3×3

     8     1     6
     3     5     7
     4     9     2

trace(A)

ans = 15

تابع rank(A): این تابع رتبه ماتریس A ،تعداد سطرها یا به صورت معادل تعداد ستونهای مستقل خطی، را بر می گرداند.

m=rank(A)

m = 3

تابع det(A): این تابع دترمینان ماتریس A را محاسبه می کند.

det(A)

ans = -360

تابع inv(A): معکوس ماتریس A را محاسبه می کند.

inv(A)

ans = 3×3

    0.1472   -0.1444    0.0639
   -0.0611    0.0222    0.1056
   -0.0194    0.1889   -0.1028

تابع pinv(A): جهت محاسبه شبه معکوس ماتریس A از دستور pinv(A) استفاده می شود.

C=[1,2,3,2;2,4,1,5;3,2,1,7]

C = 3×4

     1     2     3     2
     2     4     1     5
     3     2     1     7

pinv(C)

ans = 4×3

    0.0150   -0.0697    0.0972
   -0.0425    0.4085   -0.2763
    0.3900   -0.2113    0.0350
   -0.0500   -0.0567    0.1751

 

تابع  eig(A): دستور D=eig(A) مقادیر ویژه ماتریس A را به صورت یک بردار ستونی در D بر می گرداند. اگر بخواهیم بردار های ویژه را هم محاسبه کنیم از دستور [V,D]=eig(A) استفاده می کنیم. در اینجا V  یک ماتریس است که ستون های آن بردارهای ویژه A هستند و D هم یک ماتریس قطری است که عناصر روی قطر اصلی آن مقادیر ویژه نظیر بردار های ویژه در ستون های ماتریس V می باشند.

یادآوری: اگر  یک بردار غیر صفر باشد و گوییم  یک بردار ویژه نظیر مقدار ویژه ماتریس است.

D=eig(A)

D = 3×1

   15.0000
    4.8990
   -4.8990

[V,D]=eig(A)

V = 3×3

   -0.5774   -0.8131   -0.3416
   -0.5774    0.4714   -0.4714
   -0.5774    0.3416    0.8131

D = 3×3

   15.0000         0         0
         0    4.8990         0
         0         0   -4.8990

 

تابع norm: جهت محاسبه نرم یک بردار یا ماتریس از دستور norm(A) استفاده می کنیم که نرم 2   ماتریس را بر می گرداند. برای محاسبه نرم p از دستور norm(A,p) کمک می گیریم.

norm(A)

ans = 15

v=[1,2,5,2];

norm(v,inf)

ans = 5

دستورcond(A): جهت محاسبه عدد شرطی یک ماتریس که به نوعی نشان دهنده بد وضعی یا خوش وضعی ماتریس است از این دستور استفاده می شود.

cond(A)

ans = 4.3301

 

تجزیه ماتریس:

تابع lu(A): دستور [L,U]=lu(A) عمل تجزیه ماتریس A را به ماتریس بالا مثلثی U ماتریس پایین مثلثی L چنان انجام می دهد که A=L*U.

[L,U]=lu(A)

L = 3×3

    1.0000         0         0
    0.3750    0.5441    1.0000
    0.5000    1.0000         0

U = 3×3

    8.0000    1.0000    6.0000
         0    8.5000   -1.0000
         0         0    5.2941

L*U

ans = 3×3

     8     1     6
     3     5     7
     4     9     2

تابع qr: دستور [Q,R]=qr(A) عمل تجزیه ماتریس A به ماتریس های متعامد Q و بالا مثلثی R چنان انجام می دهد که A=Q*R.

توجه: یک ماتریس مانند متعامد است هر گاه.

[Q,R]=qr(A)

Q = 3×3

   -0.8480    0.5223    0.0901
   -0.3180   -0.3655   -0.8748
   -0.4240   -0.7705    0.4760

R = 3×3

   -9.4340   -6.2540   -8.1620
         0   -8.2394   -0.9655
         0         0   -4.6314

Q*R

ans = 3×3

    8.0000    1.0000    6.0000
    3.0000    5.0000    7.0000
    4.0000    9.0000    2.0000

Q*Q'

ans = 3×3

    1.0000   -0.0000   -0.0000
   -0.0000    1.0000         0
   -0.0000         0    1.0000

تابع svd(A): به کمک این تابع می توان تجزیه منفرد ماتریس A را انجام داد. دستور [U,S,V]=svd(A) ماتریس U، S، و V را چنان می یابدکه A=USV’ باشد. در اینجا U و V ماتریس های یکانی و S یک ماتریس قطری است که عناصر روی قطر اصلی آن ریشه های دوم مثبت مقادیر ویژه AA’ است.

[U,S,V]=svd(A)

U = 3×3

   -0.5774    0.7071    0.4082
   -0.5774    0.0000   -0.8165
   -0.5774   -0.7071    0.4082

S = 3×3

   15.0000         0         0
         0    6.9282         0
         0         0    3.4641

V = 3×3

   -0.5774    0.4082    0.7071
   -0.5774   -0.8165   -0.0000
   -0.5774    0.4082   -0.7071

تابع chol(A) : اگر A یک ماتریس معین مثبت باشد، این دستور تجزیه چولسکی آنرا بر می گرداند. اگر R=chol(A) آنگاه A=R*R’.

 

B=A'*A %تعریف یک ماتریس معین مثبت

B = 3×3

    89    59    77
    59   107    59
    77    59    89

R=chol(B)

R = 3×3

    9.4340    6.2540    8.1620
         0    8.2394    0.9655
         0         0    4.6314

 

 

 

 

بازگشت به بلاگ
دسته بندی : مطالب آموزشی | کد های آموزشی , بازدید:35 , تاریخ انتشار : 1404/02/10