حل دستگاه معادلات در متلب
در این پست میخواهیم حل دستگاه معادلات در متلب را آموزش دهیم. در طول دوران تحصیل، همه شما احتمالا بارها به دستگاه معادلاتی برخورد کردید که باید حلش میکردید. در گذشته روشهای متعددی برای حل چنین معادلاتی استفاده کردید. اما در این پست ما میخواهیم به شما آموزش دهیم که چگونه با متلب این کار را انجام دهید. در پایان این پست شما خواهید توانست حل دستگاه معادلات غیرخطی در متلب و حل دستگاه معادلات خطی در متلب را به سادگی انجام دهید. با هوسم همراه باشید…
حل چند معادله چند مجهول در متلب
شک ندارم که در طول دوران تحصیل خود، بارها و بارها به دستگاه معادلات برخورد کردید! به احتمال زیاد، بیشتر دستگاههای معادلاتی که تاکنون با آنها برخورد داشتید از نوع خطی بودند. حتی در ریاضیات دوران دبیرستان، مبحثی وجود دارد که در آن چند روش برای حل دستگاه معادلات خطی گفته شده است. روش کرامر، حذف و جایگزینی از جمله روشهایی هستند که در دبیرستان مطرح شده است.
در این بخش ما میخواهیم از متلب برای حل دستگاه معادلات خطی و غیرخطی کمک بگیریم. ما از دستور solve برای حل دستگاه معادلات استفاده خواهیم کرد. برویم که یاد بگیریم…
حل دستگاه معادلات خطی در متلب
ابتدا به حل دستگاه معادلات خطی در متلب میپردازیم. به مجموعهای از معادلات خطی، یک دستگاه معادلات خطی گفته میشود. معمولا در یک دستگاه معادلات خطی، تعداد متغیرهای مجهول با تعداد معادلات برابر هستند. دستگاه معادلات خطیِ دو معادله دو مجهول را شاید بتوان سادهترین دستگاه معادلات حساب کرد. از این رو حل دستگاه معادلات در متلب را با آن شروع میکنیم! دستگاه معادلات زیر را درنظر بگیرید:
برای حل چنین دستگاهی در متلب، ابتدا باید یکی یکی معادلات را تعریف کنیم. برای تعریف یک معادله در متلب باید از متغیرهای سمبولیک استفاده کنیم. یعنی ابتدا باید با استفاده از syms به متلب بفهمانیم که x و y متغیرها هستند. سپس معادلات را بر اساس x و y تعریف کنیم. برای این کار کافی است بنویسیم:
>> syms x y
حالا متلب میداند که x و y متغیرها هستند. پس ما میتوانیم معادلات را یکی یکی تعریف کنیم.
تعریف معادله در متلب
برای تعریف معادلات در متلب دو راه وجود دارد. یا از علامت == استفاده میکنیم یعنی مینویسیم:
>> eq1 = 2*x + 3*y ==6 >> eq2 = 4*x + 9*y == 15
راه دیگر این است که قسمت ثابت که بعد از مساوی هست را بیاوریم قبل از مساوی، به این شکل:
آیا معادلات ما تغییر کردهاند؟ خیر! فقط به شکل متفاوتی نوشته شدهاند. حالا از قسمت مساوی با صفر صرف نظر کرده و معادلات را به شکل زیر در دو متغیر ذخیره میکنیم:
>> eq1 = 2*x + 3*y - 6; >> eq2 = 4*x + 9*y - 15;
شاید برایتان سوال پیش بیاید که چرا معادلاتمان را این ریختی کردیم و حالا متلب چطور بفهمد که اینها یک معادله هستند؟؟ نگران نباشید، ما میخواهیم از دستور solve استفاده کنیم و دستور solve معادلات را به این شکل از ما میخواهد و خیلی خوب هم میفهمد! پس از اینکه معادلهها را تعریف کردیم حالا نوبت به حل دستگاه معادلات در متلب با دستور solve میرسد!
حل دستگاه معادلات با دستور solve در متلب
تا اینجا شما نصف راه را رفتهاید! برای حل دستگاه معادلات در متلب، کافی است به شکل زیر معادلات را به دستور solve بدهید:
>> [xx, yy] = solve([eq1, eq2], [x, y])
مشاهده میکنید که به عنوان ورودی به دستور solve، دو عبارت داده شده است. یکی عبارت [eq1, eq2] است که تمامی معادلاتی که داریم در این قسمت به دستور solve داده میشود. دیگری [x, y] است که در این بخش تمامی متغیرها را به دستور solve معرفی میکنیم. نتیجه را هم در دو متغیر xx و yy ذخیره کردیم. با اجرای کد بالا خواهیم داشت:
xx = 3/2 yy = 1
مشاهده میکنید که به راحتی توانستید دو معادله دو مجهول در متلب را به راحتی حل کنید. در بخش بعدی حل سه معادله سه مجهول در متلب را آموزش خواهیم داد. برویم سراغ بخش بعدی…
حل سه معادله سه مجهول در متلب
حل سه معادله سه مجهول در متلب نیز با دستور solve و به همان شکلی که در بخش قبل گفتیم انجام میگیرد. به عنوان مثال میخواهیم دستگاه زیر را با متلب حل کنیم:
به شکل مشابه، ابتدا متغیرها را با استفاده از syms معرفی کرده، سپس معادلات را یکی یکی تعریف میکنیم:
syms x y z eqn1 = 2*x + y + z == 2; eqn2 = -x + y - z == 3; eqn3 = x + 2*y + 3*z == -10;
حالا از دستور solve استفاده میکنیم:
>> [xx, yy, zz] = solve([eqn1, eqn2, eqn3], [x, y, z])
باز هم ابتدا معادلات را به دستور solve دادیم و سپس متغیرها را معرفی کردیم. با اجرای دستور بالا خواهیم داشت:
xx = 3 yy = 1 zz = -5
به همین روش میتوان دستگاه معادلات خطی با متغیرهای بیشتر را نیز حل کرد.
حل دستگاه معادلات غیرخطی
تا الان دستگاه معادلات خطی را حل کردیم، حالا میخواهیم به حل دستگاه معادلات غیرخطی بپردازیم. حل دستگاه معادلات غیرخطی نیز دقیقا مشابه با دستگاه معادلات خطی است. دستگاه معادلات غیرخطی زیر را در نظر بگیرید:
برای حل چنین معادلهای در متلب، ابتدا معادلات را تعریف میکنیم. دقت داشته باشید که در اینجا a را هم باید با استفاده از دستور syms به متلب معرفی کنیم. اگرچه میدانیم x و y متغیرهای اصلی ما هستند و a در واقع یک ثابت است. پس مینویسیم:
>> syms x y a >> eq1 = x^2*y^2 == 0; >> eq2 = x-y/2 == a;
حالا نوبت به استفاده از دستور solve است. مشابه قبل مینویسیم:
>> [xx, yy] = solve([eq1, eq2], [x, y])
با اجرای کد بالا داریم:
xx = 0 a yy = -2*a 0
مشاهده میکنید که دو دسته جواب برای این معادله وجود دارد و متلب هر دو را برایتان لیست کرده است! به این ترتیب توانستید حل دستگاه معادلات غیرخطی را نیز انجام دهید.
جمع بندی حل دستگاه معادلات در متلب
در این پست حل دستگاه معادلات در متلب را بررسی کردیم. توانستیم با استفاده از دستور solve در متلب، دستگاه معادله خطی و غیرخطی را حل کنیم. امیدوارم این پست مورد توجه شما قرار گرفته باشد. کامنت فراموش نشود! تا یک پست متلبی دیگر خدانگهدار…
مطالب زیر را حتما مطالعه کنید
تعریف متغیر در متلب
آموزش متلب رایگان
دستور max در متلب
دستور محاسبه انتگرال در متلب
دستور input در متلب
دستور ezplot در متلب
12 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
برای نوشتن چند معادله چند مجهول می توان از ضرب دو ماتریس استفاده کرد
[A]*[X]=[B] حال با تقسیم ماتریس B بر ماتریس A می بایست پاسخ بدست آید ولی اینطور نمی شود آیا می توانید علت را توضیح دهید .
شما چیزی به عنوان تقسیم ماتریس ندارید…باید دترمینان محاسبه کنید و در ماتریس ضرب کنید تا معکوس آن بدست آید
برای نوشتن چند معادله و چند مجهول می توان از ضرب دو ماتریس و مساوی قرار دادن با ماتریس سوم استفاده کرد
تفاوت حل دستگاه معادلات با روش هایی مثل نیوتن رافسون و استفاده از solveمتلب چیه؟واینکه کدوم دقیقتره؟ و حل با استفاده از solveمتلب ،دسته جواب میده ،اگه فقط یک جواب مدنظر باشه،کدوم جواب میشه؟
سلام كد هاي همين مثال سه معادله را كپي كردم داخل متلب ارور Warning: 6 equations in 3 variables. ميده ارورش زرده و متغير ها به دست نميان
سلام
کدها مجدد در متلب اجرا و تست شدند. نتیجه این که مشکلی وجود نداره و مثالها کاملا صحیح هستند.
ممکن هست این مشکل به خاطر قدیمی بودن متلب شما باشه.
سلام حل دستگاه n معادله و n مجهول به چه صورتی میشه ممنون بابت وقتی که میذارید…
سلام،
مشابه سه معادله سه مجهول میتونید انجامش بدید…
بسیار عالی بود. مطلب را خیلی خوب و ساده بیان کردید ممنونم
سپاس🌹
متشکرم
سلام
ممنون از شما برای کامنت 🌹🙏