محاسبه دترمینان ماتریس 3 3
معکوس ماتریس 3 * 3 و بالاتر ( n * n )
در طی پست های قبل با نحوه به دست آوردن دترمینان یک ماتریس، ماتریس کهاد، ماتریس همسازه و ماتریس الحاقی آشنا شدیم و حالا نوبت رسیده است تا معکوس یا واران یک ماتریس را محاسبه کنیم. پیش شرط : همه می دانید که اولا ماتریس شما باید یک ماتریس مربعی باشد و دوما دترمینان آن مخالف صفر 0 باشد. اگر این دو شرط را رعایت کنید ماتریس شما واران پذیر خواهد بود.محاسبه :اگر اطلاعاتی در مورد دترمینان و ماتریس الحاقی ندارید می توانید از لینک های ابتدای پست استفاده کنید یا در اینترنت در مورد آنها جست و جو کنید چون دیگر در این پست در مورد انها صحبت نمی کنیم. فرمول زیر برای محاسبه دترمینان به کار میرود.Inv (matrix) = 1 / Det(matrix) x Adjugate-matrixInv (matrix) : ماتریس معکوسDet (matrix) : دترمینان ماتریسAdjugate-matrix : ماتریس الحاقیبه همین راحتی. پس معکوس ماتریس از ضرب عدد ( 1 تقسیم بر دترمینان ماتریس) در ماتریس الحاقی یا به عبارت دیگر از ضرب معکوس دترمینان ماتریس در ماتریس الحاقی به دست می آید. و واضح است که چون دترمینان در مخرج نشسته است، هیچگاه نمیتواند مقدار صفر داشته باشد. توضیح بیشتر همراه با مثال در مورد ماتریس 3 در 3
روشهای محاسبه دترمینان
دانش آموزان ریاضی و علاقه مندان ریاضیات تعریف اولیه دترمینان یک ماتریس مربعی از مرتبه n رو می دونن: یا که دترمینان ماتریس مربعی مرتبه n رو به دترمینان n تا ماتریس از مرتبه n - 1 تبدیل می کنه و البته برای مرتبه 2 داریم: حالا فرض کنید تابعی نوشتیم که دترمینان یک ماتریس مربعی مرتبه n رو به روش خودفراخوانی (بازگشتی) محاسبه می کنه. فکر می کنید اگه n=20 باشه ، این تابع چند بار باید خودش را فرابخونه تا بتونه دترمینان رو حساب کنه؟ مرحله توقف تابع بازگشتی رو هم n = 2 در نظر بگیرید یعنی برای n = 2 تابع مستقیما دترمینان رو محاسبه می کنه. فکر می کنید این عدد چقدر بزرگ باشه؟ حساب می کنیم: فرض کنیم ( T( n تعداد فراخوانیها برای حساب کردن دترمینان ماتریس مرتبه n باشه. واضحه که T ( 2 ) = 1 ، و همینطور: T( 3 ) = 3 T( 2 ) + 1 = 4 T( 4 ) = 4 T( 3 ) + 1 = 17 برای حساب کردن دترمینان ماتریس 3 در 3 یه بار تابع رو با n = 3 فراخوانی می کنیم . اون هم خودش سه بار تابع رو برای n = 2 فراخوانی می کنه. پس رو هم 4 بار تابع فراخوانی می شه و ... با یه حساب سر انگشتی می تونید به این نتیجه برسید که اگه n به اندازه کافی بزرگ باشه (مثلا n > 10) می شه گفت: T( n ) = n! ( e - 2 ) (e عدد نپر و !n برای فاکتوریل n) یعنی مثلا برای n = 20 تابع باید بیشتر از 1.7 میلیارد میلیارد بار (یه 17 با 17 تا صفر جلوش!!) خودش رو فراخوانی کنه تا بتونه دترمینان رو حساب کنه!!!!!! تازه اینها فقط تعداد فراخوانیها رو نشون میده. اینکه هر بار محاسبات تابع چقدر طول می کشه و چقدر حافظه نیاز هست بماند ، که اگه بخوایم اونها رو هم حساب کنیم عددمون سر به فلک می کشه!!! خوب حالا فکر می کنید کامپیوتر چطور دستگاههای بزرگ معادلات رو حل می کنه؟ محض اطلاع اون عزیزانی که اطلاع ندارن بگم توی مباحثی مثل تحقیق در عملیات و برنامه ریزی خطی ممکنه یه دستگاه معادلات 100 مجهوله داشته باشیم که اگه قرار باشه از روش بالا برای پیدا کردن جواب استفاده کنیم چند هزار سال با قویترین کامپیوتر ها طول می کشه! یکی از روشها استفاده از الگوریتم گاوس - جردن برای حل دستگاه معادلاته که در واقع اصلیترین روش به حساب می یاد و فوق العاده با صرفه تر از روش قبلیه. اکثر شما با این روش آشنا هستین و فکر نکنم نیازی به توضیح اون باشه. فقط مختصرا بگم که روش کلی اون ساده کردن معادلات دستگاه با جمع کردن ضرایب مناسبی از اونها با همه ، تا ماتریس ضرایب به یه ماتریس همانی یا بالا مثلثی یا پایین مثلثی تبدیل بشه. اما آیا روش دیگه ای وجود داره؟ اگه بخش ضمیمه کتاب «حساب دیفرانسیل و انتگرال و هندسه تحلیلی» نوشته «جرج بی. توماس و ...» رو که تو هر دانشگاه و کتابخونه ای پیدا می شه بخونید ، یه روش خیلی جالب برای محاسبه ...
بدست آوردن معکوس ماتریس
Inverse of 3x3 Matrix برای پیدا کردن معکوس ماتریس 3 در 3 ، ابتدا دترمینان آن را حساب می کنیم.اگر دترمینان مساویصفر باشد ، ماتریس معکوس وجود ندارد. محاسبه دترمینان ماتریس 3 در 3 اگر ماتریس A را بصورت زیر در نظر بگیریم : برای محاسبه دترمینان ماتریس A خواهیم داشت : det(A)=a11a22a33+a12a23a31+a13a21a32-a13a22a31-a12a21a33-a11a23a32 یا همانطور که در شکل زیر مشخص است ، ابتدا ماتریس را با تکرار دو ستون اول گسترش می دهیم و سپس درایه هایی را که با خطوط قطری به هم وصل شده اند و به آنها دسته اول می گوییم را در هم ضرب کرده و حاصلشان را با هم جمع می کنیم سپس درایه هایی را که با نقطه چین به هم وصل شده اند را در هم ضرب کرده و حاصلشان را از دسته اول کم می کنیم. ترانهاده یک ماتریس 3 در 3ش بعنوان مثال برای ماتریس A ترانهاده ماتریس مانند شکل زیر می شود : محاسبه ماتریس الحاقی برای بدست آوردن ماتریس معکوس ، باید ماتریس الحاقی ماتریس A را بدست بیاوریم . برای این کار بدین گونه عمل می کنیم : ابتدا ترانهاده ماتریس A را بصورت زیر به ماتریس جدید B تبدیل می کنیم : حال درایه ها را یکی در میان در - و + ضرب میکنیم : حال معکوس دترمینان A را در B ضرب می کنیم .حاصل همان ماتریس معکوس ماتریس A است. The Inverse and Determinants of 2x2 and 3x3 Matrices The inverse of a 2x2 matrix:| a11 a12 |-1 | a22 -a12 | | a21 a22 | = 1/DET * | -a21 a11 | with DET = a11a22-a12a21 The inverse of a 3x3 matrix:| a11 a12 a13 |-1 | a33a22-a32a23 -(a33a12-a32a13) a23a12-a22a13 | | a21 a22 a23 | = 1/DET * | -(a33a21-a31a23) a33a11-a31a13 -(a23a11-a21a13) | | a31 a32 a33 | | a32a21-a31a22 -(a32a11-a31a12) a22a11-a21a12 | with DET = a11(a33a22-a32a23)-a21(a33a12-a32a13)+a31(a23a12-a22a13)نویسنده:جوینده آزاد
محاسبه دترمینان یک ماتریس
دترمینان ماتریس مربعی - که به صورت | A | یا ( det( A نمایش داده میشود - یکی از مفاهیم مشهور جبر خطی است که کاربردهای بسیاری در علوم مختلف دارد. امکان محاسبه سریع دترمینان یک ماتریس با ابعاد بزرگ، بحث مهمی است، که در ادامه سه روش محاسباتی رایج و پیچیدگی زمانی آنها مرور خواهند شد. طبق تعریف دترمینان، اگر اندازه ابعاد ماتریس مربعی یک باشد (n = 1)، دترمینان همان مقدار تکعضو آن است. یعنی: اما اگر مرتبه ماتریس بزرگتر از یک باشد (n > 1)، دترمینان را به یکی از روشهای زیر میتوان محاسبه کرد. بسط لاپلاس دترمینان بسط لاپلاس (یا بسط همسازهای) برای محاسبه دترمینان ماتریس مرتبه n، به فرم زیر است: یا که در حالت اول، بسط بر اساس سطر دلخواه i، و در حالت دوم بر اساس ستون دلخواه j صورت گرفته است. منظور از Aij (ماتریس کهاد)، ماتریسی است که از حذف سطر iام و ستون jام ماتریس اصلی به دست آمده است. به عنوان مثال، اگر ماتریس مربعی A به صورت زیر تعریف شده باشد: دترمینان آن، با بسط روی سطر اول، به این ترتیب محاسبه میشود: و با بسط روی ستون دوم: توجه داشته باشید که منظور از | | علامت قدرمطلق نیست. انتخاب سطر یا ستون مناسب برای محاسبه دترمینان با استفاده از این روش، وابسته به مقادیر درایههای آن است. به عنوان مثال، اگر تعداد درایههای صفر یک سطر یا یک ستون زیاد باشد، بهتر است از آن سطر یا ستون برای بسط استفاده کنیم. مثلا در ماتریس زیر، بهتر است از ستون اول برای بسط استفاده کنیم: پیچیدگی زمانی بسط لاپلاس همانطور که از تعریف مشخص است، در روش بسط لاپلاس، محاسبه دترمینان یک ماتریس مرتبه n، به محاسبه دترمینان n ماتریس کهاد از مرتبه n - 1 شکسته میشود. اگر عمل اصلی محاسبات را اعمال ضرب و جمع در نظر گرفته، و ( T1( n تعداد این اعمال را برای محاسبه دترمینان ماتریس مرتبه n به روش بسط لاپلاس نشان دهد، میتوان نوشت: T1( n ) = n T1( n - 1 ) + n + n + n - 1 = n T1( n - 1 ) + 3n - 1 , T1( 1 ) = 0 ( n T1( n - 1: تعداد اعمال لازم برای محاسبه زیر مسائل n: تعداد ضربهای بین aij و توانهای زوج یا فرد منفی یک n: تعداد ضربهای بین aij و ( det( Aij n - 1: تعداد جمعهای لازم برای محاسبه نهایی حل این رابطه بازگشتی نشان میدهد که ( T1( n از مرتبه ( !O( n است، که برای nهای بزرگ کارایی ندارد. روش گاوس برای محاسبه دترمینان یک ماتریس مربعی، خواصی وجود دارد که به اعمال مقدماتی سطری و ستونی مشهور بوده، و عموما از روش بسط لاپلاس ثابت میشوند. تعدادی از این خواص به شرح زیر هستند: 1- جابجا کردن دو سطر (یا دو ستون) ماتریس، مقدار دترمینان را قرینه میکند. در مثال زیر، جای سطر اول و دوم عوض شده است: 2- ...
ضرب دو ماتریس و محاسبه ی دترمینان ماتریس n*n
مقدمه هدف اصلی از انجام پروژه های برنامه های برنامه نویسی اشنایی با انجام کار شامل درک صحیح از مساله، طراحی فلوچارت و پیاده سازی انها در یک زبان برنامه نویسی است. هدف از انجام این پروژه نوشتن برنامه ای به زباتن فرترن است که حاصل ضرب دوماتریس A(M*N) و B(N*M) را محاسبه کند و دترمینان ماتریس حاصل ضرب را چاپ کند. در انجام این پروژه از زبان برنامه نویسی فرترن استفاده کرده ایم. درواقع قواعد اساسی تمامی زبان های برنامه نویسی تقریبا یکسان است،به این دلیل که همگی میخواهند الگوریتم را به یک زبان قابل فهم برای رایانه تبدیل کنند.انچه موجب قدرتمندی یک زبان نسبت به زبان دیگر میشود،ظریف کاری هایی است که دریک زبان با زبان دیگرفرق میکند.علت انتخاب زبان برنامه نویسی فرترن هم بدین خاطر است که برای محاسبات عددی در رشته های علوم پایه و مهندسی بسیارمناسب بوده وقابلیت انعطاف زیادی دارد. تئوری کار الگوریتم به معنی تشریح دقیق مراحل مختلف ونحوه انجام کار به خصوصی است. بطور کلی الگوریتم ازبخش های مختلفی تشکیل میشود که برای این برنامه بصورت زیر است: الف)تعریف دقیق مسئله:دراین برنامه میخواهیم حاصل ضرب دو ماتریسَA(M*N) وB(N*M) را محاسبه کنیم .درحقیقت دراین برنامه قصد داریم با وارد کردن درایه های دو ماتریس A و B، ماتریس حاصلضرب C(M*M) را بدست اوریم سپس از روش بالا مثلثی دترمینان ماتریس حاصلضرب را محاسبه کند. ب) ورودی های مساله:ابعاد و درایه ها ج)عملیات: با استفاده از عملیات ریاضی ربطه بین ماتریس های A و B با ماتریس حاصل ضرب مشخص میشود.به طور کلی درایه C(I,J) در ماتریس حاصل ضرب، ازضرب سطر i ام ماتریس A در ستون J ام ماتریس B به صورت زیر بدست می آید. C(I,j)=(A(i,1)*B(1,j) ) + (A(I,2) * B(2,J) ) + ……( A(I,n)*B(n,J) ) برای محاسبه دترمینان از روش بالا مثلثی استفاده میکنیم. در این روش با استفاده از فرمولهای ماتریسی درایه های پایین قطر اصلی را صفر می کنیم و سپس دترمینان ماتریس، حاصلضرب درایه های قطر اصلی می شود. د)خروجی های مساله:ماتریس C(N,N) که حاصلضرب دو ماتریس Aو B است. DET ماتریسC. ویژگی اصلی در طراحی این برنامه استفاده از ساختار کنترلی FOR, NEXT میباشد. در حقیقت برای ورود درایه های دو ماتریس A و B و همچنین محاسبه ماتریس حاصل ضرب نیازمند این بودیم تا بخشی ار ان بطور مکرر تکرار شود،لذا برای پرهیز از این تکرار از ساختار for,nextاستفاده کردیمکد برنامه به زبان فرترن PROGRAM GROUP INTEGER ::I,J,M,N,S,K,G=2,T=0,SUM=0,Q REAL::DET=1 REAL,DIMENSION(:,:),ALLOCATABLE::A REAL,DIMENSION(:,:),ALLOCATABLE::B REAL,DIMENSION(:,:),ALLOCATABLE::C "PRINT*,"ENTER M,N READ*,M,N ((ALLOCATE(A(N,M ((ALLOCATE(B(M,N((ALLOCATE(C(N,N "("PRINT*,"Enter A("N","M READ*,A "("PRINT*,"Enter B("M","N READ*,B DO I=1,N DO ...
راهنمایی درمورد برنامه محاسبه دترمینان ماتریس (به درخواست محمد رضا)
یا که دترمینان ماتریس مربعی مرتبه n رو به دترمینان n تا ماتریس از مرتبه n-1 تبدیل می کنه و البته برای مرتبه 2 داریم: حالا فرض کنید تابعی نوشتیم که دترمینان یک ماتریس مربعی مرتبه n رو به روش خودفراخوانی (بازگشتی) محاسبه می کنه. فکر می کنید اگه n=20 باشه ، این تابع چند بار باید خودش را فرابخونه تا بتونه دترمینان رو حساب کنه؟ مرحله توقف تابع بازگشتی رو هم n=2 در نظر بگیرید یعنی برای n=2 تابع مستقیما دترمینان رو محاسبه می کنه. فکر می کنید این عدد چقدر بزرگ باشه؟ بیاین با هم حساب کنیم: فرض کنیم T(n) تعداد فراخوانیها برای حساب کردن دترمینان ماتریس مرتبه n باشه. واضحه کهT(2)=1 و همینطور: T(3)=3T(2)+1=4 T(4)=4T(3)+1=17 برای حساب کردن دترمینان ماتریس 3 در 3 یه بار تابع رو با n=3 فراخوانی می کنیم . اون هم خودش سه بار تابع رو برای n=2 فراخوانی می کنه. پس رو هم 4 بار تابع فراخوانی می شه و ... با یه حساب سر انگشتی می تونید به این نتیجه برسید که اگه n به اندازه کافی بزرگ باشه (مثلا n>10) میشه گفت: T(n)=n!(e-2) (e عدد نپر و !n برای فاکتوریل n)یعنی مثلا برای n=20 تابع باید بیشتر از 1.7 میلیارد میلیارد بار(یه 17 با 17 تا صفر جلوش) خودش رو فراخوانی کنه تا بتونه دترمینان رو حساب کنه!!!!!! اصطلاحا گفته می شه که این روش از مرتبه O(n!) هست.تازه اینها فقط تعداد فراخوانیها رو نشون میده.اینکه هر بار محاسبات توی تابع چقدر طول می کشه و چقدر حافظه نیاز هست بماند ، که اگه بخوایم اونارم حساب کنیم عددمون سر به فلک می کشه!!! خوب حالا فکر می کنید کامپیوترا چطور دستگاههای بزرگ معادلات رو حل می کنن؟ محض اطلاع اون عزیزانی که اطلاع ندارن بگم توی مباحثی مثل تحقیق در عملیات و برنامه ریزی خطی ممکنه یه دستگاه معادلات 100 مجهوله داشته باشیم که اگه قرار باشه از روش بالا برای پیدا کردن جواب استفاده کنیم چند هزار سال با قویترین کامپیوترا طول می کشه! یکی از روشا استفاده از الگوریتم گاوس-جردن برای حل دستگاه معادلاته که در واقع اصلیترین روش به حساب می یاد و فوق العاده با صرفه تر از روش قبلیه. اکثر شما با این روش آشنا هستین و فکر نکنم نیازی به توضیح اون باشه. فقط مختصرا بگم که روش کلی اون ساده کردن معادلات دستگاه با جمع کردن ضرایب مناسبی از اونها با همه ، تا ماتریس ضرایب به یه ماتریس همانی یا بالا مثلثی یا پایین مثلثی تبدیل بشه. اما آیا روش دیگه ای وجود داره؟ اگه بخش ضمیمه کتاب «حساب دیفرانسیل و انتگرال و هندسه تحلیلی» نوشته «جرج بی. توماس و ...» رو که تو هر دانشگاه و کتابخونه ای پیدا می شه بخونید ، یه روش خیلی جالب برای محاسبه دترمینان ارائه شده که دترمینان ماتریس مرتبه n رو فقط به یه دترمینان از مرتبه ...
مبحث ماتریس
ماتریس ماتریس به یک آرایش منظم از اعداد گفته میشود. به طوری که میتوان گفت که هر ستون یا هر سطر یک ماتریس، یک بردار را تشکیل میدهد. در جبر خطی، میتوان اثبات کرد که هر نگاشت خطیِ، از فضای به فضای ، هم ارز (isomorph) با یک ماتریس (m سطر و n ستون) میباشد. ماتریسها کاربردهای فراوانی در جبر خطی دارند. از جمله در انتقالهای خطی و در حل دستگاه معادلات خطی. ماتریسها میتوانند که با همدیگر جمع، از هم تفریق، در هم ضرب یا... (با قوانین خودشان) بشوند. اگر دترمینان یک ماتریس مربعی نا صفر باشد، آنگاه آن ماتریس را ماتریس معکوسپذیر نامند.درایهها به هر یک از عناصر موجود در یک ماتریس درایه میگویند. برای مشخص کردن هر درایه باید نام ردیف و ستون را در پایین نام ماتریس نوشت. برای مثال اگر نام ماتریسی i باشد درایهای که در ردیف اول و ستون دوم قرار دارد به این صورت نشان داده میشود: i1,2 انواع ماتریس ها-قرینه ماتریسMay 30, 2010 | admin آموزش ریاضیات:انواع ماتریس ها ماتریس قطری چیست؟ تعریف ماتریس قطری:ماتریس مربع A را قطری می نامیم هرگاه,درایه های طرفین قطر اصلی آن صفر باشد.برای مثال ماتریس یک ماتریس قطری است. ماتریس همانی چیست؟ تعریف ماتریس همانی:ماتریس مربعی را که درایه های قطر اصلی آن یک و سایر درایه های آن صفر باشد را ماتریس همانی (واحد) می نامیم و آن را با In یا Iنمایش می دهیم. ماتریس های مساوی: دو ماتریس را مساوی می گوییم هرگاه درایه های آن ها نظیر به نظیر باهم برابر باشند. ماتریس های هم مرتبه: دو ماتریس را که تعداد سطر ها و ستون های آن ها با هم برابر باشند ماتریس های هم مرتبه می گویند. نکته ای که از این تعریف می توان نتیجه گرفت اینست که اگر دو ماتریس هم مرتبه نباشند,با هم مساوی نیستند. ماتریس صفر: هرگاه تمام درایه های یک ماتریس صفر باشد,آن را ماتریس صفر می نامند و با نماد نمایش می دهند. تعریف قرینه ی ماتریس : قرینه ماتریس A از قرینه کردن تک تک درایه های ماتریس A بدست می آید.قرینه ی ماتریس A را به صورت A- نمایش می دهیم.ماتریس اسکالر ماتریس قطری که تمام درایههای قطر اصلی ان برابر باشد یک ماتریس اسکالر نامیده میشود و برابر با همان مقدار درایه در ضرب ماتریسهاست یا به عبارت دیگر λIکه I ماتریس همانی است. برای مثال ماتریس ۳×۳ اسکالر به این شکل است: رای پیدا کردن معکوس ماتریس 3 در 3 ، ابتدا دترمینان آن را حساب می کنیم.اگر دترمینان مساویصفر باشد ، ماتریس معکوس وجود ندارد. محاسبه دترمینان ماتریس 3 در 3 اگر ماتریس A را بصورت زیر در نظر بگیریم : برای محاسبه دترمینان ماتریس A خواهیم ...
نمونه برنامه های حل شده برنامه نویسی ++c برای درس محاسبات عددی
C نمونه مسائل حل شده برنامه نویسی( گنجی )١مثالهای معمولی*** علامتهای ستاره میزان سختی سوال را نشان می دهند.1 ) * برنامه ای را بنویسید که اعداد فرد سه رقمی را از بزرگ به کوچک چاپ کند.#includevoid main(){ int i=999;while ( i>100 ){printf("%d,",i);i-=2;}}این برنامه یک برنامه خودکار است یعنی به محض اجرا خود کار خواسته شده را تحویل می دهد.--------------------------------------------------------------------------2. * برنامه ای را بنویسید که دو عدد صحیح را بگیرد و تمام اعداد زوج بین آنها را چاپ کند.در واقع کلماتی مثل : بگیرد یا دریافت کند نشان دهنده باز بودن مساله است یعنی اینکه حداقل باید کامپ ایلر چیزی را یاازطریق صفحه کلید یا هر چیز ورودی دیگرکه بوسیله کاربر وارد می شود را بخواند یا دریافت کند.#includevoid main(){ int a, b, c;printf("Enter 2 numbers :");scanf("%d%d", &a, &b);if (a>b){ c=a;a=b;b=c;}if (a%2 !=0)a--;while (b>a+2){ a+=2;printf("%d ",a);}}٢بزرگی و کوچکی هر یک از اعداد را چک نموده ایم بدین صورت که if در این برنامه ابتدا ما با استفاده از یک دستورفرض بر آن است که کاربر اعداد را به ترتیب وارد نکند یعنی مثلاً کابری ابتدا عدد بزرگتر و سپس کوچکتر را تایپ کندy و عدد بزرگتر را در ظرف a و کاربری دیگر برعکس . لذا این برنامه با استفاده از قسمت یک عدد کوچکتر را در ظرفاست کار های قسمت دو را aبه شرح ذیل انجام دهد:عددی زوج است پس از بعد از آن را چاپ کن ( با استفاده a بر 2 بخش پذیر باشد (شرط برقرار باشد)یعنی a اگرکم کن تا زوج شود و به همین شکل a والا یک واحد از ، b می افزاید ) تا x هر بار 2 تا به مقدار a+= از دستور 2ادامه بده.--------------------------------------------------------------------------3) * برنامه ای بنویسید که ابتدا تعداد دانش آموزان و سپس نمرات آنها را دریافت کند و درنهایت میانگین کل کلاس را چاپ کند.#includevoid main(){int i,n;double sum=0, avg, mark;printf("enter n of students:");scanf("%d", &n);for (i=1; i<=n; i++){printf("enter a mark :");scanf("%lf", &mark);sum+=mark;}avg=sum/n;printf("\naverage=%5.2lf", avg);}---------------------------------------------------------------------------4 ** برنامه ای بنویسید که صد عدد را دریافت کند و در پایان کوچکترین و بزرگترین آنهارا چاپ کند.برای حل این برنامه کافی است شما ظرفی مجازی برای اولین عدد وارد شده در نظر بگیرید ونیز دو ظرفدیگر یکی برای بزرگترین عدد و دیگری کوچکترین عدد در نظر بگیرید. سپس دیگر اعداد که از طریق یککه دارای دو شرط یکی شرط بزرگتر بودن و دیگری کوچتر بودن است را مورد ارزیابی نسبت به for حلقهعدد اولی که کاربر وارد کرده می کند بدین صورت که در شرط اول پس از وار د نمودن هر عدد آن را نسبت بهعدد اول مقایسه می کند اگر بزرگتر بود آن را در محل ظرف اول می ریزد و به همین صورت تا اینکه بزرگترینقرار می گیرد. ولی برای شرط دوم موجود در حلقه عکس این عمل تکرار می ...
برنامه محاسبه معکوس ماتریس n * n ( زبان C# )
در پست های قبل نحوه به دست آوردن معکوس یا واران یک ماتریس 3 در 3 یا بیشتر و همچنین شروط آن را یادآوری کردیم. در این پست هم برای کسانی که مانند من علاقه دارند برنامه محاسبه را خودشان به صورت دلخواه بنویسند، نکاتی را توضیح خواهیم داد. هدف اصلی من از این چند پست، افزایش مهارت در برنامه نویسی با بهانه تعیین معکوس یا واران یک ماتریس بود که سوژه خوبی برای برنامه نویسی در سطوح مقدماتی است؛ در این میان یک یادآوری هم از دروس دوران دبیرستان شد. در انتهای پست نیز میتوانید نسخه ای از برنامه ای که من برای این چند پست نوشته ام را داشته باشید. که به احتمال زیاد بدون مشکل نخواهد بود. اولین کار برای محاسبه معکوس ماتریس به دست آوردن ماتریس الحاقی است. ماتریس الحاقی ماتریسی هم مرتبه ماتریس ورودی است که درایه های آن از انجام 3 عملیات زیر به دست می آید : 1 : هر درایه برابر است با کهاد ماتریس نسبت به سطر و ستون آن درایه.2 : درایه های ماتریس با شرط اینکه، "اگر سطر + ستون درایه یا i+ j فرد بود" تغییر علامت می یابند. 3 : درایه های نسبت به قطر اصلی جابه جا می شوند. مانند اینکه قطر اصلی را محور تقارن ماتریس در نظر بگیریم. برای دو تغییر اول فرمول زیر استفاده می شود و ماتریسی که از این اعمال این دو تغییر به دست می یابد را ماتریس همسازه گفته می شود. A i, j = (-1) ᴵ + ᴶ x | M i ,j |من تابع محاسبه ماتریس همسازه را اینگونه نوشته ام : private double[,] Hamsaze(double[,] matrix) { int Size = (int)Math.Sqrt(matrix.Length); double[,] result = new double[Size, Size]; for (int i = 0; i < Size; i++) { for (int j = 0; j < Size; j++) { result[i, j] = Math.Pow(-1, (i+1 + j+1)) * Determinant(Kehad(matrix, i, j)); } } return result; }در این تابع دو تابع دیگر به نام Determinant و Kehad را مشاهده می کنید. که از نامشان پیداست خروجی انها چیست. تابع دترمیان :private double Determinant(double[,] matrix) { double determinant = 0; int Size = (int)Math.Sqrt(matrix.Length); if (Size == 1) { return matrix[0, 0]; } else if (Size == 2) { return (matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0]); } else { for (int i = 0; i < Size; i++) determinant += (int)Math.Pow(-1, (i + 1) + 1) * matrix[0, i] * Determinant(Kehad(matrix, 0, i)); } return determinant; }تابع کهاد : private double[,] Kehad(double[,] matrix, int ROW, int COL) { int Size = (int) Math.Sqrt(matrix.Length); double[,] result = new double[Size - 1, Size - 1]; int x = -1, y = 0; for (int i = 0; i < Size; i++) { if (i == ROW) continue; x++; y = 0; for (int j = 0; j < Size; j++) { if (j == COL) continue; ...
بدست آوردن وارون یا معکوس یک ماتریس
مطلبی مهم را در این پست میگذارم :بدست آوردن وارون یا معکوس یک ماتریس دو در دو :یک تقسیم بر دترمینان ماتریس ضرب در (( قطر اصلی جابجا قطر فرعی برعکس ))اما مسئله مهم این است که اینجا میخواهیم معکوس ماتریس 3*3 رو بگیم : ابتدا باید یاد بگیریم که دترمینان این ماتریس چجوری بدست میاد از اینجا ( صفحه اختصاصی دترمینان خوب یاد بگیرید) حالا از فورمول زیر معکوس ماتریس رو محاسبه کنید. (اگر تصویر نمایش داده نمیشود لطفا اعلام کنید)نحوه ی حفظ کردن فورمول هم آسان است. فقط کمی دقت لازمه که چی باید از چی کم بشه یه جورایی مثل همون ماتریس دو در دو است.موفق باشید. مشکلی بود با من در ارتباط باشیدجیمیل : [email protected]هات میل:[email protected]فیسبوک :facebook.com/mohammadalighaderi20آموزش رفتن به فیس بوک بدون هیچ برنامه یا ف.ش از اینجا
روش ساروس برای محاسبه دترمینان یک ماتریس سه در سه
در این پست آموزش روش ساروس برای محاسبه دترمینان یک ماتریس سه در سه را برای شما دوستان قرار داده ایم . برای مشاهده آموزش بر روی ادامه مطلب کلیک کنید.برای محاسبه دترمینان یک ماتریس سه در سه معمولا از روش ساروس استفاده می شود ، در این روش ابتدا ماتریس را مجددا در کنار خود می نویسیم و سپس درایه های هر قطر اصلی را در هم ضرب کرده و با حاصل ضرب درایه های قطر های اصلی دیگر جمع می کنیم سپس عملیات مذکور را برای قطر های فرعی نیز انجام داده و از حاصل جمع قطرهای اصلی کم می کنیم ، عدد به دست آمده دترمینان آن ماتریس می باشد.برای محاسبه دترمینان ماتریس A به شکل زیر عمل می کنیم.1- ابتدا ماتریس A را دوباره در کنار آن می نویسیم و داریم:2- اکنون درایه های قطر های اصلی را در هم ضرب می کنیم و سپس جمع می کنیم یعنی اگر حاصل جمع قطرهای اصلی را δ بنامیم آنگاه داریم:3- اکنون درایه های قطر های فرعی را نیز در هم ضرب می کنیم و سپس جمع می کنیم یعنی اگر حاصل جمع قطرهای فرعی را φ بنامیم آنگاه داریم:4- اکنون دترمینان ماتریس A برابر حاصل تفریق جمع های قطر اصلی و فرعی است یعنی داریم:منبع: hsma.ir