wwwjjjwww 发表于 2010-3-25 12:53:28

如何用VB求解三元一次方程

我要接一个三元一次方程,如何用vb实现。刚才没说清楚,当然是三个方程了。我想要个思路或者有封装好的函数也行。

choiy 发表于 2010-3-25 12:56:01

这个 应该是无限解的吧。

fsclub 发表于 2010-3-25 12:57:15

方程是这样的:5x   +   4y   +   3z   =   I,其中   I   为任意给定整数,要求出任何一组   x,   y,   z   的解即可,只要一组,要能判断有没有解。注意   I   的值在   10000   左右。速度越快越好。   
   
拜托了!!!
问题点数:123、回复次数:5
Top


1 楼enlightenment(破冰超人)回复于 2001-05-20 00:01:00 得分 3
1、x、y、z是否必须为整数?   
   
2、x、y、z是否必须为正数?   
   

Top

2 楼Arbor(Arbor)回复于 2001-05-20 00:03:00 得分 0 1、是!!!   
   
2、是!!!
Top

3 楼kimryo(God is on my side)回复于 2001-05-20 00:04:00 得分 20用行列式的方法试试?求通解(General   Solution).n取1便行!
Top

4 楼enlightenment(破冰超人)回复于 2001-05-20 12:59:00 得分 100procedure   CalcuValue(MyI:integer);   
var   
      i,j:integer;   
      Vx,Vy,Vz:integer;   
begin   
      Vx:=MyI   div   5;   
      While   Vx>0   do   
      begin   
          Vy:=0;   Vz:=0;   
          while   (Vx*5+Vy*4)<MyI   do   
          begin   
            Inc(Vy);   
            if   (Vx*5+Vy*4)>=MyI   then   
            begin   
                  Vy:=0;   {Dec(Vx);}   break;   
            end;   
            while(Vx*5+Vy*4+Vz*3)<MyI   do   
            begin   
                  Inc(Vz);   
                  //若成立   
                  if   (Vx*5+Vy*4+Vz*3)=MyI   then   
                  begin   
                      ShowMessage(IntToStr(Vx)+'   '+IntToStr(Vy)+'   '+IntToStr(Vz));   
                      Exit;   
                  end;   
                  //若大于表达式右边值   
                  if   (Vx*5+Vy*4+Vz*3)>MyI   then   
                  begin   
                      Vz:=0;   Break;   
                  end;   
            end;   //end   while   (Vx*5+Vy*4+Vz*3)<MyI   
          end;//end   while   (Vx*5+Vy*4)<MyI   do   
          Dec(Vx);   
      end;   
      ShowMessage('无解');   
end;

fsclub 发表于 2010-3-25 12:59:54

好像用矩阵更好。

wwwjjjwww 发表于 2010-3-25 13:12:40

不知有没有这种库可以使用的。

liaowei 发表于 2010-3-25 14:24:27

用行列式去求解,那东西可以专门求多元一次方程的解的
页: [1]
查看完整版本: 如何用VB求解三元一次方程