求解二元一次方程组
想关内容
求解二元一次方程组
输入两个二元一次方程中的相关系数,分别求出它们的解
y的系数均为1的形式
y=ax+c------1
y=bx+d------2
转换一:
ay=abx+cb----1
by=abx+da----2
转换(1减去2)二:
(b-a)y=cb-da
即可得:
y=(cb-da)/(b-a)
同理:
x=-(c-d)/(a-b);
以上为常规求法
同时还要注意小条件
a和b不能相等;
c和d同时为0时,x和y有一个为0或两个都为0
两个方程不能相同
当a=0时,y=c,x=(c-d)/b
当b=0时,y=d,x=(d-c)/a
源码
import java.util.Scanner;
class Demo{
public static void main(String[] args){
System.out.println("二元方程组的形式为:\n\ty=ax+c----1\n\ty=bx+d----2\n输入相关数据:");//提示符
Scanner scanner=new Scanner(System.in);
System.out.print("\ta=");//目前还没有能力把几个输入合在一起
float a0=scanner.nextFloat();
System.out.print("\tc=");
float c0=scanner.nextFloat();
System.out.print("\tb=");
float b0=scanner.nextFloat();
System.out.print("\td=");
float d0=scanner.nextFloat();
System.out.println("输入的方程组为:\n\ty=("+a0+")x+("+c0+")----1"+"\n\ty=("+b0+")x+("+d0+")----2");//要求的方程为
float x0,y0;//创建小数点类型的x和y
if(a0==0&&b0!=0){//当a等于0,b不等于0时
y0=c0;
x0=(c0-d0)/b0;
System.out.println("求解得:\n\ty="+y0+"\n\tx="+x0);
}
else if(a0!=0&&b0==0){
y0=d0;
x0=(d0-c0)/a0;
System.out.println("求解得:\n\ty="+y0+"\n\tx="+x0);
}
else if(c0==0&&d0==0||a0==0&&b0==0||a0==b0&&c0==d0||a0==b0){//c、d不同时为0,a和b也不能同时为0
System.out.println("a和b不能同时为0,\nc和d同时为0时x和y有一个为0或全部为0,\n两个等式不可以一样,\n程序退出");
System.exit(0);
}
else{//通常a,b,c,d都不为0
y0=(c0*b0-d0*a0)/(b0-a0);
x0=-(c0-d0)/(a0-b0);
System.out.println("求解得:\n\ty="+y0+"\n\tx="+x0);
}
}
}