حل معادلات چند مجهولی در متلب
حل معادلات چند مجهول از مسائل اساسی در ریاضیات و مهندسی است که میتواند خطی یا غیرخطی باشند و به روشهای مختلفی قابل حل هستند. معادلات خطی چند مجهولی به صورت A*x=b نوشته میشوند که در آن A یک ماتریس و x و b به ترتیب بردارهای مجهول و نتایج هستند. در نرم افزار متلب برای حل چنین معادلاتی میتوان از روشهای مختلفی استفاده کرد. انتخاب روش مناسب بستگی به ویژگیهای خاص مسئله و نیازمندیهای عددی دارد. سادهترین و سریعترین روش، روش استفاده از عملگر «\» است. همچنین در حل سیستمهای خطی بزرگ استفاده از تابع linsolve کاربردی تر میباشد. در ماتریسهای مربعی و معکوسپذیر نیز روش استفاده ازinv برای محاسبه ماتریس معکوس موثر است. این روش میتواند به طور عددی ناپایدار باشد و برای ماتریسهای بزرگ مناسب نیست.
در معادلات غیرخطی که به صورت f(x)=0 هستند و در آن f یک تابع غیرخطی از متغیرهای مجهول است می توان با استفاده از تابع fsolve این معادلات غیرخطی را حل کرد. همچنین تابعfminsearch برای بهینهسازی و حل معادلات غیرخطی استفاده میشود. تابع fsolve برای حل معادلات غیرخطی روش مستقیمی است، در حالی که fminsearch میتواند به طور غیرمستقیم به حل مسائل مشابه بپردازد.
در این مقاله از پروژستان روش های مختلف حل معادلات چند مجهولی در انواع مختلف خطی و غیرخطی را با ذکر مثال های مختلف، کد و خروجی های هر کد آموزش داده ایم. شما پس از مطالعه این محتوا میتوانید از کدهای موجود برای انجام پروژه های خود بهره ببرید. علاوه بر این در صورتی که بخواهید میتوانید انجام پروژه متلب خود را به تیم پروژستان برون سپاری کنید.
مقایسه روش ها مطابق جدول زیر است:
حل معادلات خطی |
– عملگر «\»: سریع و دقت بالا. – linsolve: بهینه برای ماتریسهای بزرگ. – inv: فقط برای ماتریسهای کوچک و معکوسپذیر توصیه میشود. |
حل معادلات غیرخطی |
– fsolve: مناسب برای سیستمهای غیرخطی با معادلات واضح. – fminsearch: کاربردی برای مسائل بهینهسازی و معادلات غیرخطی پیچیده. |
1- روشهای حل معادلات خطی
مثال1- روش استفاده از عملگر «\»
clc; clear; close all;
% تعریف ماتریس a و بردار b
a = [2, 1; 1, 3];
b = [1; 2];
% حل معادله
x = a \ b;
disp(‘solution:’);
disp(x);
خروجی:
solution:
0.2000
0.6000
مثال2- استفاده از تابع linsolve کاربردی در حل سیستمهای خطی بزرگ.
clc; clear; close all;
% حل معادله با استفاده از linsolve
x = linsolve(a, b);
disp(‘solution:’);
disp(x);
خروجی:
solution:
0.2000
0.6000
مثال3- استفاده از inv برای محاسبه ماتریس معکوس
clc; clear; close all;
% حل معادله با استفاده از معکوس ماتریس
x = inv(a) * b;
disp(‘solution:’);
disp(x);
خروجی:
solution:
0.2000
0.6000
2. حل معادلات غیرخطی چند مجهولی
مثال 4- استفاده از تابع fsolve برای حل معادلات غیرخطی
clc; clear; close all;
% تعریف تابع
fun = @(x) [x(1)^2 + x(2)^2 – 4; x(1) – x(2)];
% مقدار اولیه
x0 = [0; 0];
% حل معادله
x = fsolve(fun, x0);
disp(‘solution:’);
disp(x);
خروجی:
solution:
0
0
مثال 5- استفاده از تابع fminsearch برای بهینهسازی و حل معادلات غیرخطی.
clc; clear; close all;
% تعریف تابع هزینه
fun = @(x) norm([x(1)^2 + x(2)^2 – 4; x(1) – x(2)]);
% مقدار اولیه
x0 = [0; 0];
% بهینهسازی
x = fminsearch(fun, x0);
disp(‘solution:’);
disp(x);
خروجی:
solution: 1.4 1 4 2 1.4 1 4 2
مثال 6- بهینهسازی تابع غیرخطی با استفاده از روشهای عددی.
clc; clear; close all;
% تابع هدف
objfun = @(x) (x(1) – 1)^2 + (x(2) – 2)^2;
% مقدار اولیه
x0 = [0, 0];
% بهینهسازی
[x, fval] = fminunc(objfun, x0);
disp(‘optimal solution using fminunc: ‘);
disp(x);
disp(‘objective function value: ‘);
disp(fval);
خروجی:
optimal solution using fminunc:
1.0000 2.0000
objective function value:
4.4409e-16


