Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun gauss(a: Array<DoubleArray>): DoubleArray {
- val n = a.size
- val m = a[0].size
- var iStart = 0
- val l = mutableListOf<Int>()
- for (j in 0 until m - 1) {
- System.out.printf("%.5f %%\n", (j / (m - 1).toDouble()) * 100.toDouble())
- System.out.flush()
- var free = true
- for (i in iStart until n) {
- if (a[i][j] != 0.toDouble()) {
- val d = a[i][j]
- for (k in 0 until m) {
- a[i][k] /= d
- }
- for (i2 in 0 until n) {
- if (i2 == i) {
- continue
- }
- val mul = a[i2][j] / a[i][j]
- for (k in 0 until m) {
- a[i2][k] -= a[i][k] * mul
- }
- }
- var tmp = a[iStart]
- a[iStart] = a[i]
- a[i] = tmp
- iStart++;
- free = false
- break
- }
- }
- if (free) {
- l.add(j)
- }
- }
- val ans = DoubleArray(m - 1) { -1.toDouble() }
- for (fInd in l) {
- ans[fInd] = 0.toDouble()
- }
- for (j in 0 until m - 1) {
- if (ans[j] == -1.toDouble()) {
- for (i in 0 until n) {
- if (a[i][j] != 0.toDouble()) {
- var need = a[i][m - 1]
- for (k in j + 1 until m - 1) {
- need -= a[i][k] * ans[k]
- }
- ans[j] = need / a[i][j]
- }
- }
- }
- }
- return ans
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement