请使用MATLAB编程求解出x,y,z的值

清朝嘉庆皇帝爱新觉罗.顒琰在位25年,他曾经出过一道数学趣题:有人花100两银子买了100头牛,大牛每头值10两,小牛每头值5两,牛犊每头值半两.试问,此人买了大牛,小牛... 清朝嘉庆皇帝爱新觉罗.顒琰在位25年,他曾经出过一道数学趣题:有人花100两银子买了100头牛,大牛每头值10两,小牛每头值5两,牛犊每头值半两.试问,此人买了大牛,小牛,牛犊各多少头?设大牛,小牛,牛犊分别买了x,y,z头,请使用MATLAB编程求解出x,y,z的值 展开
 我来答
tianxiawulang
推荐于2016-05-02 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2668万
展开全部

参考代码:

[x,y,z]=meshgrid(0:10,0:20,0:200);
I=find(sum([x(:) y(:) z(:)],2)==100 & sum([x(:)*10 y(:)*5 z(:)*0.5],2)==100);
[x(I) y(I) z(I)]

得到结果:

ans =
     1     9    90

即大牛、小牛、牛犊分别1、9、90头。

 

上面是用遍历的方法,算法有可优化之处(比如去除不可能的遍历条件,或采用线性丢番图方程的解法),因计算量尚可接受,就马马虎虎用吧。

追问
>> flag=0;
for x=0:10
for y=0:20
z=100-x-y;
if 10*x+5*y+0.5*z==100
flag=1;
end
if flag==1
break;
end
end
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式