|
查看: 802|回复: 14
|
用Cramer's Rule solve Linear Equation
[复制链接]
|
|
|
还有一个星期就要交功课了。。
可是我的整个Team到现在还没人动手。。
天啊。。
谁来帮我?
谁会用C++做?
By using Cramer's Rule to solve Linear Equation?
[ 本帖最后由 rabbit0221 于 5-10-2008 08:43 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 5-10-2008 06:34 PM
|
显示全部楼层
Sorry...
I gav da wrong info juz now..
Sud b "by using Cramer's Rule, solve linear equation" |
|
|
|
|
|
|
|
|
|
|
发表于 5-10-2008 09:41 PM
|
显示全部楼层
回复 1# rabbit0221 的帖子
cramer rules solve simultaneous equation 是不是?
现自己些,有错才来问。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 5-10-2008 09:50 PM
|
显示全部楼层
回复 3# onlylonly 的帖子
OK,我在试着。。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 5-10-2008 11:48 PM
|
显示全部楼层
//to solve 3 unknowns using cramer's rule
#include<iostream.h>
#include<math.h>
void main ()
{
double a, b, c, d, e, f, g, h, i, j, k, l, deter, deterx, detery, deterz, x, y, z;
cout <<"\t\t\t\tWELCOME!\n";
cout <<"This program is to solve a linear system consisting three unknowns using Cramer's Rule.\n";
cout <<"In this program, the three unknowns are declared as X, Y and Z.\n";
cout <<"The linear system is in the form of:\n";
cout <<"\taX + bY + cZ = d\n";
cout <<"\teX + fY + gZ = h\n";
cout <<"\tiX + jY + kZ = l\n";
cout <<"Please enter the value for 'a'.\n";
cin >> a;
cout <<"Please enter the value for 'b'.\n";
cin >> b;
cout <<"Please enter the value for 'c'.\n";
cin >> c;
cout <<"Please enter the value for 'd'.\n";
cin >> d;
cout <<"Please enter the value for 'e'.\n";
cin >> e;
cout <<"Please enter the value for 'f'.\n";
cin >> f;
cout <<"Please enter the value for 'g'.\n";
cin >> g;
cout <<"Please enter the value for 'h'.\n";
cin >> h;
cout <<"Please enter the value for 'i'.\n";
cin >> i;
cout <<"Please enter the value for 'j'.\n";
cin >> j;
cout <<"Please enter the value for 'k'.\n";
cin >> k;
cout <<"Please enter the value for 'l'.\n";
cin >> l;
cout <<"-------------------------------------------------------------------------\n\n";
if (b>0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<a<<"X +"<<b<<"Y + "<<c<<"Z = "<<d<<"endl;
}
else if (b<0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<a<<"X - "<<(b*(-1))<<"Y + "<<c<"Z = "<<d<<"<endl;
}
if (c>0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<a<<"X +"<<b<<"Y + "<<c<<"Z = "<<d<<"endl;
}
else if (c<0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<a<<"X - "<<b<<"Y + "<<(c*(-1))<"Z = "<<d<<"<endl;
}
if (f>0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<e<<"X +"<<f<<"Y + "<<g<<"Z = "<<h<<"endl;
}
else if (f<0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<e<<"X - "<<(f*(-1))<<"Y + "<<g<<"Z = "<<h<<"<endl;
}
if (g>0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<e<<"X +"<<f<<"Y + "<<g<<"Z = "<<h<<"endl;
}
else if (g<0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<e<<"X - "<<f<<"Y + "<<(g*(-1))<<"Z = "<<h<<"<endl;
}
if (j>0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<i<<"X +"<<j<<"Y + "<<k<<"Z = "<<l<<"endl;
}
else if (j<0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<i<<"X - "<<(j*(-1))<<"Y + "<<k<<"Z = "<<l<<"<endl;
}
if (k>0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<i<<"X +"<<j<<"Y + "<<k<<"Z = "<<l<<"endl;
}
else if (k<0)
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<i<<"X - "<<j<<"Y + "<<(k*(-1))<<"Z = "<<l<<"<endl;
}
deter = a*(e*i-h*f) - d*(b*i-h*c) + g*(b*f-e*c);
deterx = j*(e*i-h*f) - k*(b*i-h*c) + l*(b*f-e*c)
detery = a*(k*i-l*f) - d*(j*i-l*c) + g*(j*f-k*c)
deterz = a*(e*l-h*k) - d*(b*k-h*j) + g*(b*k-e*j)
if (deter==0 && deterx==0 && detery==0 && deterz==0)
{
cout <<"\nSystem is Dependant (Infinite Solutions)."<<endl;
}
else if (deter==0 && (deterx!=0 || detery!=0 || deterz!=0))
{
cout <<"\nSystem is Inconsistent (No solutions)."<<endl;
}
else
{
x=deterx/deter;
y=detery/deter;
z=deterz/deter;
cout <<"\nThe solution is:"<<endl;
cout <<"\t X="<<deterx<<"/"<<deter<<"="<<x<<endl;
cout <<"\t Y="<<detery<<"/"<<deter<<"="<<y<<endl;
cout <<"\t Z="<<deterz<<"/"<<deter<<"="<<z<<ednl;
}
} |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 5-10-2008 11:52 PM
|
显示全部楼层
原帖由 rabbit0221 于 5-10-2008 11:48 PM 发表 
//to solve 3 unknowns using cramer's rule
#include
#include
void main ()
{
double a, b, c, d, e, f, g, h, i, j, k, l, deter, deterx, detery, deterz, x, y, z;
cout
但是有很多很多的errors...
WAT 2 do now? |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 6-10-2008 12:20 AM
|
显示全部楼层
//to solve 3 unknowns using cramer's rule
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
void main ()
{
double a, b, c, d, e, f, g, h, i, j, k, l, deter, deterX, deterY, deterZ, X, Y, Z;
cout <<"\t\t\t\tWELCOME!\n";
cout <<"This program is to solve a linear system consisting three unknowns using Cramer's Rule.\n";
cout <<"In this program, the three unknowns are declared as X, Y and Z.\n";
cout <<"The linear system is in the form of:\n";
cout <<"\taX + bY + cZ = d\n";
cout <<"\teX + fY + gZ = h\n";
cout <<"\tiX + jY + kZ = l\n";
cout <<"\nPlease enter the value for 'a': ";
cin >> a;
cout <<"Please enter the value for 'b': ";
cin >> b;
cout <<"Please enter the value for 'c': ";
cin >> c;
cout <<"Please enter the value for 'd': ";
cin >> d;
cout <<"Please enter the value for 'e': ";
cin >> e;
cout <<"Please enter the value for 'f': ";
cin >> f;
cout <<"Please enter the value for 'g': ";
cin >> g;
cout <<"Please enter the value for 'h': ";
cin >> h;
cout <<"Please enter the value for 'i': ";
cin >> i;
cout <<"Please enter the value for 'j': ";
cin >> j;
cout <<"Please enter the value for 'k': ";
cin >> k;
cout <<"Please enter the value for 'l': ";
cin >> l;
cout <<"-------------------------------------------------------------------------\n\n";
if ((b>0)&&(c>0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<a<<"X + "<<b<<"Y + "<<c<<"Z = "<<d<<""<<endl;
}
else if ((b>0)&&(c<0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<a<<"X + "<<b<<"Y - "<<(c*(-1))<<"Z = "<<d<<""<<endl;
}
else if ((b<0)&&(c>0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<a<<"X - "<<(b*(-1))<<"Y + "<<c<<"Z = "<<d<<""<<endl;
}
else if ((b<0)&&(c<0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<a<<"X - "<<(b*(-1))<<"Y - "<<(c*(-1))<<"Z = "<<d<<""<<endl;
}
if ((f>0)&&(g>0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<e<<"X + "<<f<<"Y + "<<g<<"Z = "<<h<<""<<endl;
}
else if ((f>0)&&(g<0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<e<<"X + "<<f<<"Y - "<<(g*(-1))<<"Z = "<<h<<""<<endl;
}
else if ((f<0)&&(g>0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<e<<"X - "<<(f*(-1))<<"Y + "<<g<<"Z = "<<h<<""<<endl;
}
else if ((f<0)&&(g<0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<e<<"X - "<<(f*(-1))<<"Y - "<<(g*(-1))<<"Z = "<<h<<""<<endl;
}
if ((j>0)&&(k>0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<i<<"X + "<<j<<"Y + "<<k<<"Z = "<<l<<""<<endl;
}
else if ((j>0)&&(k<0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<i<<"X + "<<j<<"Y - "<<(k*(-1))<<"Z = "<<l<<""<<endl;
}
else if ((j<0)&&(k>0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<i<<"X - "<<(j*(-1))<<"Y + "<<k<<"Z = "<<l<<""<<endl;
}
else if ((j<0)&&(k<0))
{
cout <<"\nYou have entered:"<<endl;
cout <<"\t "<<i<<"X - "<<(j*(-1))<<"Y - "<<(k*(-1))<<"Z = "<<l<<""<<endl;
}
deter = a*(e*i-h*f) - d*(b*i-h*c) + g*(b*f-e*c);
deterX = j*(e*i-h*f) - k*(b*i-h*c) + l*(b*f-e*c);
deterY = a*(k*i-l*f) - d*(j*i-l*c) + g*(j*f-k*c);
deterZ = a*(e*l-h*k) - d*(b*k-h*j) + g*(b*k-e*j);
if (deter==0 && deterX==0 && deterY==0 && deterZ==0)
{
cout <<"\nSystem is Dependant (Infinite Solutions)."<<endl;
}
else if (deter==0 && (deterX!=0 || deterY!=0 || deterZ!=0))
{
cout <<"\nSystem is Inconsistent (No solutions)."<<endl;
}
else
{
X=deterX/deter;
Y=deterY/deter;
Z=deterZ/deter;
cout <<"\nThe solution is:"<<endl;
cout <<"\t X="<<deterX<<"/"<<deter<<"="<<X<<endl;
cout <<"\t Y="<<deterY<<"/"<<deter<<"="<<Y<<endl;
cout <<"\t Z="<<deterZ<<"/"<<deter<<"="<<Z<<endl;
}
}
[ 本帖最后由 rabbit0221 于 6-10-2008 12:55 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 6-10-2008 12:21 AM
|
显示全部楼层
回复 8# rabbit0221 的帖子
TIS IS WAT I TRY 2 CORRECT DA ERRORS JUZ NOW...
BUT STILL...
GOT LOTS OF ERRORS...
WHO CAN HELP...
PLZ...
FOR MY PART IS BY USING CRAMER'S RULE 2 SOLVE 3 UNKNOWN.. |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 6-10-2008 12:56 PM
|
显示全部楼层
原帖由 rabbit0221 于 6-10-2008 12:20 AM 发表 
//to solve 3 unknowns using cramer's rule
#include
#include
#include
void main ()
{
double a, b, c, d, e, f, g, h, i, j, k, l, deter, deterX, deterY, deterZ, X, Y, Z;
cout
NOW...
NO ERRORS D...
BUT FINAL ANSWER FOR X, Y N Z IS WRONG...   |
|
|
|
|
|
|
|
|
|
|
发表于 6-10-2008 01:13 PM
|
显示全部楼层
deter = a*(e*i-h*f) - d*(b*i-h*c) + g*(b*f-e*c);
deterX = j*(e*i-h*f) - k*(b*i-h*c) + l*(b*f-e*c);
deterY = a*(k*i-l*f) - d*(j*i-l*c) + g*(j*f-k*c);
deterZ = a*(e*l-h*k) - d*(b*k-h*j) + g*(b*k-e*j);
是这部份吧?你混淆了d,h,l 跟j,k,l ? |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 6-10-2008 01:47 PM
|
显示全部楼层
原帖由 避风港的鱼 于 6-10-2008 01:13 PM 发表 
deter = a*(e*i-h*f) - d*(b*i-h*c) + g*(b*f-e*c);
deterX = j*(e*i-h*f) - k*(b*i-h*c) + l*(b*f-e*c);
deterY = a*(k*i-l*f) - d*(j*i-l*c) + g*(j*f-k*c);
deterZ = a*(e*l-h*k) - d*(b*k-h*j) + g*(b*k-e*j) ...
YAYA...
THANKS A LOTS... |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 6-10-2008 01:49 PM
|
显示全部楼层
deter = (a*((f*k)-(j*g))) - (e*((b*k)-(j*c))) + (i*((b*g)-(f*c)));
deterX = (d*((f*k)-(j*g))) - (h*((b*k)-(j*c))) + (l*((b*g)-(f*c)));
deterY = (a*((h*k)-(l*g))) - (e*((d*k)-(l*c))) + (i*((d*g)-(h*c)));
deterZ = (a*((f*l)-(j*h))) - (e*((b*l)-(j*d))) + (i*((b*h)-(f*d)));
SUB B LIKE TIS, RIGHT? |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 6-10-2008 02:26 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 6-10-2008 02:26 PM
|
显示全部楼层
//to solve 3 unknowns using cramer's rule
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
void main ()
{
double a, b, c, d, e, f, g, h, i, j, k, l, deter, deterX, deterY, deterZ, X, Y, Z;
cout <<"\t\t\t\tWELCOME!\n";
cout <<"This program is to solve a linear system consisting three unknowns using Cramer's Rule.\n";
cout <<"In this program, the three unknowns are declared as X, Y and Z.\n";
cout <<"The linear system is in the form of:\n";
cout <<"\taX + bY + cZ = d\n";
cout <<"\teX + fY + gZ = h\n";
cout <<"\tiX + jY + kZ = l\n";
cout <<"\nPlease enter the value for 'a': ";
cin >> a;
cout <<"Please enter the value for 'b': ";
cin >> b;
cout <<"Please enter the value for 'c': ";
cin >> c;
cout <<"Please enter the value for 'd': ";
cin >> d;
cout <<"Please enter the value for 'e': ";
cin >> e;
cout <<"Please enter the value for 'f': ";
cin >> f;
cout <<"Please enter the value for 'g': ";
cin >> g;
cout <<"Please enter the value for 'h': ";
cin >> h;
cout <<"Please enter the value for 'i': ";
cin >> i;
cout <<"Please enter the value for 'j': ";
cin >> j;
cout <<"Please enter the value for 'k': ";
cin >> k;
cout <<"Please enter the value for 'l': ";
cin >> l;
cout <<"-------------------------------------------------------------------------\n\n";
cout <<"\nYou have entered:"<<endl;
if ((b>0)&&(c>0))
{
cout <<"\t "<<a<<"X + "<<b<<"Y + "<<c<<"Z = "<<d<<""<<endl;
}
else if ((b>0)&&(c<0))
{
cout <<"\t "<<a<<"X + "<<b<<"Y - "<<(c*(-1))<<"Z = "<<d<<""<<endl;
}
else if ((b<0)&&(c>0))
{
cout <<"\t "<<a<<"X - "<<(b*(-1))<<"Y + "<<c<<"Z = "<<d<<""<<endl;
}
else if ((b<0)&&(c<0))
{
cout <<"\t "<<a<<"X - "<<(b*(-1))<<"Y - "<<(c*(-1))<<"Z = "<<d<<""<<endl;
}
else if ((b==0)&&(c>0))
{
cout <<"\t "<<a<<"X + "<<(b*0)<<"Y + "<<c<<"Z ="<<d<<""<<endl;
}
else if ((b==0)&&(c<0))
{
cout <<"\t "<<a<<"X + "<<(b*0)<<"Y - "<<(c*(-1))<<"Z ="<<d<<""<<endl;
}
else if ((b>0)&&(c==0))
{
cout <<"\t "<<a<<"X + "<<b<<"Y + "<<(c*0)<<"Z ="<<d<<""<<endl;
}
else if ((b<0)&&(c==0))
{
cout <<"\t "<<a<<"X - "<<(b*(-1))<<"Y + "<<(c*0)<<"Z ="<<d<<""<<endl;
}
if ((f>0)&&(g>0))
{
cout <<"\t "<<e<<"X + "<<f<<"Y + "<<g<<"Z = "<<h<<""<<endl;
}
else if ((f>0)&&(g<0))
{
cout <<"\t "<<e<<"X + "<<f<<"Y - "<<(g*(-1))<<"Z = "<<h<<""<<endl;
}
else if ((f<0)&&(g>0))
{
cout <<"\t "<<e<<"X - "<<(f*(-1))<<"Y + "<<g<<"Z = "<<h<<""<<endl;
}
else if ((f<0)&&(g<0))
{
cout <<"\t "<<e<<"X - "<<(f*(-1))<<"Y - "<<(g*(-1))<<"Z = "<<h<<""<<endl;
}
else if ((f==0)&&(g>0))
{
cout <<"\t "<<e<<"X + "<<(f*0)<<"Y + "<<g<<"Z ="<<h<<""<<endl;
}
else if ((f==0)&&(g<0))
{
cout <<"\t "<<e<<"X + "<<(f*0)<<"Y - "<<(g*(-1))<<"Z ="<<h<<""<<endl;
}
else if ((f>0)&&(g==0))
{
cout <<"\t "<<e<<"X + "<<f<<"Y + "<<(g*0)<<"Z ="<<h<<""<<endl;
}
else if ((f<0)&&(g==0))
{
cout <<"\t "<<e<<"X - "<<(f*(-1))<<"Y + "<<(g*0)<<"Z ="<<h<<""<<endl;
}
if ((j>0)&&(k>0))
{
cout <<"\t "<<i<<"X + "<<j<<"Y + "<<k<<"Z = "<<l<<""<<endl;
}
else if ((j>0)&&(k<0))
{
cout <<"\t "<<i<<"X + "<<j<<"Y - "<<(k*(-1))<<"Z = "<<l<<""<<endl;
}
else if ((j<0)&&(k>0))
{
cout <<"\t "<<i<<"X - "<<(j*(-1))<<"Y + "<<k<<"Z = "<<l<<""<<endl;
}
else if ((j<0)&&(k<0))
{
cout <<"\t "<<i<<"X - "<<(j*(-1))<<"Y - "<<(k*(-1))<<"Z = "<<l<<""<<endl;
}
else if ((j==0)&&(k>0))
{
cout <<"\t "<<i<<"X + "<<(j*0)<<"Y + "<<k<<"Z ="<<l<<""<<endl;
}
else if ((j==0)&&(k<0))
{
cout <<"\t "<<i<<"X + "<<(j*0)<<"Y - "<<(k*(-1))<<"Z ="<<l<<""<<endl;
}
else if ((j>0)&&(k==0))
{
cout <<"\t "<<i<<"X + "<<j<<"Y + "<<(k*0)<<"Z ="<<l<<""<<endl;
}
else if ((j<0)&&(k==0))
{
cout <<"\t "<<i<<"X - "<<(j*(-1))<<"Y + "<<(k*0)<<"Z ="<<l<<""<<endl;
}
deter = (a*((f*k)-(j*g))) - (e*((b*k)-(j*c))) + (i*((b*g)-(f*c)));
deterX = (d*((f*k)-(j*g))) - (h*((b*k)-(j*c))) + (l*((b*g)-(f*c)));
deterY = (a*((h*k)-(l*g))) - (e*((d*k)-(l*c))) + (i*((d*g)-(h*c)));
deterZ = (a*((f*l)-(j*h))) - (e*((b*l)-(j*d))) + (i*((b*h)-(f*d)));
if (deter==0 && deterX==0 && deterY==0 && deterZ==0)
{
cout <<"\nSystem is Dependant (Infinite Solutions)."<<endl;
}
else if (deter==0 && (deterX!=0 || deterY!=0 || deterZ!=0))
{
cout <<"\nSystem is Inconsistent (No solutions)."<<endl;
}
else
{
X=deterX/deter;
Y=deterY/deter;
Z=deterZ/deter;
cout <<"\nThe solution is:"<<endl;
cout <<"\t X= "<<deterX<<"/"<<deter<<" = "<<X<<endl;
cout <<"\t Y= "<<deterY<<"/"<<deter<<" = "<<Y<<endl;
cout <<"\t Z= "<<deterZ<<"/"<<deter<<" = "<<Z<<endl;
}
}
[ 本帖最后由 rabbit0221 于 6-10-2008 02:28 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 6-10-2008 07:27 PM
|
显示全部楼层
题目是不是指定你做LINEAR EQUATION FOR 3 UNKNOWN?
如果不是的话,你可能要做2个variable以上
想看看有没有比较general的equation, 不要只是单单针对3个variable罢了。 |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|