佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 802|回复: 14

用Cramer's Rule solve Linear Equation

[复制链接]
发表于 5-10-2008 05:46 PM | 显示全部楼层 |阅读模式
还有一个星期就要交功课了。。
可是我的整个Team到现在还没人动手。。
天啊。。
谁来帮我?
谁会用C++做?
By using Cramer's Rule to solve Linear Equation?

[ 本帖最后由 rabbit0221 于 5-10-2008 08:43 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 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?
回复

使用道具 举报

Follow Us
 楼主| 发表于 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..
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 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 | 显示全部楼层
FINALLY...
I GET THE CORRECT PROGRAM LIAO...
YEAH!!
SPEND OF 1 NITE N I MORNING...

THANKS 2 THOSE WHO HELP ME...
回复

使用道具 举报

 楼主| 发表于 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罢了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2025 05:04 AM , Processed in 0.101168 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表