在 Matlab 中找到许多半空间的交集

问题描述

我以这种形式获得了许多半空间不等式:ax+by+cz>=dax+by+cz<=d。我想找到这些半空间的交集。

例如,假设我有 5 个半空格:2x+3y-4z<=1-x+2y+z<=52x+5y-2z>=-4-x-y-z<=-1z>=0。可以看到左图的图(是平面的形式),我要的是右图。

enter image description here

这是我当前的 Matlab 代码。矩阵P的每一行,代表a,b,c,d,和符号函数。符号函数0 如果 ax+by+cz1 如果 ax+by+cz>=d。

clear;close all;clc;
P=[2 3 -4 1 0; -1 2 1 5 0; 2 5 -2 -4 1; -1 -1 -1 -1 0; 0 0 1 0 1];
n=size(P,1);
[x y] = meshgrid(-10:0.1:10);
for i=1:n
    z=(1/P(i,3)).*(P(i,4)-P(i,1)*x-P(i,2)*y);
    surf(x,y,z,'Linestyle','none');  
    hold on
end

输出如下:

enter image description here

我的主要问题是我只能绘制平面,而不能绘制半空间。如何将等式变为不等式并绘制许多半空间的交集?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)