一、Matlab 解不等式組
在Matlab中,可以使用函數fmincon(非線性約束最小二乘)來解決不等式約束最小值問題,以一個簡單的2元不等式組為例:
function [f] = func(x)
f(1) = x(1)+2*x(2)-1;
f(2) = -x(1)+x(2)-2;
end
其中,x是一個2行1列的向量,f(1)和f(2)分別代表兩個不等式。下列代碼即可解決上述不等式組:
x0 = [0.5;1];
options = optimset('Display','iter','Algorithm','sqp');
[x,fval,exitflag] = fmincon(@func,x0,[],[],[],[],[],[],@con, options);
disp(x');
disp(fval');
其中options = optimset(‘Display’,’iter’,’Algorithm’,’sqp’);表示選擇sqp算法並顯示迭代過程;@con表示寫出不等式約束的函數。
二、Matlab 不等式求解
Matlab中提供了兩種求解不等式的函數。
1. fzero函數
對於一個單變量不等式f(x)(例如sin(x) + x – 1 > 0),可以使用fzero函數,該函數的調用格式如下:
x = fzero(fun,x0)
其中fun是目標函數,x0是初始猜測值,並返回不等式左端為0的點x。
2. fsolve函數
對於多個變量的不等式f(x)(例如非線性方程組sin(x1x2)+x1-1與cos(x1+x2)+x2-1的交點),可以使用fsolve函數,該函數的調用格式如下:
x = fsolve(fun,x0)
其中fun是目標函數,x0是初始猜測值,並返回不等式左端為0的點x。
三、Matlab 解不等式方程組
Matlab中提供了一個比較強大的工具箱Symbolic Math Toolbox,可以用來解決不等式方程組問題。
以二元一次不等式方程組為例:
solve('x^2 + y >= 25','x - y >= 5')
這裡輸入的是兩個不等式(x^2 + y >= 25與x – y >= 5),返回的結果是一個結構體,包含兩個解(x和y)。
四、Matlab 解不等式方程
Matlab中解不等式方程還可以使用簡單的符號函數。假設需要解決如下不等式方程:x^2 + 2*x – 3 ≤ 0,代碼如下:
syms x;
f = x^2+2*x-3;
solve(f<=0)
運行結果為:
x <=-3 | x >=1
五、Matlab 畫函數圖像
Matlab畫函數圖像可以使用plot函數。例如,要繪製函數y = sin(x)在區間[0,2π]上的圖像,可以使用下列代碼:
x = linspace(0,2*pi,1001);
y = sin(x);
plot(x,y)
這裡使用了linspace函數,讓x取區間[0,2π]上的1001個數,然後計算出y = sin(x)的值。最後使用plot函數將結果顯示出來。
六、Matlab 求不等式
Matlab求不等式可以使用solve函數。例如,求解如下不等式:
syms x;
f = 2*x-1 > 0;
solve(f)
運行結果為:
x > 1/2
七、Matlab 求不等式組
Matlab求不等式組可以使用polytope包中的頂點算法。
例如,要求解如下不等式組:
X = [0;1;2;3;4];
Y = [2;3;5;7;8];
A = [X' ones(size(X'))];
b = Y';
v = vertex(feval('polytope',A,b))
這裡X和Y是已知的坐標點,A和b組成的矩陣描述了線性不等式約束。運行結束後,v即可獲得所求的不等式組解。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/189342.html