lingo求一个直角三角形内接一个最小的正方形

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的最小值
第一次要把正方形撑开,撑到最大,
第二次要把正方形放到三角形里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值