请使用MATLAB编程求解出x,y,z的值
清朝嘉庆皇帝爱新觉罗.顒琰在位25年,他曾经出过一道数学趣题:有人花100两银子买了100头牛,大牛每头值10两,小牛每头值5两,牛犊每头值半两.试问,此人买了大牛,小牛...
清朝嘉庆皇帝爱新觉罗.顒琰在位25年,他曾经出过一道数学趣题:有人花100两银子买了100头牛,大牛每头值10两,小牛每头值5两,牛犊每头值半两.试问,此人买了大牛,小牛,牛犊各多少头?设大牛,小牛,牛犊分别买了x,y,z头,请使用MATLAB编程求解出x,y,z的值
展开
1个回答
展开全部
参考代码:
[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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询