首页 / JAVA / java高斯消元模板
java高斯消元模板
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java高斯消元模板,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2727字,纯文字阅读大概需要4分钟。
内容图文
![java高斯消元模板](/upload/InfoBanner/zyjiaocheng/1220/8cda57507e87401fb3507c6837af02f1.jpg)
// package fuc; import java.io.PrintStream; import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { new Task().main(); } } class frac{ BigInteger a,b; frac(){ a=BigInteger.ZERO; b=BigInteger.ONE; } frac(BigInteger a,BigInteger b){ this.a=a; this.b=b; } frac sub(frac t){ BigInteger p, q, d; p = a.multiply(t.b); p = p.subtract(t.a.multiply(b)); q = b.multiply(t.b); d = p.gcd(q); p = p.divide(d); q = q.divide(d); returnnew frac(p, q); } frac add(frac t){ BigInteger d, p, q; p = a.multiply(t.b); p = p.add(t.a.multiply(b)); q = b.multiply(t.b); d = p.gcd(q); p = p.divide(d); q = q.divide(d); returnnew frac(p, q); } frac div(frac t) { BigInteger p, q, d; p = a.multiply(t.b); q = b.multiply(t.a); d = p.gcd(q); p = p.divide(d); q = q.divide(d); returnnew frac(p, q); } frac mul(frac t) { BigInteger p, q, d; p = a.multiply(t.a); q = b.multiply(t.b); d = p.gcd(q); p = p.divide(d); q = q.divide(d); returnnew frac(p, q); } frac abs() { returnnew frac(a.abs(), b.abs()); } int compareTo(frac t) { t = this.sub(t); return t.a.compareTo(BigInteger.ZERO); } boolean zero() { return a.equals(BigInteger.ZERO); } } class Task{ Scanner cin = new Scanner(System.in); PrintStream cout = System.out; BigInteger ONE= BigInteger.ONE; BigInteger ZERO=BigInteger.ZERO; frac[][] a = new frac[211][211]; frac[] x = new frac[211]; frac t; frac zero=new frac(ZERO,ONE); frac r,one =new frac(ONE,ONE); boolean gauss(int n){ int i,j,k,row; for(i=1;i<=n;i++){ row=i; for (j=i+1;j<=n;j++){ if (a[row][i].abs().compareTo(a[j][i].abs())<0){ row = j; } } if (a[row][i].compareTo(zero)==0){ returnfalse; } if (row!=i){ for (k=i;k<=n;k++){ t=a[row][k]; a[row][k]=a[i][k]; a[i][k]=t; } t=x[row]; x[row]=x[i]; x[i]=t; } for (j=i+1;j<=n;j++){ r=a[j][i].div(a[i][i]); a[j][i]=zero; for (k=i+1;k<=n;k++){ a[j][k]=a[j][k].sub(r.mul(a[i][k])); } x[j]=x[j].sub(r.mul(x[i])); } } for (i=n;i>=1;i--){ for (j=i-1;j>=1;j--){ r=a[j][i].div(a[i][i]); a[j][i]=zero; x[j]=x[j].sub(r.mul(x[i])); } } for (i=1;i<=n;i++){ x[i]=x[i].div(a[i][i]); } returntrue; } void main(){ int n,i,j; while(cin.hasNext()){ n = cin.nextInt(); for (i=1; i<= n; ++i){ for (j=1; j<=n; ++j){ a[i][j]=new frac(cin.nextBigInteger(),ONE); } x[i]=new frac(cin.nextBigInteger(),ONE); } if (!gauss(n)){ cout.println("No solution."); } else{ for (i=1;i<=n;i++){ if (x[i].b.compareTo(ZERO)<0){ x[i].a=x[i].a.negate(); x[i].b=x[i].b.negate(); } } for (i=1;i<=n;i++){ cout.print(x[i].a); if (x[i].b.compareTo(ONE)!=0){ cout.print("/"+x[i].b); } cout.println(); } } cout.println(); } } }
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2449
原文:https://www.cnblogs.com/ztdf123/p/11436646.html
内容总结
以上是互联网集市为您收集整理的java高斯消元模板全部内容,希望文章能够帮你解决java高斯消元模板所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。