matlab求解一个多元非线性方程自变量范围的问题

已知y=16.4478+0.3211*z1-0.56945*z2-0.27836*z3-0.25084*z4+0.0093267*z2*z3+0.0055743*z3*z... 已知y=16.4478+0.3211*z1-0.56945*z2-0.27836*z3-0.25084*z4+0.0093267*z2*z3+0.0055743*z3*z4;
2<=z1<=10;
8<=z2<=24;
0<=z3<=90;

0<=z4<=36;

若要求0<=y<=0.06,则根据上面的y=f(z1,z2,z3,z4)求出z1,z2,z3,z4缩小的范围,请问该用matlab什么函数,具体编程方法?如果能给出完整解答和matlab代码,小弟不胜感激!
展开
 我来答
qweqwe_251
2013-03-07 · 超过12用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:27.9万
展开全部
可以不使用matlab的函数
自己写的代码如下:
--------------------------------------------------------------
% 定义z1, z2, z3, z4的步长
% 分别是step1, step2, step3, step4
step1 = 1;
step2 = 1;
step3 = 1;
step4 = 1;
--------------------------------------------------------------

for z1 = 2:step1:10
for z2 = 8:step2:24
for z3 = 0:step3:90
for z4 = 0:step4:36
y = myFun(z1, z2, z3, z4);
if y >= 0 && y <= 0.06 % 符合条件
% 显示相应的z1, z2, z3, z4
[z1 z2 z3 z4]
end
end
end
end
end
--------------------------------------------------------------

function y = myFun(z1, z2, z3, z4)
y = 16.4478+0.3211*z1-0.56945*z2-0.27836*z3- 0.25084*z4+0.0093267*z2*z3+0.0055743*z3*z4;
end
--------------------------------------------------------------

使用的是穷举法
更多追问追答
追问
这个我想到过,实际上z1、z2、z3、z4的取值范围是有关联的,如果把这些取值都找出来放在一起而不考虑z1、z2、z3、z4之间的关系的话,取值范围并没有变。但实际上当某两个或三个自变量给定时,另一个变量范围并没有那么大的
追答
如果你不追求运行效率的话,使用这种方法可以帮你快速地解决问题,
而且这个问题的运算量并不大
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式