Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. fun gauss(a: Array<DoubleArray>): DoubleArray {
  2. val n = a.size
  3. val m = a[0].size
  4. var iStart = 0
  5. val l = mutableListOf<Int>()
  6. for (j in 0 until m - 1) {
  7. System.out.printf("%.5f %%\n", (j / (m - 1).toDouble()) * 100.toDouble())
  8. System.out.flush()
  9. var free = true
  10. for (i in iStart until n) {
  11. if (a[i][j] != 0.toDouble()) {
  12. val d = a[i][j]
  13. for (k in 0 until m) {
  14. a[i][k] /= d
  15. }
  16. for (i2 in 0 until n) {
  17. if (i2 == i) {
  18. continue
  19. }
  20. val mul = a[i2][j] / a[i][j]
  21. for (k in 0 until m) {
  22. a[i2][k] -= a[i][k] * mul
  23. }
  24. }
  25.  
  26. var tmp = a[iStart]
  27. a[iStart] = a[i]
  28. a[i] = tmp
  29.  
  30. iStart++;
  31. free = false
  32.  
  33. break
  34. }
  35. }
  36. if (free) {
  37. l.add(j)
  38. }
  39. }
  40. val ans = DoubleArray(m - 1) { -1.toDouble() }
  41. for (fInd in l) {
  42. ans[fInd] = 0.toDouble()
  43. }
  44. for (j in 0 until m - 1) {
  45. if (ans[j] == -1.toDouble()) {
  46. for (i in 0 until n) {
  47. if (a[i][j] != 0.toDouble()) {
  48. var need = a[i][m - 1]
  49. for (k in j + 1 until m - 1) {
  50. need -= a[i][k] * ans[k]
  51. }
  52. ans[j] = need / a[i][j]
  53. }
  54. }
  55. }
  56. }
  57. return ans
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement