作业帮 > 综合 > 作业

求MATLAB解决多元一次方程组所有整数解的代码,

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/08 10:00:44
求MATLAB解决多元一次方程组所有整数解的代码,
我有这样的两个式子:
a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x==5;
14*a+14.5*b+15*c+15.5*d+16*e+16.5*f+17*g+17.5*h+18*i+18.5*j+19*k+19.5*l+20*m+20.5*n+21*o+21.5*p+22*q+22.5*r+23*s+23.5*t+24*u+24.5*v+25*w+25.5*x==89
想求出满足这个式子的所有实数解,我用循环,实在是太大了,出不了结果,有没有其他的解决办法,
求MATLAB解决多元一次方程组所有整数解的代码,
你题目是整数,后面补充的却是实数,叫人怎么回答?
再问: 就是整数解,因为我的限制条件是大于等于0 我用循环,假设的都是 从0到5取值,但 循环太大,出不了结果,有没有其他方法,可以得出所有整数解的,相当于形成一个矩阵的样子样。谢谢!
再答: 你的循环太大是因为你对每一个变量都循环,实际上应该对5个变量循环就可以了。因为加起来是5。 W=14:0.5:25.5; Y=[]; for i1=1:24 for i2=1:24 for i3=1:24 for i4=1:24 for i5=1:24 if(sum(W([i1,i2,i3,i4,i5]))==89) y=zeros(1,20); y(i1)=y(i1)+1; y(i2)=y(i2)+1; y(i3)=y(i3)+1; y(i4)=y(i4)+1; y(i5)=y(i5)+1; Y=[Y;y] end end end end end end 因为笔记本上没有matlab,所以没法测试,有问题的话就告诉我,我再修改吧
再问: 很谢谢你! 我调试了,出现了这样的错误: ??? Attempted to access y(24); index out of bounds because numel(y)=20. Error in ==> bingxingfanganshu2 at 14 y(i5)=y(i5)+1; 是什么意思? 还有这个 语句: y=zeros(1,20); 是什么意思? 最后结果可以得到一个 很多行,24列的类似矩阵的结果吗? 想得到的是所有整数解,就相当于枚举全部一样。谢谢
再答: y=zeros(1,20); 改为 y=zeros(1,24); 不小心写错了。 嗯,应该是可以得到所有非负整数解的
再问: 非常谢谢! 在运行了,还没出最后结果,数据量实在是太大了,不知道得到什么时候啊~~ 我修改了下,为什么我改成0到24就不行呢?必须是1到24? 但我看它跳跃现实的结果,最后能显示出 很多行,24列的一个矩阵吗?我想得出这个矩阵,方便下面的计算。
再答: 最后会有的。别急。貌似百度上不能追问好多次。你可以加329623869。 现在是24^5 = 7 962 624这么多种可能,虽然还是很多,但比之前5^24 = 5.96046448 × 10^16要少了10个数量级了。代码还可以优化一下,但太不是那么简单。所以你先算算看吧。
再问: 太谢谢你了!!这数据还在运行,真的有点崩溃了。。。 我还想问下:我有这个:a+b+c+d+e+f+g+h+i+j+k+l+m+n==8 7*a+7.5*b+8*c+8.5*d+9*e+9.5*f+10*g+10.5*h+11*i+11.5*j+12*k+12.5*l+13*m+13.5*n==89 修改你的程序:T=7:0.5:13.5; F=[]; 。。 for i6=1:24 for i7=1:24 for i8=1:24 if(sum(T([i1,i2,i3,i4,i5,i6,i7,i8]))==89) y=zeros(1,24); 。。 运行出现超出维数,为什么
再答: W=14:0.5:25.5; Y=[]; for i1=1:24 for i2=1:24 for i3=1:24 for i4=1:24 for i5=1:24 if(sum(W([i1,i2,i3,i4,i5]))==89) y=[i1 i2 i3 i4 i5]; Y=[Y;y]; end end end end end end [p q]=size(Y); Z=zeros(p,24); for i=1:p Z(p,Y(p,:))=Z(p,Y(p,:))+ones(1,5); end
再问: 这样的程序,最后会形成一个死循环的~怎样修改下?