您当前的位置:matlab资源网文章中心资料 → 文章内容

张丘建算经 百鸡问题及其解(程序)

作者:sunooy  来源:转载http://blog.edu.cn/user2/sunooy/archives/2006/1288603.shtml  发布时间:2008-4-13 14:50:09

问题:
鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁母雏各几何?
列出方程式 :
x + y + z = 100
6*x + 3*y + (1/3)*z= 100

程序1:
只有兩個式子,所以
沒有辦法使用標準的方法去求解。
使用 程式設計的方法,是 使用暴力法
xyz=[];
for x=0 :100 
   for y=0 :100
      z= 100 - x - y;
      sum= 6*x + 310*y + (1.0/3.0)*z;
      if sum-100==0
          xyz=[xyz x y z];
     else
       end 
   end
end
xyz %如果输出的是xyz=[],则表明方程无整数解!

程序2
原方程变形为:
z = 100-x-y
y=(100-7*x)/4

编程序如下
x=0;
xyz=[];
while x<=100
   if mod(100-7*x,4)==0 & 100-7*x>0
      y=(100-7*x)/4;
      z=100-x-y;
      xyz=[xyz x y z];
   end
    x=x+1;      
end
xyz
-----------------------------------
因为 100-7*x>0 ,即x<14.
所以可将 while x<=100 改为while x<14. 这样会提高程序的效率.

对程序2的改进:程序2'
x=0;
xyz=[];
while x<14 %由z = 100-x-y
   if mod(100-7*x,4)==0 %由y=(100-7*x)/4
      y=(100-7*x)/4;
      z=100-x-y;
      xyz=[xyz x y z];
   end
    x=x+1;      
end
xyz

文章评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 -