Метод Крамера, программка |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Метод Крамера, программка |
Demm |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 33 Пол: Мужской Репутация: 0 |
Есть ли у кого-нибудь реализованная прога на Паскале или С++
По вычислению матриц методом крамера? (В поиске ничего не нашел) |
Altair |
Сообщение
#2
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
В ФАКе лежит материал по нахождению детермината матрицы, это все что нужно, для того, что бы самому сделать метод крамера...
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
volvo |
Сообщение
#3
|
Гость |
Demm, ну если просто (без ввода данных, и всяких наворотов, только сам алгоритм) - тогда вот так...
Реализация перенесена сюда: FAQ: Решение систем линейных уравнений |
Demm |
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 33 Пол: Мужской Репутация: 0 |
Большое спасибо
|
Demm |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 33 Пол: Мужской Репутация: 0 |
Эта прога volvo ( я матрицу переправил на другую)
Исходный код Const n = 4; Type Equation = Array[1 .. n, 1 .. Succ(n)] Of Double; matrix = Array[1 .. n, 1 .. n] Of Double; Const a: Equation = (( 2, 1, -5, 1), (1, -3, 0, -6), ( 0, 2,-1, 2), (1,4,-7,6)); Procedure GetMatrix(wout: Integer; Var m: matrix); Var i, j: Integer; Begin For i := 1 To n Do For j := 1 To n Do If j <> wout Then m[i, j] := a[i, j] Else m[i, j] := a[i, Succ(n)] End; Function Det(a: matrix; n: integer): Double; Var i, j, k: Integer; d: Double; Const Eps = 10E-6; Begin For i := 1 To Pred(n) Do Begin If Abs(a[i, i]) < Eps Then Begin Det := 0.0; Exit End; For j := Succ(i) To n Do Begin d := a[j, i] / a[i, i]; For k := i To n Do a[j, k] := a[j, k] - d * a[i, k]; End; End; d := 1.0; For i := 1 To n Do d := d * a[i, i]; Det := d End; Var i: Integer; mx: matrix; Determ: Double; begin GetMatrix(Succ(n), mx); Determ := Det(mx, n); For i := 1 To n Do Begin GetMatrix(i, mx); WriteLn( 'x(', i, ') = ', (Det(mx, n) / Determ):7:4 ) End end. Она работает для матрицы 3 порядка, а почему она не работает для 4 порядка? |
volvo |
Сообщение
#6
|
Гость |
Цитата(Demm @ 12.03.05 17:44) Она работает для матрицы 3 порядка, а почему она не работает для 4 порядка? Почему же не работает? Она и с матрицей более высоких порядков работает... Просто задавать матрицу нужно правильно, ведь написано: Код Type Equation = Array[1 .. n, 1 .. Succ(n)] Of Double; (* Succ здесь что, для красоты? *) matrix = Array[1 .. n, 1 .. n] Of Double; Const a: Equation = ... Значит, матрица A должна быть не 4х4, а 4х5 ... А программа, приведенная в предыдущем посте даже не скомпилируется... |
Demm |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 33 Пол: Мужской Репутация: 0 |
Да, точно забыл свободные члены вписать :p2:
|
Текстовая версия | 10.05.2024 17:06 |