24小时热门版块排行榜    

查看: 6643  |  回复: 10

程红飞

铜虫 (初入文坛)

[求助] 多元一次方程的matlab解法,要求解为正整数

怎样用matlab编程解方程0.11x+0.12y+0.13z=50,其中x、y、z均为正整数。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

chyanog

金虫 (小有名气)

老实说,Matlab不擅长解这种丢番图方程,用solve已经相关命令不行的,
如果用暴力穷举速度又不行(这是适合C干的活),而且不一定能得到所有的解,要看穷举的范围。
用Mathematica的话一个Solve命令就行了,而且不会漏解
多元一次方程的matlab解法,要求解为正整数
5楼2013-12-01 19:42:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feign_te

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
程红飞: 金币+5, ★★★★★最佳答案 2013-12-03 21:36:36
相当于求11x+12y+13z=5000的解
由于是正整数 变量都有上限  果断历遍
b=zeros(25000,3);
k=0;
for x=1:500
  for y=1:450  
     z=(5000-11*x-12*y)/13;
     if z==fix(z) && z>0
     k=k+1;
     b(k,=[x,y,z];
     end
  end
end
k;
b=b(1:k,;
居然有七千多个解 挺意外的
3楼2013-11-28 00:14:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

cjc5367

铁虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
这个有无穷解吧,最笨的方法:遍历
2楼2013-11-27 11:14:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

程红飞

铜虫 (初入文坛)

引用回帖:
3楼: Originally posted by feign_te at 2013-11-28 00:14:51
相当于求11x+12y+13z=5000的解
由于是正整数 变量都有上限  果断历遍
b=zeros(25000,3);
k=0;
for x=1:500
  for y=1:450  
     z=(5000-11*x-12*y)/13;
     if z==fix(z) && z>0
     k=k+1; ...

为什么把你的代码复制到matlab的command window后,matlab不运行呢???
4楼2013-12-01 05:04:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feign_te

金虫 (小有名气)

引用回帖:
4楼: Originally posted by 程红飞 at 2013-12-01 05:04:31
为什么把你的代码复制到matlab的command window后,matlab不运行呢???...

因为matlab识别不了那个笑脸 笑脸是半冒号和半角括号  :和谐)
而且要调试的话 最好建立一个.m文件
6楼2013-12-01 21:02:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

程红飞

铜虫 (初入文坛)

引用回帖:
6楼: Originally posted by feign_te at 2013-12-01 21:02:09
因为matlab识别不了那个笑脸 笑脸是半冒号和半角括号  :和谐)
而且要调试的话 最好建立一个.m文件...

我懂了,是最后一行的那个分号没有去掉
7楼2013-12-02 01:02:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

程红飞

铜虫 (初入文坛)

引用回帖:
7楼: Originally posted by 程红飞 at 2013-12-02 01:02:20
我懂了,是最后一行的那个分号没有去掉...

挺好的,就是 b(k,:)=[x,y,z]和b=b(1:k,:)没有看懂
8楼2013-12-02 01:16:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

程红飞

铜虫 (初入文坛)

引用回帖:
6楼: Originally posted by feign_te at 2013-12-01 21:02:09
因为matlab识别不了那个笑脸 笑脸是半冒号和半角括号  :和谐)
而且要调试的话 最好建立一个.m文件...

挺好的,就是 b(k,:)=[x,y,z]和b=b(1:k,:)没有看懂
9楼2013-12-02 01:18:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feign_te

金虫 (小有名气)

引用回帖:
9楼: Originally posted by 程红飞 at 2013-12-02 01:18:24
挺好的,就是 b(k,:)=和b=b(1:k,:)没有看懂...

b(k,:)中:是 1:3的缩写
b=zeros(25000,3) 预定义b,有25000行,实际解没那么多
b(k,:)=[x,y,z] 将该组解储存在b的第k行
b=b(1:k,:)  将k行以后(全是0)去掉
10楼2013-12-02 07:48:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 程红飞 的主题更新
信息提示
请填处理意见