java写二元一次方程组求解

原创 2017年02月22日 11:20:52

1.运用克莱姆法则(请自行百度)


2.行列式求解

3.java代码求解
package com.dql.lms.system.liu;


import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;


public class Calculate {

public static String Calculate(Map<String, BigDecimal> map){
BigDecimal a1 = map.get("a1");
BigDecimal a2 = map.get("a2");
BigDecimal a3 = map.get("a3");

BigDecimal b1 = map.get("b1");
BigDecimal b2 = map.get("b2");
BigDecimal b3 = map.get("b3");

BigDecimal c1 = map.get("c1");
BigDecimal c2 = map.get("c2");
BigDecimal c3 = map.get("c3");

BigDecimal d1 = map.get("d1");
BigDecimal d2 = map.get("d2");
BigDecimal d3 = map.get("d3");

BigDecimal D = a1.multiply(b2).multiply(c3).add(a3.multiply(b1).multiply(c2)).add(a2.multiply(b3).multiply(c1)).subtract(a3.multiply(b2).multiply(c1).add(a1.multiply(b3).multiply(c2)).add(a2.multiply(b1).multiply(c3)));

BigDecimal D1 = d1.multiply(b2).multiply(c3).add(d3.multiply(b1).multiply(c2)).add(d2.multiply(b3).multiply(c1)).subtract(d3.multiply(b2).multiply(c1).add(d1.multiply(b3).multiply(c2)).add(d2.multiply(b1).multiply(c3)));

BigDecimal D2 = a1.multiply(d2).multiply(c3).add(a3.multiply(d1).multiply(c2)).add(a2.multiply(d3).multiply(c1)).subtract(a3.multiply(d2).multiply(c1).add(a1.multiply(d3).multiply(c2)).add(a2.multiply(d1).multiply(c3)));

BigDecimal D3 = a1.multiply(b2).multiply(d3).add(a3.multiply(b1).multiply(d2)).add(a2.multiply(b3).multiply(d1)).subtract(a3.multiply(b2).multiply(d1).add(a1.multiply(b3).multiply(d2)).add(a2.multiply(b1).multiply(d3)));

if(D.compareTo(BigDecimal.ZERO)==0){

return "无解";
}
BigDecimal x = D1.divide(D,5,BigDecimal.ROUND_DOWN);
BigDecimal y = D2.divide(D,5,BigDecimal.ROUND_DOWN);
BigDecimal z = D3.divide(D,5,BigDecimal.ROUND_DOWN);
BigDecimal ss = new BigDecimal("0.36").multiply(x).add(new BigDecimal(0.6).multiply(y)).add(z);

System.out.println("x = "+x);
System.out.println("y = "+y);
System.out.println("z = "+z);
return "x = "+x+";y = "+y+";z = "+z;
}

public static void main(String[] args) {
Map<String, BigDecimal> map = new HashMap<String, BigDecimal>();
map.put("a1", new BigDecimal( "0.2025"));
map.put("a2", new BigDecimal("0.0225" ));
map.put("a3", new BigDecimal( "0.36"));

map.put("b1", new BigDecimal("0.45" ));
map.put("b2", new BigDecimal("0.15" ));
map.put("b3", new BigDecimal("0.6" ));

map.put("c1", new BigDecimal( "1"));
map.put("c2", new BigDecimal("1"));
map.put("c3", new BigDecimal("1" ));

map.put("d1", new BigDecimal("2.2775" ));
map.put("d2", new BigDecimal( "0.26"));
map.put("d3", new BigDecimal("1.04" ));

System.out.println(Calculate.Calculate(map));;

}


}

【JAVA】JAVA 二元一次方程求解

  • 2009年07月06日 13:02
  • 3KB
  • 下载

java求解二元一次方程

题目:  用计算机实现 x+y = 100;  x * y = 1056;求x,y   public class Test9{ public static void main(Strin...
  • u011414958
  • u011414958
  • 2013年07月25日 01:17
  • 1819

java写二元一次方程组求解

1.运用克莱姆法则 先举一个实例,首先先运用行列式的性质进行适当的化简。       进而得出系数行列式的值不等于零,这就说...
  • WEILIN19921214
  • WEILIN19921214
  • 2017年02月22日 11:20
  • 642

求解二元一次方程(难度:2颗星)

问题描述:用户输入a,b,c三个整数,求解二元一次方程ax+by=c,如果(x,y)不存在整数解,则输出“No Solution”,否则输出一个整数解(x,y)使得x是最小正整数。解题思路:参考我的另...
  • yi_ming_he
  • yi_ming_he
  • 2017年05月31日 18:29
  • 12688

C#求解N元一次方程组

Matrix Class using System;using System.Collections.Generic;using System.Text;namespace LinearAlgebra...
  • LeoMaya
  • LeoMaya
  • 2007年05月14日 17:11
  • 3820

数据库自动增长,python解二元一次方程

数据库: 1、建表的时候 使一列为 自动增加列 CREATE TABLE users (   id int(5) NOT NULL auto_increment,   name varc...
  • jinruoyanxu
  • jinruoyanxu
  • 2017年03月24日 12:26
  • 787

Java之二元运算

二元运算+ - * / %public class Demo4{ public static void main(String[] args){ //加法运算 ...
  • chen_xingyao
  • chen_xingyao
  • 2017年12月06日 22:37
  • 47

求二元一次方程的根(浮点数输出)

描述 利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2+ bx + c =0的根,...
  • zyd8888102
  • zyd8888102
  • 2015年11月20日 21:35
  • 855

c++:求解二元二次方程组(解析解)

这个问题从产生到解决,困扰了LZ快一周(当然因为中间也有其他事情要做),本来从LZ的角度是想找第三方库使用,不要说matlab就可以啊o(╥﹏╥)o,确实matlab一个solve函数就解决问题了,但...
  • Felaim
  • Felaim
  • 2017年12月06日 14:46
  • 293

用C++求解二元一次方程组

这两天在CSDN上看到了一个帖子,现在找不到了,是一个用C++求解一元二次方程的帖子!就是利用DO...WHILE循环来求解r*r+r=1000的解!自己想这样估计是没有一个确切的解吧!(自己水平太低...
  • colinfee
  • colinfee
  • 2004年09月07日 18:39
  • 1474
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java写二元一次方程组求解
举报原因:
原因补充:

(最多只允许输入30个字)