Matlab解一元多次方程:8=2.37X1+1.97X2+1.77X3+1.52X4+1.34X5+0.68X6

其中X1~X4只能取0和1,其他X5,和X6只能取大于等于0的整数,算出可以取到的所有结果。当然方程不可能恰好的等于8,只要约等于就行,也就是其他的X1~6不能再大了,我想大家应该明白我的意思,坐等,坐等啊!!麻烦附一下matlab程序,

clear;clc;
a=[2.37 1.97 1.77 1.52 1.34 0.68];
b=0:9/min(a);
err=0.05;
for x1=b(1):b(2)
for x2=b(1):b(2)
for x3=b(1):b(2)
for x4=b(1):b(2)
for x5=b(1):b(end)
for x6=b(1):b(end)
if abs(2.37*x1+1.97*x2+1.77*x3+1.52*x4+1.34*x5+0.68*x6-8)<err
t=num2str(2.37*x1+1.97*x2+1.77*x3+1.52*x4+1.34*x5+0.68*x6);
disp('[x1 x2 x3 x4 x5 x6]=');
disp([x1 x2 x3 x4 x5 x6]);
disp(['y=',t]);
disp('--------------------------------------------------');
end;
end;
end;
end
end;
end;
end;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-21
clear;clc;
a=[2.37 1.97 1.77 1.52 1.34 0.68];
x=[0 0 0 0 0 0];
error=0.01; %误差允许最大值
for i=0:15
x(1)=rem(i,2);x(2)=rem(floor(i/2),2);x(3)=rem(floor(i/4),2);x(4)=floor(i/8);
for j=0:6
x(5)=j;
for k=0:12
x(6)=k;
y=a*x';
if(abs(y-8)<error)
disp(y);
disp(x);
end
end
end
end
disp('end!');
运行结果:
8.0100

0 1 0 0 4 1

8.0100

0 0 1 1 2 3

7.9900

0 0 1 1 3 1

end!
第2个回答  2011-06-21
这是题目的要求还是自己的假设?
相似回答