java编程实现行列式计算应用_Java实现行列式计算
前天我看线代书,看到行列式,发现是个递归的式子,恰巧又正在学java,产生写程序实现的想法。写了两个小时,觉得实现了,写了个行列式放进去测试,我放的是
这个行列式,经过程序计算后发现结果是0。我以为我错了,于是我就去找错,发现返回结果的变量好像应该用静态变量,否则可能面临每次调用都初始化为0的情况,我以为这是结果是0的原因 。于是,我把结果变量改为静态变量,得到的结果不是0了,甚是高兴。于是用计算器验证我放进去的1-9的那个行列式的结果,发现竟然是0。 此时,我没有意识到我原本写的是对的,以为我这次是函数的结构或者其他啥的问题。几经折腾,发现改完之后只能计算二阶行列式能得到正确结果,三阶就不正确。再几经思考,发现在递归调用过程中,把结果储存到静态变量里时会进行重复的加,递归内加了一次,递归完成后又加了一次。遂改回原来的,得正确结果 。全程历时四小时有余,两小时写完代码,再两小时把代码改错且难受的思考再把代码改回原样。
从这个故事我学会一件事,0不一定是错误结果
下面是我写的代码。
public class recursive {
public static void main(String[] args) {
// 定义一个数组
int a[][] = {{1,2},{2,1}};
aij b = new aij();
System.out.println(b.det(a));
}
}
class aij {
// A函数可用于求余子阵
int[][] A(int[][] a, int row, int column) {
int[][] ans = new int[a.length - 1][a.length - 1];// ans用于储存返回的最终结果
int[] temp = new int[(a.length - 1) * (a.length - 1)];// 临时一维数组temp用于按顺序储存剔除相应行和列元素后的数组
int k = 0;
// 剔除行和列并按顺序储存到temp内
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if (i == row - 1) {
continue;
} else if (j == column - 1) {
continue;
}
temp[k++] = a[i][j];
}
}
// 按顺序从temp中读取数据并储存到ans内
k = 0;
for (int i = 0; i < ans.length; i++) {
for (int j = 0; j < ans[i].length; j++) {
ans[i][j] = temp[k++];
}
}
return ans;
}
// det用于求行列式
int det(int[][] a) {
if (a.length == 1) {
return a[0][0];
} else {
int ans=0;
for (int i = 0; i < a.length; i++) {
ans+=a[i][0]*(int)Math.pow(-1, i)*det(A(a,i+1,1));
}
return ans;
}
}
}
行列式计算(C#)
最近几天学习高等代数老师说要写个程序算行列式的结果,闲来无事就简单写了一下. 不多说了,上代码 using System; using System.Collections.Generic; usin ...
【Java】Float计算不准确
大家可能都遇到过,float在计算某些值时,会有不准确的情况. 比如如下情况: > 计算不准确 package com.nicchagil.study.java.demo.No10float计算 ...
n阶行列式计算----c语言实现(完结)
花了半天时间,写了这个n阶行列式计算的程序,应该算是比较优美吧,有很多地方多次做了优化,程序占用内存不是很大,要是说小吧,也不合适,因为里边有一个递归,而且递归的深度还比较深.时间复杂度具体没有细看, ...
Java闰年的计算,Calendar的用法
Java闰年的计算,Calendar的用法 代码如下: package com.aaa.zuoye; import java.text.ParseException; import java.util ...
Java基础-时间复杂度计算方式
Java基础-时间复杂度计算方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境 ...
MyMathLib系列(行列式计算)
靠人不如靠己,准备做自己得MathLib,在学校的时候,就想过把数学数理的东西都计算机化.但一直没有时间去做这件事情,如今认为空余 时间比較闲,就做做这件事情,先从线性代数開始,毕竟这里面的非常多算法 ...
MyMathLib系列(行列式计算2)
/// /// 行列式计算,本程序属于MyMathLib的一部分.欢迎使用,參考,提意见. /// 有时间用函数语言改写,做自己得MathLib,里面的算法经过验证,但 ...
Java Convention 公约数计算
Java Convention 公约数计算 /** * *
*
Copyright 1994-2018 JasonInterna ...
Java练习 SDUT-1586_计算组合数
计算组合数 Time Limit: 1000 ms Memory Limit: 32768 KiB Problem Description 计算组合数.C(n,m),表示从n个数中选择m个的组合数. ...
随机推荐
走进缓存的世界(三) - Memcache
系列文章 走进缓存的世界(一) - 开篇 走进缓存的世界(二) - 缓存设计 走进缓存的世界(三) - Memcache 简介 Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用 ...
Mysql 学习笔记2
(1)MySQL查看表占用空间大小 //先进去MySQL自带管理库:information_schema //自己的数据库:dbwww58com_kuchecarlib //自己的表:t_carmod ...
C# ADO.NET 连接Sybase 数据库
using Sybase.Data.AseClient;//反编译修改后的DLL public class SybaseHelper { public AseConnection con; publi ...
C# 数据回滚
public int GetExecteQuery(string strAddSql, string strUpdateSql, string strDelSql) { SqlConnection c ...
java OJ题目判断输入结束(与C语言的EOF结束等价)
/* * java 作Oj题目是会有输入若干数据的情况,不好判断输入结束符, * 类似于C语言中的EOF符号 * 在这里提供了一种方法 * */ import java.util.Iterator; ...
解决sql和beans中名字不一致问题
第二图使用别名 tid为sql中的名字,id为beans中的名字,推荐此方式
[Swift]LeetCode933. 最近的请求次数 | Number of Recent Calls
Write a class RecentCounter to count recent requests. It has only one method: ping(int t), where t r ...
如何重置mate的面板到初始化时的默认设置?
在你的任何终端中敲入如下命令: gsettings reset-recursively org.mate.panel
20155332 mybash的实现
mybash 的实现 码云链接 https://gitee.com/bestiisjava2017/laura5332/blob/master/%E4%BF%A1%E6%81%AF%E5%AE%89% ...
java编程实现行列式计算应用_Java实现行列式计算相关推荐
- java编程算法出现在窗口_Java实现轨迹压缩算法开放窗口代码编程实例分享
Java实现轨迹压缩算法开放窗口代码编程实例分享,今天要给各位朋友分享的这篇文章主要介绍了Java编程实现轨迹压缩算法开放窗口实例代码,具有一定的参考价值,有兴趣的朋友来看看吧. 轨迹压缩算法 场景描 ...
- Java编程入门与应用 P124——例5-4(计算90度的正弦值、0度的余弦值、1的反正切值、120度的弧度值)
Java编程入门与应用 P124--例5-4 计算90度的正弦值.0度的余弦值.1的反正切值.120度的弧度值 因为参数里都是double值,需要以弧度代替角度来实现 /*** Java编程入门与应用 ...
- java编程用什么软件最好_java语言用什么编程软件
现在软件流行java下的j2ee开发和.net开发两大块其他简单说明:foxpro过时的数据库编程软件有极少数企业使用.vc++适合网络编程较难很多外挂出自于此.vb一种. . JAVA就业前景分析: ...
- java编程时 尽量少用_Java编程语言基础知识的要点
很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.下面就说说Java零基础学习Java编程语言基础知识的几个要点.希望能够对Java编程基础入门学习的新手有帮助 ...
- java语言计算圆周率_Java语言简单计算圆周率完整示例
本文实例讲述了Java语言简单计算圆周率完整示例.分享给大家供大家参考,具体如下,希望对大家学习Java语言简单计算圆周率有所帮助. 这两天在网上看到一个题,已知Pi可以用函数4 * (1 – 1/3 ...
- java编程应该要的英语_java编程中常用英语单词
JAVA 省略语与名词解释 -------------------------------- J2EETM----JavaTM 2PlatformEnterpriseEdition : J2EE(JA ...
- java编程实现学生成绩管理系统_java 用文件实现的学生成绩管理系统
[实例简介] yu华南理工大学网络学院2014秋季 "计算机操作系统"课程设计大作业 一.题目: 用文件实现的学生成绩管理系统 二.目的 学生通过本次实验编程实现一个班级学生成绩的 ...
- java计算年龄_java根据出生日期计算出年龄
java根据出生日期计算出年龄 发布时间:2018-05-18 16:07, 浏览次数:3155 , 标签: java日期年龄计算 String dataOfBirth = "1991-10 ...
- java编程成绩评分分等级_java编写成绩等级,最高分为best
题目:编写一个程序,读入学生成绩,获取最高分为best,然后其他等级值: 分数>=best-10,等级为A 分数>=best-20,等级为B 分数>=best-30,等级为C 分数& ...
- java根据生日精确计算年龄_java根据出生日期计算年龄(精确到天)
@根据出生日期计算年龄(精确到天) 代码块 public class CountAgeUtil { public static String countAge(String from){ String ...
最新文章
- 资源 | 做一款炫酷的机器人需要哪些学习资源(机器人资源Awesome系列)
- Mp3写入专辑图片(Kotlin)
- DNN网站出现服务不可用
- JavaScript对象继续总结
- 调试实战 | 通过转储文件分析程序无响应之使用 windbg + IDA 逆向篇
- Keil中的Code,RO,RW,ZI分别表示什么?
- PetShop4.0--转载
- 怎么做蒙特卡洛计算npv_PowerBI非标准日历下的同比环比计算,你知道怎么做吗?...
- 小数分数转换c语言,这是把小数转换成分数的程序,可是输入0.6666无限循环
- Qt与java web通过数据库实现数据展示同步
- 什么是散列表(哈希表)?
- 分享几个你可能不知道的交互式Git 命令
- [转载] 全本张广泰——第八回 广泰欲悬梁 老侠三救徒
- 吴恩达深度学习1.3练习_Neural Networks and Deep Learning
- 维特比算法(Viterbi Algorithm)
- 数据库服务器编码,数据库编码,数据库表编码,数据库表字段编码
- Android项目实战(三十四):蓝牙4.0 BLE 多设备连接
- 【图像去噪】基于matlab GUI均值+中值+高通低通+巴特沃斯+PCA+小波+维纳滤波图像去噪【含Matlab源码 1705期】
- python输出星号等腰三角形_Python 打印矩形、直角三角形、等腰三角形、菱形
- nodejs 结合 wechaty 实现你的微信群聊机器人二(iPad 协议)
热门文章
- PLSQL代码调试Oracle dbms_utility返回错误
- 农村物流配送管理如何走出困境?这里有方案
- 【无标题】PHP小皮中出现拒绝访问(使用密码:YES)
- 计算机属性资源管理器已停止工作,windows资源管理器已停止工作,教您windows资源管理器已停止工作如何解决...
- 脑电信号情绪识别研究综述
- OTA升级的三种方式
- 【数据库系统原理与应用/数据库系统概论】 期末复习手册
- CyanogenMod源码编译
- 关于Iphone 4 如何用itunes备份短信等设置
- IIS PHP MYSQL出现问题_iis php mysql