如何用matlab求方程的所有整数解?其解决方案,可以通过下列途径解决:
方法一、利用三循环语句和判断语句,求解其所有整数解
方法二、整数线性规划分支定界法,求解其所有整数解
下面按第一种方法求解,其过程为
m=50;n=50;l=50;
disp('满足条件:2x+3y+4z=100的解')
for i=1:m
for j=1:n
for k=1:l
x=i;y=j;z=k;
xyz=100-(2*x+3*y+4*z);
if xyz==0
disp(['x=',num2str(i),' y=',num2str(j),' z=',num2str(k)])
end
end
end
end
运行结果
这里提供一个利用网格矩阵解二维不定方程整数解的方法:
已知6<x<30,15<y<36,求不定方程
2x+5y=126的整数解。
MATLAB程序如下:
x=5:29;y=14:35;
[x,y]=meshgrid(x,y);
z=2*x+5*y;
k=find(z==126);
x(k),y(k)
输出为:
ans=
8
13
18
23
28
ans=
22
20
18
16
14
即方程有5组解:(8,22),(13,20),(18,18),(23,16),(28,14).