一、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即可获得所求的不等式组解。