3 / 3 / 0
Регистрация: 08.05.2012
Сообщений: 16
|
|
1 | |
Решить СЛАУ методом Гаусса в Математике13.09.2012, 22:59. Показов 16013. Ответов 7
Метки нет (Все метки)
Решить систему ЛАУ с помощью метода Гаусса. причем нельзя использовать встроенные функции.( в частности RowReduce).
Вот матрица системы. Последний столбец - свободных членов. a= { {2, 12, -5, 1, 0, 3}, {0.81, 0, -10, 3, -1, 3}, {44, 22, -1, 0, 5, 3}, {-1.8, 0, 6, -22, 1, 3}, {-1, 0, 0, 3.12, 18.4, 3} }
0
|
13.09.2012, 22:59 | |
Ответы с готовыми решениями:
7
Решить СЛАУ методом Гаусса Решить СЛАУ методом итераций и методом Гаусса Решить Слау 5х6 методом Гаусса Решение СЛАУ методом Гаусса |
Модератор
5240 / 4027 / 1385
Регистрация: 30.07.2012
Сообщений: 12,289
|
|
14.09.2012, 00:14 | 2 |
Сообщение от Rusic
Дорогой(ая) Rusic! Без бумаги, ручки и метода Гаусса Вам не обойтись...
0
|
3 / 3 / 0
Регистрация: 08.05.2012
Сообщений: 16
|
|
14.09.2012, 00:20 [ТС] | 3 |
Я знаю, как это делается на бумаге. Но не могу реализовать в Математике. Путаница с циклами и их порядком действия.
0
|
Модератор
5240 / 4027 / 1385
Регистрация: 30.07.2012
Сообщений: 12,289
|
|
14.09.2012, 00:24 | 4 |
0
|
3 / 3 / 0
Регистрация: 08.05.2012
Сообщений: 16
|
|
14.09.2012, 09:40 [ТС] | 5 |
For[k = 1, k <= n, k++, m = k; max = Abs[a[[k, k]]]
For[i = k + 1; i <= n, i++, If[Abs[a[[i, k]]] > max, {m = i, max = Abs[a[[i, k]]]}]; If[m != k, For[j = k, j <= n + 1, j++, {w = a[[k, j]], a[[k, j]] = a[[m, j]], a[[m, j]] = w}]] For[j = n + 1, j >= k, j--, a[[k, j]]/a[[k, k]]]; For[i = 1, i <= n, i++, For[j =... А дальше запуталась( я не дописала получение нулей под и над диагональю.
0
|
18.09.2012, 14:25 | 6 |
Переложил на Вольфрам код Puporev (ему надо сказать спасибо). Исходный код: Исправьте пожалуйста некоторые недочеты в программе по решению СЛАР методом Гаусса
Кликните здесь для просмотра всего текста
Код
Per = Function[{k, n, a, b}, Module[{i, j, z}, z = a[k, k]; i = k; Do[ If[Abs[a[j, k]] > z, (z = a[j, k]; i = j), Null ] , {j, k + 1, n - 1}]; If[i > k, Do[ (z = a[i, j]; a[i, j] = a[k, j]; a[k, j] = z) , {j, k, n - 1}], Null ]; (z = b[i]; b[i] = b[k]; b[k] = z); True ] ]; PrChod = Function[{n, a, b}, Module[{k, i, j, r}, Do[ If[a[k, k] == 0, Per[k, n, a, b], Null]; Do[ r = a[j, k]/a[k, k]; Do[ a[j, i] = a[j, i] - r*a[k, i]; , {i, k, n - 1}] , {j, k + 1, n - 1}] , {k, 0, n - 1}]; True ] ]; ObrChod = Function[{n, a, b, x}, Module[{k, j, r, g}, Do[ r = 0; Do[ g = a[k, j]*x[j]; r = r + g; , {j, k + 1, n - 1}]; x[k] = (b[k] - r)/a[k, k] , {k, n - 1, 0, -1}] True ] ]; Gausse = Function[{c}, Module[{a, b, n, x, r}, n = Length[c]; Do[a[i - 1, j - 1] = c[[i, j]], {i, 1, n}, {j, 1, n}]; Do[b[i - 1] = c[[i, n + 1]], {i, 1, n}]; (*Print[Definition[a],Definition[b]];*) PrChod[n, a, b]; (*Print/@Definition/@{a,b};*) ObrChod[n, a, b, x]; (*Print/@Definition/@{a,b,x};*) Table[x[i], {i, 0, n - 1}] ] ]; Комментарий: * Использовал не список за основу (список имеет заголовок List и к элементу мы стучимся при помощи Part: list[[i,j]]), а правила подстановок (поэтому скобочки одинарные: list[i,j]). * Функция Gausse занимается приведения одного большого массива всех коэффициентов к двум функциям, с которыми, собственно, и происходят все манипуляции.
0
|
4217 / 3412 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
|
|
18.09.2012, 15:54 | 7 |
Поиск по запросу "Mathematica Gauss", среди первых результатов:
http://math.fullerton.edu/math... anMod.html Всё есть - тексты, примеры. Но это будет полезно лишь для того, кто понимает, как это делать, и умеет всё сделать вручную.
0
|
3 / 3 / 0
Регистрация: 08.05.2012
Сообщений: 16
|
|
04.10.2012, 22:31 [ТС] | 8 |
Прикладываю решение своей задачи. Оно правильное. Может кому понадобится)
n = 5; a = {{2, 12, -5, 1, 0, 3}, {0.81, 0, -10, 3, -1, 3}, {44, 22, -1, 0, 5, 3}, {-1.8, 0, 6, -22, 1, 3}, {-1, 0, 0, 3.12, 18.4, 3}}; For[k = 1, k <= n, k++, m = k; max = Abs[a[[k, k]]]; For[i = k + 1, i <= n, i++, If[Abs[a[[i, k]]] > max, {m = i, max = Abs[a[[i, k]]]}]]; If[m != k, For[j = k, j <= n + 1, j++, {w = a[[k, j]], a[[k, j]] = a[[m, j]], a[[m, j]] = w}]]; For[j = n + 1, j >= k, j--, a[[k, j]] = a[[k, j]]/a[[k, k]]]; For[i = 1, i <= n, i++, If[i != k, For[j = n + 1, j >= k, j--, a[[i, j]] = a[[i, j]] - a[[i, k]]*a[[k, j]]]]]; Print[a // MatrixForm]]
2
|
04.10.2012, 22:31 | |
04.10.2012, 22:31 | |
Помогаю со студенческими работами здесь
8
Решение СЛАУ методом Гаусса Решение СЛАУ методом Гаусса Решение СЛАУ методом Гаусса Решение СЛАУ методом Гаусса-Зейделя Решение СЛАУ методом Гаусса. Неправильные результаты Решение СЛАУ методом Гаусса. Ошибка в коде Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |