MATLAB解决多元一次方程组所有整数解

2025-03-04 07:11:19
推荐回答(2个)
回答1:

在matlab中输入

maple('isolve({290*x1+470*x2+720*x3+1060*x4+1490*x5=6000,x1+x2+x3+x4+x5=10})')

输出
ans =

{x2 = 1-20*_Z1-21*_Z2-20*_Z3, x4 = _Z1, x5 = 1+2*_Z1+_Z2+3*_Z3, x3 = 4+_Z1+6*_Z2, x1 = 4+16*_Z1+14*_Z2+17*_Z3}

即该方程组有无数个整数解,对任意整数Z1、Z2、Z3
x1=4+16*Z1+14*Z2+17*Z3
x2=1-20*Z1-21*Z2-20*Z3
x3=4+Z1+6*Z2
x4=Z1
x5=1+2*Z1+Z2+3*Z3
都是该方程组的整数解

注:matlab2008b版之后无效,2006a版亲测有效,前提为安装了符号工具箱Symbolic Math Toolbox

回答2:

#include "stdio.h"
#include "conio.h"
main()
{
int a,b,c,d,e;/*你的x我用的abcde表示*/
printf("\n");
for(a=0;a<11;a++) /*以下为五重循环*/
for(b=0;b<11;b++)
for (c=0;c<11;c++)
for (d=0;d<11;d++)
for (e=0;e<11;e++)
{
if (290*a+470*b+730*c+1060*d+1490*e==6000&&a+b+c+d+e==10) /*条件*/
printf("%d,%d,%d\n",a,b,c,d,e);
}
getch();
}