关于 多元一次方程 算法的 研究过程

假定在一个陌生的国度,有5种不同的硬币单位15,23,29,41和67(分)。寻找所有组成18元8分(1808分)的可能组合。假定对于所有面值的硬币你都有足够的硬币。

从数学角度讲 这就是多元一次方程

1808 = 15a + 23b + 29c + 41d + 67e 求解a,b,c,d,e的值

1.首先算二元一次方程

6 = 1*a + 2*b

		int temp_sum = 6;
		boolean isSuccessful = false;
		for( int a = 0 ; a <= temp_sum / 1 ; a++ ){
			temp_sum -= a * 1;
			for( int b = 0 ; b <= temp_sum / 2 ; b++ ){
				temp_sum -= b * 2;
				if( temp_sum == 0 ){
					System.out.println( 1 + "*" + a + " " +
							2 + "*" + b + " " );
					temp_sum = 6;
					isSuccessful = true;
					break;
				}else{
					temp_sum += b * 2;
				}
			}
			if( !isSuccessful ){
				temp_sum += a * 1; 				
			}else{
				isSuccessful = false;
			}
		}
这是最初思维的过程 比较容易理解 但是太
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java 8 中可以使用 Apache Commons Math 库来解决多元一次方程组和线性规划问题,并且可以保证结果全为大于0。 以下是使用 Apache Commons Math 库进行线性规划计算最优解的基本步骤: 1. 定义线性规划问题的目标函数和约束条件。 2. 将问题转化为标准形式,即将目标函数和约束条件都转化为小于等于形式。 3. 使用 Simplex 算法求解线性规划问题的最优解。 4. 根据最优解计算出所有未知量的值。 具体实现过程如下: 1. 定义线性规划问题的目标函数和约束条件,例如: ```java LinearObjectiveFunction f = new LinearObjectiveFunction(new double[] { 3, 5 }, 0); Collection<LinearConstraint> constraints = new ArrayList<>(); constraints.add(new LinearConstraint(new double[] { 2, 8 }, Relationship.LEQ, 20)); constraints.add(new LinearConstraint(new double[] { 5, 2 }, Relationship.LEQ, 15)); constraints.add(new LinearConstraint(new double[] { 1, 0 }, Relationship.GEQ, 0)); constraints.add(new LinearConstraint(new double[] { 0, 1 }, Relationship.GEQ, 0)); ``` 其中,LinearObjectiveFunction 表示目标函数,new double[] { 3, 5 } 表示目标函数的系数,0 表示常数项。LinearConstraint 表示约束条件,new double[] { 2, 8 } 表示约束条件的系数,Relationship.LEQ 表示小于等于关系,20 表示常数项。 2. 将问题转化为标准形式,例如: ```java LinearProgrammingUtils.normalizeConstraints(constraints); LinearProgrammingUtils.normalizeFunction(f, GoalType.MAXIMIZE); ``` 3. 使用 Simplex 算法求解线性规划问题的最优解,例如: ```java SimplexSolver solver = new SimplexSolver(); PointValuePair solution = solver.optimize(f, constraints, GoalType.MAXIMIZE, new NonNegativeConstraint(true)); ``` 其中,SimplexSolver 表示使用 Simplex 算法求解最优解,f 表示目标函数,constraints 表示约束条件,GoalType.MAXIMIZE 表示最大化目标函数,new NonNegativeConstraint(true) 表示所有未知量必须大于等于0。 4. 根据最优解计算出所有未知量的值,例如: ```java double[] values = solution.getPoint(); ``` 最后,检查所有未知量的值是否都大于0,如果是则表示得到的解全为大于0的正数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值