Почему определитель матрицы паскаля равен 1
Перейти к содержимому

Почему определитель матрицы паскаля равен 1

  • автор:

Свойства определителя матрицы и его нахождение

Матрица в математике — это таблица упорядоченных взаимосвязанных элементов, состоящая из m-строк и n-столбцов. В квадратной матрице m=n, то есть A = (n×n). Одной из основных ее характеристик, применяемых в решении большинства задач, является определитель.

Определитель матрицы — что это такое, его свойства

Точного определения этого термина не существует, однако для понимания:

Определитель — это некоторая скалярная величина, с которой можно сопоставить любую квадратную матрицу.

Три альтернативных обозначения: |А|, Δ, det A. Методы вычисления варьируется в зависимости от порядка матрицы (количества строк или столбцов).

Что называют детерминантом

При изучении матричного определителя часто мелькает латинское слово «детерминант». На самом деле, разницы нет — это одно и то же понятие. Однако детерминант имеет множество значений в других областях науки, поэтому в математике чаще всего используют его русский перевод.

Расстановка индексов в матрице

Индексы — это координаты элемента в системе. У каждого элемента их два: первый указывает на строку, второй — на столбец.

Матрица

Поскольку порядок — это количество строк или столбцов в квадратной матрице, то его можно определить по m-индексу нижней строки или n-индексу крайнего правого столбца. Такой способ применяется в том случае, если таблица очень большая и считать строки (столбцы) неудобно.

Алгебраическое определение

Алгебраический смысл таков:

Определитель матрицы А = (n×n) — это алгебраическая сумма n слагаемых.

Алгебраическое определение

Каждое слагаемое — это произведение n-элементов, взятых по одному из каждой строки и каждого столбца, умноженное на (-1) в степени Np (количество инверсий).

Геометрическое определение

Геометрический смысл таков:

Определитель — это объем параллелепипеда, который получается, если рассмотреть строки в качестве векторов, образующих ребра.

Геометрический смысл

Еще раз: количество строк (столбцов) равно количеству векторов. Таким образом, если нам дана матрица А = (2×2), то она является двухмерным параллелограммом, а детерминант — площадью данной фигуры. Если А = (3×3), то это трехмерный параллелепипед, а определитель — его объем.

Общая схема вычисления определителей

Для матрицы 1-го порядка определитель равен его единственному элементу:

Для 2-го порядка — произведение элементов главной диагонали минус произведение побочной.

Для нахождения А = (3×3) есть два способа:

  • правило треугольника;
  • правило Саррюса.

Правило треугольника выглядит следующим образом:

Правило треугольника

Если показывать графически, то:

Правило графически

По правилу Саррюса нужно:

Правило Саррюса

  1. Дописать слева от определителя два первых столбца.
  2. Перемножить элементы главной диагонали и параллельных диагоналей, взяв произведения со знаком «+».
  3. Перемножить элементы побочных диагоналей и параллельных им, взяв произведения со знаком «–».

Матрицы от 4-го порядка считают разложением строк или столбцов, но такой метод применяется редко и требует знаний об алгебраическом дополнении и миноре.

Вычисление определителя матрицы, примеры с решением

Задача №1: вычислить детерминант матрицы A = (n×n), равной

\(|а_ а_| = а_ * а_ — а_ * а_\) , следовательно

det A = 11 * (-2) – (-15) * (-3) = (-22) – 45 = (-67)

Ответ: det A = (-67)

Задача №2: определить det A матрицы, равной

Решение: если методом треугольника, то:

Решение задачи

det A = (1 * 2 * (-1) + 3 * 1 * 1 + 0 * 5 * 4) — (4 * 2 * 1 + 3 * 0 * (-1) + 1 * 5 * 1) =

((-2) + 3 + 0) — (8 + 0 + 5) = 1 — 13 = (-12)

[алгоритм] определитель и трeугольник пaскаля

Определитель = 1. Метод Гаусса. Причем тут треугольник Паскаля?

watashiwa_daredeska ★★★★
( 18.12.07 09:59:01 MSK )
Ответ на: комментарий от watashiwa_daredeska 18.12.07 09:59:01 MSK

Да, обшибся. Не 1.

watashiwa_daredeska ★★★★
( 18.12.07 10:10:19 MSK )

попробуй вычислить, применяя элементарные преобразования:

Сначала из j+1 столбца вычитаешь j-тый, проходя по j от n-1 до 1.
Там вроде останется матрица из одних единиц, у которой определитель равен 0.

Хотя я могу ошибаться, а расписывать влом 🙂

gaa ★★
( 18.12.07 10:59:38 MSK )
Ответ на: комментарий от gaa 18.12.07 10:59:38 MSK

действительно не 0 🙂

но попробуй преобразовать указанным мной методом, матрица значительно упростится

gaa ★★
( 18.12.07 11:00:21 MSK )

Определитель будет равен n.

Гоняешь несколько(n-1) раз вычитание столбцов по описанному выше методу, в результате получаешь нижнетреугольную матрицу с диагональю [1,1. 1,n], у которой det=n.

gaa ★★
( 18.12.07 11:19:46 MSK )
Ответ на: комментарий от watashiwa_daredeska 18.12.07 10:10:19 MSK

Не обшибся. Таки 1.

Miguel ★★★★★
( 18.12.07 11:45:33 MSK )
Ответ на: комментарий от gaa 18.12.07 11:19:46 MSK

получится матрица с единичной диагональю

gaa ★★
( 18.12.07 11:55:46 MSK )
Ответ на: комментарий от gaa 18.12.07 11:55:46 MSK

что там у нас в talks про второкурсника проскакивало? тут лучше )

ftor ★
( 18.12.07 14:51:46 MSK )
Ответ на: комментарий от gaa 18.12.07 11:55:46 MSK

я понял как решать, когда сдам отпишу решение.

осталось тока формулу записать и доказать.

всё элементарно, хватило методички за 1 курс, 1 семестр по лин. алегбре. )

anonymous
( 18.12.07 16:07:22 MSK )
Ответ на: комментарий от Miguel 18.12.07 11:45:33 MSK

> Не обшибся. Таки 1.

watashiwa_daredeska ★★★★
( 18.12.07 17:44:23 MSK )

Биномиальный коэффициент — это многочлен от n степени k с главным коэффициентом 1/k!, поэтому определитель данной матрицы — просто определитель Вандермонда для 0,1,2. n-1, умноженный на произведение всех 1/k!. Очевидно получается 1.

Если знать такое утверждение из алгебраической комбинаторики, то тоже очень просто. Пусть a_1, a_2, . a_n, b_1, . b_n — целочисленные точки на плоскости и p_ij — количество путей по решетке (идущих, скажем, только вправо или вниз) из точки a_i в точку b_j. Тогда определитель матрицы (p_ij) — это количество наборов таких попарно непересекающихся путей из a_1 в b_1, из a_2 в b_2, . a_n в b_n. Если выбрать a_i=(0,i-1), b_i=(i-1,0), то матрица (p_ij) как раз данная. С другой стороны, есть только один набор непересекающихся путей: a_i->(i-1,i-1)->b_i. Поэтому определитель 1.

В общем, учите математику. Быдлокодерство поспеет.

grob ★★★★★
( 19.12.07 01:16:41 MSK )
Ответ на: комментарий от anonymous 18.12.07 16:07:22 MSK

так, решение не отпишу) ибо неправильно)

действительно получается всегда один. надо тока оформить это дело теперича.

а с определителем Вандермонда, не очень то и понял в чем его смысл..

с «утверждением из алгебраической комбинаторики» тоже слегка непонятно)

anonymous
( 19.12.07 13:18:06 MSK )
Ответ на: комментарий от anonymous 19.12.07 13:18:06 MSK

матрица Вандермонда — (a_i^)_^n

ее определитель = \prod (a_i — a_j)

пусть есть многочлены P_j(x) = c_j x^ + .

тогда определитель матрицы (P_j(a_i))_^n по методу Гаусса равен опредетителю Вандермонда, умноженному на произведение всех c_j

— многочлен степени k от n с главным коэффициентом 1/k!

grob ★★★★★
( 19.12.07 21:53:01 MSK )
Ответ на: комментарий от grob 19.12.07 21:53:01 MSK

Есть способ проще, на уровне 1-го курса.

watashiwa_daredeska ★★★★
( 19.12.07 22:33:26 MSK )
Ответ на: комментарий от watashiwa_daredeska 19.12.07 22:33:26 MSK

это и так на уровне первого курса

grob ★★★★★
( 21.12.07 03:49:28 MSK )
Ответ на: комментарий от anonymous 19.12.07 13:18:06 MSK

хм.. с подобной задаче тоже недавно мучался, только я думал что матрица должна быть вида |1 1 1 1| |1 2 3 0| |1 3 0 0| |1 0 0 0| и тогда надо вывести формулу умножения элементов стоящих по диагонали.. впринципе вывел. вот она, авось кому-нит пригодится \prod_^n\ n(n-1)(n-2)*. *(n-m+1)/m! даж работает) но к сожжалению по заданию слегка не подходит, я так понимаю надо было найти определитель у матрицы вида |1 1 1 1 | |1 2 3 4 | |1 3 6 10| |1 4 10 20| ну тут да, можно и использование определителя вондермонда искать, а можно и просто методом гаусса.. без всяких заморочек. основная формула будет a_(ij) = a_(i-1 j) + a_(i j-1) I_n = I_(n-1) = . = I_1 = 1 Апосля некоторых преобразований матрица будет выглядеть примерно так |1 0 0 0. |0 1 2 3 . |0 .. |0 .. >Пусть a_1, a_2, . a_n, b_1, . b_n - целочисленные точки на плоскости и p_ij - количество путей по решетке (идущих, скажем, только вправо или вниз) из точки a_i в точку b_j. С алгебраической комбинаторикой незнаком, но что-то похожее пытался сделать.. представить элементы матрицы как точки на плоскости и между ними провести связи, только не вправо или вниз, а вообще все возможные варианты и потом что-нибудь с сочетаниями сообразить.. в итоге забил, чушь получалась, да и спать ночь хотелось)

t1lan
( 21.12.07 17:44:06 MSK )
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

Похожие темы

  • Форум Алгоритм перевода в unixtime (2009)
  • Форум алгоритм «гусеница» (2008)
  • Форум Книга по алгоритмам (2013)
  • Форум Алгоритмы лексическо-семантического анализа (2012)
  • Форум верификация алгоритма (2014)
  • Форум Требуется составить алгоритм и откомментировать код (2011)
  • Форум Алгоритмы кодирования/шифрования схожие с base16 (2016)
  • Форум Алгоритм по переводу десятичного числа в hex (2020)
  • Форум [ QR-code ] алгоритм формирования (2011)
  • Форум Поиск алгоритма (2016)

Матрица Паскаля

В математике, особенно в теории матриц и комбинаторике, матрица Паскаля — это бесконечная матрица, элементами которой являются биномиальные коэффициенты. Существует три варианта расположения элементов в матрице: в виде верхнетреугольной, нижнетреугольной или симметричной матрицы. 5×5-ограничения таких матриц имеют вид:

 U_5=\begin</p><div class='code-block code-block-12' style='margin: 8px 0; clear: both;'>
<!-- 12joomlaumnik -->
<script src=

1 & 1 & 1 & 1 & 1 \\ 0 & 1 & 2 & 3 & 4 \\ 0 & 0 & 1 & 3 & 6 \\ 0 & 0 & 0 & 1 & 4 \\ 0 & 0 & 0 & 0 & 1 \end;\,\,\,» />

 L_5=\begin</p>
<p> 1 & 0 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 & 0 \\ 1 & 2 & 1 & 0 & 0 \\ 1 & 3 & 3 & 1 & 0 \\ 1 & 4 & 6 & 4 & 1 \end;\,\,\,» /></p>
<p><img decoding=

= = \frac, \quad n=i+j,\quad r=i.» />

S_<ij></p>
<p> = \textstyle C_^i= \frac.» /></p>
<p>Таким образом, след матрицы <i>S<sub>n</sub></i> равен</p>
<p>в зависимости от <i>n</i> образуя последовательность: 1, 3, 9, 29, 99, 351, 1275, … последовательность A006134 в OEIS.</p>
<h3>Построение [ править ]</h3>
<p>Матрица Паскаля может быть построена посредством взятия экспоненты от поддиагональной или наддиагональной матрицей специального вида. В следующем примере строятся матрицы 7×7, но этот метод работает для любых <i>n</i>×<i>n</i>-матриц Паскаля. (Точками обозначены нулевые элементы.)</p>
<p><img decoding=

& L_7=\exp \left ( \left [ \begin . & . & . & . & . & . & . \\ 1 & . & . & . & . & . & . \\ . & 2 & . & . & . & . & . \\ . & . & 3 & . & . & . & . \\ . & . & . & 4 & . & . & . \\ . & . & . & . & 5 & . & . \\ . & . & . & . & . & 6 & . \end \right ] \right ) = \left [ \begin 1 & . & . & . & . & . & . \\ 1 & 1 & . & . & . & . & . \\ 1 & 2 & 1 & . & . & . & . \\ 1 & 3 & 3 & 1 & . & . & . \\ 1 & 4 & 6 & 4 & 1 & . & . \\ 1 & 5 & 10 & 10 & 5 & 1 & . \\ 1 & 6 & 15 & 20 & 15 & 6 & 1 \end \right ] ;\quad \\ \\ & U_7=\exp \left ( \left [ \begin . & 1 & . & . & . & . & . \\ . & . & 2 & . & . & . & . \\ . & . & . & 3 & . & . & . \\ . & . & . & . & 4 & . & . \\ . & . & . & . & . & 5 & . \\ . & . & . & . & . & . & 6 \\ . & . & . & . & . & . & . \end \right ] \right ) = \left [ \begin 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ . & 1 & 2 & 3 & 4 & 5 & 6 \\ . & . & 1 & 3 & 6 & 10 & 15 \\ . & . & . & 1 & 4 & 10 & 20 \\ . & . & . & . & 1 & 5 & 15 \\ . & . & . & . & . & 1 & 6 \\ . & . & . & . & . & . & 1 \end \right ] ; \\ \\ \therefore & S_7 =\exp \left ( \left [ \begin . & . & . & . & . & . & . \\ 1 & . & . & . & . & . & . \\ . & 2 & . & . & . & . & . \\ . & . & 3 & . & . & . & . \\ . & . & . & 4 & . & . & . \\ . & . & . & . & 5 & . & . \\ . & . & . & . & . & 6 & . \end \right ] \right ) \exp \left ( \left [ \begin . & 1 & . & . & . & . & . \\ . & . & 2 & . & . & . & . \\ . & . & . & 3 & . & . & . \\ . & . & . & . & 4 & . & . \\ . & . & . & . & . & 5 & . \\ . & . & . & . & . & . & 6 \\ . & . & . & . & . & . & . \end \right ] \right ) = \left [ \begin 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ 1 & 2 & 3 & 4 & 5 & 6 & 7 \\ 1 & 3 & 6 & 10 & 15 & 21 & 28 \\ 1 & 4 & 10 & 20 & 35 & 56 & 84 \\ 1 & 5 & 15 & 35 & 70 & 126 & 210 \\ 1 & 6 & 21 & 56 & 126 & 252 & 462 \\ 1 & 7 & 28 & 84 & 210 & 462 & 924 \end \right ]. \end » />

Важно отметить, что нельзя просто положить exp(A)exp(B) = exp(A + B), для n×n-матирц A и B, такое равенство имеет место только при AB = BA (то есть, когда матрицы A и B коммутируют). В приведённом построении симметричных матриц Паскаля наддиагональные и поддиагональные матрицы не коммутирую. Таким образом, нельзя провести (возможно) ожидаемое упрощение включающее сумму матриц.

Полезное свойство поддиагональных и наддиагональных матриц, используемое в данном построении, это их нильпотеность, то есть, при возведении в достаточно большую целую степень, они вырождаются в нулевую матрицу. (Смотри матрица сдвига для дальнейших деталей.) Так как обобщённые n×n-матрицы сдвига, которые тут используются, становятся равными нулю при возведении в степень n, то при вычислении матричной экспоненты необходимо рассматривать только первый n + 1 член бесконечного ряда, чтобы получить точный результат.

Варианты [ править ]

Интересные варианты могут быть получены посредством очевидных модификаций матриц PL7, от которых берётся экспонента.

Первый пример ниже использует квадраты значений в PL7 вместо исходных и приводит к построению 7×7-матрицы Лагерра (матрицы, элементами которой являются полиномы Лагерра).

 \begin</p>
<p> & LAG_7=\exp \left ( \left [ \begin . & . & . & . & . & . & . \\ 1 & . & . & . & . & . & . \\ . & 4 & . & . & . & . & . \\ . & . & 9 & . & . & . & . \\ . & . & . & 16 & . & . & . \\ . & . & . & . & 25 & . & . \\ . & . & . & . & . & 36 & . \end \right ] \right ) = \left [ \begin 1 & . & . & . & . & . & . \\ 1 & 1 & . & . & . & . & . \\ 2 & 4 & 1 & . & . & . & . \\ 6 & 18 & 9 & 1 & . & . & . \\ 24 & 96 & 72 & 16 & 1 & . & . \\ 120 & 600 & 600 & 200 & 25 & 1 & . \\ 720 & 4320 & 5400 & 2400 & 450 & 36 & 1 \end \right ] ;\quad \end » /></p><div class='code-block code-block-15' style='margin: 8px 0; clear: both;'>
<!-- 15joomlaumnik -->
<script src=

(Матрица Лагерра на самом деле использует другое масштабирование и знаки некоторых коэффициентов.)

Второй пример использует v(v + 1) в качестве элементов, если v— элементы исходной матрицы. Он приводит к построению 7×7-матрицы Лаха (матрицы с элементами в виде чисел Лаха).

 \begin</p>
<p> & LAH_7=\exp \left ( \left [ \begin . & . & . & . & . & . & . \\ 2 & . & . & . & . & . & . \\ . & 6 & . & . & . & . & . \\ . & . &12 & . & . & . & . \\ . & . & . & 20 & . & . & . \\ . & . & . & . & 30 & . & . \\ . & . & . & . & . & 42 & . \end \right ] \right ) = \left [ \begin 1 & . & . & . & . & . & . & . \\ 2 & 1 & . & . & . & . & . & . \\ 6 & 6 & 1 & . & . & . & . & . \\ 24 & 36 & 12 & 1 & . & . & . & . \\ 120 & 240 & 120 & 20 & 1 & . & . & . \\ 720 & 1800 & 1200 & 300 & 30 & 1 & . & . \\ 5040 & 15120 & 12600 & 4200 & 630 & 42 & 1 & . \\ 40320 & 141120 & 141120 & 58800 & 11760 & 1176 & 56 & 1 \end \right ] ;\quad \end » /></p>
<p>Использование <i>v</i>(<i>v</i> − 1) приводит к диагональному сдвигу вниз-вправо.</p>
<p><img decoding=

Третий пример использует квадрат исходной PL7-матрицы, делёный на 2, другими словами: биномиальные коэффициенты первого порядка на второй поддиагонали и приводит к построению матрицы, которая возникает в связи с производными и интегралами от гауссовской функции ошибок:

 \begin</p>
<p> & GS_7=\exp \left ( \left [ \begin . & . & . & . & . & . & . \\ . & . & . & . & . & . & . \\ 1 & . & . & . & . & . & . \\ . & 3 & . & . & . & . & . \\ . & . & 6 & . & . & . & . \\ . & . & . & 10 & . & . & . \\ . & . & . & . & 15 & . & . \end \right ] \right ) = \left [ \begin 1 & . & . & . & . & . & . \\ . & 1 & . & . & . & . & . \\ 1 & . & 1 & . & . & . & . \\ . & 3 & . & 1 & . & . & . \\ 3 & . & 6 & . & 1 & . & . \\ . & 15 & . & 10 & . & 1 & . \\ 15 & . & 45 & . & 15 & . & 1 \end \right ] ;\quad \end » /></p>
<p>Если обратить эту матрицу (например, снова беря экспоненту, но с другим знаком), то знаки коэффициентов меняются и дают коэффициенты производных гауссовской функции ошибок.</p>
<p>Другой вариант может быть получен при расширении исходной матрицы на отрицательные числа:</p>
<p><img decoding=

Помогите пожалуйста. Админ привет. это vanHalen с вашего бывшего форума. 🙂
Задание:
Найдите определитеь матрицы n-ого порядка методом Гаусса. Я понимаю что вроде не сложно, но я сам ещё в Паскале не дошёл до матриц, поэтому для меня это пока нерешаемо. Помогите бедному студенту.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Определитель методом Гаусса
Доброе время суток , хочу попросить вас помочь мне в написании алгоритма и программы вычисления.

Метод Гаусса
Помогите плз, не знаю как решать задачи такого типа: Решить систему линейных алгебраических.

Метод Гаусса
Нужно запрограммировать метод Гаусса,я как только начинаю понимать-пытаюсь решить и тут же сразу.

Метод Гаусса
1. Нужно сделать вывод промежуточных матриц до вывода корней. uses crt; var a:arrayof real;.

Регистрация: 24.04.2006
Сообщений: 10

Краткий курс «матриц в паскале»:
1. Объявление 2-х мерного массива (матрицы):
var
A: array [1..N, 1..M] of integer;
А — матрица NxM. Вместо integer можешь писать что угодно (real, boolean, . ).
2. Доступ к элементу:
A[i, j] или A[i][j] — элемент матрицы, где 1=i=N, 1=j=M.

Пример: создать таблицу умножения:

1 2 3 4 5 6 7 8 9
var A: array[1..10][1..10] of integer; i, j: integer; begin for i:=1 to 10 do for j:=1 to 10 do A[i, j]:=i*j; end.

Регистрация: 24.04.2006
Сообщений: 10
Регистрация: 09.07.2008
Сообщений: 5
Может поможете вычислить собственные векторы для симметрических матриц
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181

Если не работали с матрицами, да еще и математику плохо знаете, то вряд ли разберетесь, но код выкладываю, вдруг пригодится.
Если вдруг не будет работать вышлю программу, вдруu при копировании что упустил.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
uses crt; type Tmatr=array [1..20,1..20] of real; var n:integer; a,a1:Tmatr; det,det1:real; i,j,k1,k2:integer; procedure Per(i1,i2:integer;var a:Tmatr); var z:real; begin for j:=1 to n do begin z:=a[i1,j];a[i1,j]:=a[i2,j];a[i2,j]:=z; end; end; function znak(p:integer):integer; begin if p mod 2=0 then znak:=1 else znak:=-1; end; procedure opr(n:integer;var a:Tmatr;var det:real); var k,i,j,p:integer; r:real; begin det:=1; for k:=1 to n do begin det:=det*a[k,k]; for j:=k+1 to n do begin r:=a[j,k]/a[k,k]; for i:=k to n do begin a[j,i]:=a[j,i]-r*a[k,i]; end; end; end; end; begin clrscr; write('n=');readln(n); writeln('Ischodnaia matritsha A:'); randomize; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(10)+random; write(a[i,j]:6:2); end; writeln; end; opr(n,a,det); writeln('opr=',det:4:2); readln end.

Регистрация: 27.12.2010
Сообщений: 9
а как в последней програме сделать так чтоб матрицю вводить?
Регистрация: 27.12.2010
Сообщений: 9
Люди помогите срочно как в последней програме вводить свою матрицу.
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105

Puporev, прошу прощения, код ваш, но человеку срочно, да и минутка есть)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
uses crt; type Tmatr=array [1..20,1..20] of real; var n:integer; a,a1:Tmatr; det,det1:real; i,j,k1,k2:integer; procedure Per(i1,i2:integer;var a:Tmatr); var z:real; begin for j:=1 to n do begin z:=a[i1,j];a[i1,j]:=a[i2,j];a[i2,j]:=z; end; end; function znak(p:integer):integer; begin if p mod 2=0 then znak:=1 else znak:=-1; end; procedure opr(n:integer;var a:Tmatr;var det:real); var k,i,j,p:integer; r:real; begin det:=1; for k:=1 to n do begin det:=det*a[k,k]; for j:=k+1 to n do begin r:=a[j,k]/a[k,k]; for i:=k to n do begin a[j,i]:=a[j,i]-r*a[k,i]; end; end; end; end; begin clrscr; write('n=');readln(n); for i:=1 to n do for j:=1 to n do begin write ('mas[',i,'][',j,']='); readln (mas[i][j]); end; writeln; writeln('Ischodnaia matritsha A:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:6:2); writeln; end; opr(n,a,det); writeln('opr=',det:4:2); readln end.

Регистрация: 27.12.2010
Сообщений: 9

Народ спасибо со всех тем сделал отличную прогу всем большое спасибо. могу выкласть код!

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
program determinant; uses crt; type Tmatr=array [1..20,1..20] of real; var n:integer; a,a1:Tmatr; det,det1:real; i,j,k1,k2,q:integer; procedure Per(i1,i2:integer;var a:Tmatr); var z:real; begin for j:=1 to n do begin z:=a[i1,j];a[i1,j]:=a[i2,j];a[i2,j]:=z; end; end; function znak(p:integer):integer; begin if p mod 2=0 then znak:=1 else znak:=-1; end; procedure opr(n:integer;var a:Tmatr;var det:real); var k,i,j,p:integer; r:real; begin det:=1; for k:=1 to n do begin det:=det*a[k,k]; for j:=k+1 to n do begin r:=a[j,k]/a[k,k]; for i:=k to n do begin a[j,i]:=a[j,i]-r*a[k,i]; end; end; end; end; begin clrscr; repeat write('n=');readln(n); randomize; for i:=1 to n do begin for j:=1 to n do begin write ('‚Введите елемент матрицы a[',i,'][',j,']='); readln(a[i,j]); end; writeln; end; opr(n,a,det); writeln('opr=',det:4:2); writeln('Если хотите продолжыть введите 1, если нет то -1'); read(q) until(q=-1) end.

Добавлено через 19 минут
Еще срочно помогите как в моей програме сделать так чтоб было видно ход ришения?

Регистрация: 19.11.2010
Сообщений: 10
Это какой метод вычисления определителя. Элементарными преобразованиями.
Регистрация: 30.04.2012
Сообщений: 216

Как известно определитель по Гауссу находиться путем перемножения элементов по диагонали, которые лежат ВЫШЕ нулей, получившиеся после ПРЯМОГО ХОДА. Помогите в этот код добавить вычисления определителя и вывести ответ:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
program gauss; uses crt; const num=5; var a: array [1..num,1..num] of real; b, x: array [1..num] of real; n, i, j, k: integer; delenie: real; begin clrscr; writeln('Введите колич-во неизвестных величин и нажмите ENTER:'); readln(n); writeln; writeln('Вводите коэфф-ты матpицы A по стpокам нажимая ENTER:'); for i:=1 to n do begin for j:=1 to n do read(a[i,j]); end; writeln; writeln('Введите вектоp В свободных членов нажимая ENTER:'); for i:=1 to n do read (b[i]); writeln; writeln('Расширеная матрица:'); for i:=1 to n do begin for j:=1 to n do write (a[i, j]:5:3,' ':2); write (b[i]:5:3,' ':2); writeln; end; writeln; writeln('---------ПРЯМОЙ ХОД---------'); for i:=1 to n-1 do begin for k:=i+1 to n do begin delenie:= -1*(a[k,i] / a[i,i]); for j:=1 to n do a[k,j]:= a[k,j] + a[i,j] * delenie; b[k]:= b[k] + b[i] * delenie; end; end; writeln('Вычисляю. '); writeln; writeln('Результат прямого хода:'); for i:=1 to n do begin for j:=1 to n do write (a[i, j]:5:3,' ':2); write (b[i]:5:3,' ':2); writeln; end; writeln; writeln('---------ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ---------'); ТУТ ДОЛЖЕН БЫТЬ КОД ВЫЧ. ОПРЕД-ЛЯ! writeln('ОТВЕТ:'); ТУТ ОТВЕТ! readkey; end.

Добавлено через 10 часов 37 минут

Не можите? Тогда я сам! :

1 2 3 4 5 6 7 8 9 10 11 12 13 14

writeln(‘———ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ ПО МЕТОДУ ГАУССА———‘); for k:=1 to n do for i:=k+1 to n do for j:=k+1 to n do begin a[i,j]:=a[i,j]a[i,k] * a[k,j] / a[k,k]; det:=a[1,1]; end; for i:=2 to n do det:=det*a[i,i]; writeln(‘Вычисляю. ‘); writeln; writeln(‘ОТВЕТ:’); writeln (‘det=’, det:2:3);

Добавлено через 6 минут
Вот только det всегда выводится округленным до целых, хотя я его объявил как real. Впрочем, если не ошибаюсь, определитель всегда целое число.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *