حل معادله در متلب
معادلات ریاضی بخش جدایی ناپذیر علوم مختلف از جمله علوم مهندسی هستند. حل بسیاری از مسائل، وابسته به حل یک معادله است. در ریاضیات، یک معادله، برابریِ دو عبارت را تأیید می کند. انواع مختلفی از معادلات وجود دارند. ابزارهای متنوعی نیز برای حل این معادلات وجود دارند. یکی از ابزارهایی که به کمک آن میتوان به حل معادلات پرداخت، نرمافزار متلب است. در این پست از آموزشهای متلب میخواهیم به حل معادله در متلب بپردازیم. با هوسم همراه باشید …
مقدمه حل معادله در متلب
معادلهها به وفور در علوم مهندسی مختلف یافت میشوند. اگر این معادلات ساده باشند، خوراک مهندسان هستند! کافی است یک کاغذ و خودکار داشته باشند، آنگاه در یک چشم به هم زدن آن را حل خواهند کرد. یکی از مهندسانی که نه تنها معادلات ساده بلکه معادلات پیچیده را نیز میتواند حل کند، جناب متلب است! برای حل معادله در متلب باید دستورهایی که این کار را انجام میدهند پیدا کنیم. دو دستوری که حل معادله در متلب را انجام میدهند عبارتند از: دستور solve در متلب و دستور roots در متلب
دستور roots در متلب
برای حل یک معادله چندجملهای و پیدا کردن ریشههای آن از دستور roots در متلب میتوان استفاده کرد. استفاده از این دستور بسیار ساده است. فقط کافی است که ضرایب چندجملهای را به عنوان ورودی به دستور roots بدهیم. فرض کنید معادله چندجملهای که داریم به شکل p1xn+…+pnx+pn+1=0 باشد. برای حل این معادله باید از دستور roots به شکل roots([p1, …, pn, pn+1 ]) استفاده شود. بیایید با هم چند مثال را بررسی کنیم:
-
مثال 1:
فرض کنید بخواهیم معادله a5*x^2+3*x-4=0را حل کنیم. در این صورت باید بنویسیم.
>> p = [5 3 -4] p = 5 3 -4 >> roots(p) ans = -1.2434 0.6434
مشاهده میکنید که این معادله، دو ریشه به مقادیر 1.2434- و 0.6437 دارد.
-
مثال 2
حالا بیایید معادله را کمی پیچیده کنیم. برای حل معادله a2*x5-3x4-5x3+x2+x-1=0باید بنویسیم:
>> p = [2 -3 -5 1 0 1 -1] p = 2 -3 -5 1 0 1 -1 >> roots(p) ans = 2.4342 + 0.0000i -1.2363 + 0.0000i -0.3429 + 0.5994i -0.3429 - 0.5994i 0.4940 + 0.3230i 0.4940 - 0.3230i
-
مثال 3 [ مهم]
فرض کنید بخواهیم معادله x4-1=0 را با متلب حل کنیم. برای این کار مینویسیم:
>> p = [1, -1] p = 1 -1 >> roots(p) ans = 1
در اینجا ما یک چند جملهای درجه 4 داشتیم. متلب به ما میگوید که این معادله تنها یک ریشه دارد و مقدار این ریشه برابر با 1 است. در ریاضیات بارها به ما گوشزد شده که تعداد ریشههای یک چند جملهای برابر با تعداد درجهاش است. پس اینجا چه اتفاقی افتاده است؟! خب با نگاهی به ورودی دستور roots میبینیم که ما فقط دو ضریب به عنوان ورودی به این دستور دادهایم. در حالی که چند جملهای ما ضرایب دیگری نیز دارد که مقدار آنها صفر هستند. صرفا به دلیل صفر بودن یک ضریب، مجاز نیستیم که آن ضریب را از ورودی roots حذف کنیم. پس حتما باید ضرایب صفر را نیز به roots بدهیم. با در نظر گرفتن این نکته، کد خود را به صورت زیر اصلاح میکنیم:
>> p = [1, 0, 0, 0, -1] p = 1 0 0 0 -1 >> roots(p) ans = -1.0000 + 0.0000i 0.0000 + 1.0000i 0.0000 - 1.0000i 1.0000 + 0.0000i
مشاهده میکنید که 4 جواب برای معادله پیدا شده است و جواب مورد انتظار و درست نیز همین است.
دستور solve در متلب
روش دیگر برای حل معادله در متلب استفاده از دستور solve در متلب است. برخلاف دستور roots در متلب که فقط برای معادلات چندجملهای قابل استفاده است، با دستور slove هر معادلهای را میتوان حل کرد. برای اینکه بفهمیم این دستور چه ورودیهایی را قبول میکند، عبارت solve را در help متلب جستجو کرده و صفحه توضیحات مربوط به این دستور را باز کنید.
همانطور که مشاهده میکنید ما میتوانیم با استفاده از دستور solve(eqn,var) یک معادله را حل کنیم. اما ابتدا باید مشخص شود عبارات eqn و var چه هستند.
-
عبارات eqn و var در دستور solve چه هستند؟
احتمالا حدس زدید که eqn مخفف عبارت equation است و در این قسمت باید معادله مورد نظر خود را وارد کنید. var نیز مخفف عبارت variable است که در این قسمت باید مشخص کنید که میخواهید معادله را نسبت به کدام متغیر حل کنید. اما این معادله و متغیر به چه شکلی باید تعریف شوند؟ در ادامه به بررسی این موضوع پرداخته میشود.
برای استفاده از دستور solve در متلب، ابتدا باید توابع را به صورت سمبولیک تعریف کنیم و بعد آن را به عنوان ورودی به تابع solve بدهیم. خروجی دستور solve میتواند سمبولیک یا عددی باشد. اگر ضرایب معادلات به صورت سمبولیک تعریف شده باشند، ریشههای معادله نیز به صورت سمبولیک محاسبه میشوند. در صورتی که ضرایب عددی باشند، ریشهها نیز به صورت عددی محاسبه خواهند شد. در ادامه با ارائه مثالهایی، چندین حالت مختلف را با هم بررسی خواهیم کرد.
-
مثال 1:
فرض کنید بخواهیم معادله a*x2 + b*x + c = 0 را با استفاده از دستور solve حل کنیم. برای حل چنین معادلهای اول باید به متلب بفهمانیم که a،b،c و x متغیر سمبولیک هستند. به این منظور باید از syms استفاده کنیم. جلوی دستور syms هر حرف یا کلمهای نوشته شود، متلب آن را به عنوان یک متغیر سمبولیک خواهد شناخت. بنابراین متغیرهای سمبولیک را به صورت زیر تعریف میکنیم:
>> syms x a b c
حالا معادله را به صورت زیر به دستور solve میدهیم:
>> solve(a*x^2 + b*x + c == 0, x)
با اجرای دستور بالا خواهیم داشت:
ans = -(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
این جوابی است که همه ما انتظارش را داشتیم!
نکته توجه کنید که اگر در ورودی دستور solve مشخص نکنیم که میخواهیم نسبت به کدام متغیر معادله را حل کنیم، به صورت اتوماتیک یک متغیر برای حل معادله انتخاب میشود.
-
مثال 2
در این مثال میخواهیم معادله a5x2+3x-4=0را با دستور solve حل کنیم. در این صورت کد زیر را می نویسیم:
>> syms x >> solve(5*x^2+3*x-4==0, x) ans = - 89^(1/2)/10 - 3/10 89^(1/2)/10 - 3/10
-
مثال 3
فرض کنید به جای یک معادله با یک متغیر، دو معادله با دو متغیر داشته باشیم. آیا میتوان این معادله را با دستور solve حل کرد؟ جواب بله است. فرض کنید دومعادله a*x – b*y – c = 0 و 2*a*x – 9*c + b= 0 داشته باشیم. برای حل این دومعادله کد زیر را مینویسیم:
>> syms x y a b c >> [s1,s2] = solve(a*x - b*y - c == 0, 2*a*x + b - 9*c == 0, [x y]) S1 = -(b - 9*c)/(2*a) S2 = -(b - 7*c)/(2*b)
همانطور که مشاهده میکنید برای حل دو معادله و دو مجهول باید هردو معادله را در ورودی به دستور solve بدهیم. همچنین برای اینکه مشخص کنیم معادله نسبت به کدام متغیرها باید حل شود، متغیرها را به صورت یک آرایه به دستور solve باید بدهیم.
نکته توجه کنید که اگر خروجی به جای [s1, s2] در یک متغیر مثلا s ذخیره میشد، آنگاه خروجی در متغیر s به صورت یک structure ذخیره خواهد شد.
s = solve(a*x - b*y - c == 0, 2*a*x + b - 9*c == 0, [x y]) s = struct with fields: x: [1×1 sym] y: [1×1 sym]
همانطور که مشاهده میکنید متغیر s، یک structure است که متغیر x و y در آن وجود دارند. در این صورت برای استخراج مقدار x و y به صورت زیر عمل میکنیم:
>> x = s.x x = -(b - 9*c)/(2*a) >> y = s.y y = -(b - 7*c)/(2*b)
جمعبندی
در این پست نحوه حل معادله در متلب مورد بررسی قرار گرفت. در بخش اول به حل معادلات چندجملهای با دستور roots پرداخته شد. در بخش دوم نحوه استفاده از دستور solve بررسی شد. امیدوارم این آموزش مورد توجه شما قرار گرفته باشد.
دیدگاهتان را بنویسید