lingo求一个直角三角形内接一个最小的正方形
受给定一个直角三角形,求包含该三角形的最小正方形这道题的启发
model:
sets:
object/1…3/: f;
endsets
data:
a, b = 3, 4; !两个直角边长,修改很方便;
enddata
f(1) = a * @sin(x);
f(2) = b * @cos(x);
f(3) = a * @cos(x) + b * @sin(x);
min = @smax(f(1),f(2),f(3));
@bnd(0,x,1.57);
end
于是自己写了直角三角形内接一个最小的正方形的代码
分两种情况,一是正方形的一条边与斜边重合,一种是两条边分别与直角边重合
不给图,默认这两个直角边a = 3,b = 4,且我选l1在a边上
第一段代码:
model:
sets:
object/1…3/: f;
endsets
data:
a, b = 3, 4;
enddata
f(1) = l1*@cos(x)-y;
f(2) = (a-l1)*@sin(x)-y;
f(3) = (b-@tan(x)l1)@cos(x)-y;
max = y;
@bnd(0,x,1.57);
@bnd(0,l1,3);
end
得到y的值
第二种情况:
model:
sets:
object/1…2/: f;
endsets
data:
a, b = 3, 4;
enddata
l1=1.57-x;
f(1) = y-(a-y)@tan(x);
f(2) = y-(b-y)@tan(l1);
min = y;
@bnd(0,x,1.57);
end
得到y值:
两个不同的是第一种求y的最大值,第二次求y的最小值
第一次要把正方形撑开,撑到最大,
第二次要把正方形放到三角形里