Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

(Дельфи) Приведение матрицы к диагональному виду

33K
15 декабря 2007 года
Daiver
2 / / 15.12.2007
помогите плиз.
надо прогу для приведения матрицы к диагональному виду.
заранее благодарю
17K
16 декабря 2007 года
jack marked
20 / / 12.11.2006
Если ты имеешь ввиду вот это - http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0, то да. Есть такая прога. Вот это глянь - http://sources.codenet.ru/file/1595/TMatrix1.1.rar. Там нет метода получения диагональной матрицы, но можно сделать исправив одну строку кода в методе получения обратной матрицы. Метод Ret глянь.
В конце этого метода вот такой код
 
Код:
for i := 0 to Count - 1 do
    for j := 0 to Count - 1 do
      FData [i, j] := A[i, j + Count] / A[i, i];

Если ты заменишь этот кусок на такой
 
Код:
for i := 0 to Count - 1 do
    for j := 0 to Count - 1 do
      FData [i, j] := A[i, j];

то вместо обратной матрицы получишь как раз диагональную, полученную из исходной. Если будут вопросы, то пиши на e-mail. Он указан вверху исходника Matrixes.pas, или на icq 509550. Ну или тут.
51K
30 июня 2009 года
T710MA
1 / / 30.06.2009
Код:
program MOI_MAV;
uses crt;
var
   i,j,k,l,n : integer;
   m,z   : real;
   a:array[1..99,1..100]of real;
procedure Out;
begin
 for i:=1 to n do
  begin
   for j:=1 to n+1 do write(a[i,j]:4:4,' ');
   writeln;
  end;
end;
begin
  clrscr;
  write('Razmer matrix N = ');readln(n);
  writeln('Vvodite po strokam');
  for i:=1 to n do
   begin
    writeln(i,'-ia stroka');
    for j:=1 to n+1 do readln(a[i,j]);
   end;
  clrscr;
  writeln('Nachal6naia matrix : ');out;
  for i:=1 to n do
    begin
      z:=a[i,i];
      for j:=i to n+1 do a[i,j]:=a[i,j]/z;
      for l:=i+1 to n do
       begin
        z:=a[l,i];
        for j:=i+1 to n+1 do a[l,j]:=a[l,j]-a[i,j]*z;
        a[l,i]:=0;
       end;
      for l:=i-1 downto 1 do
       begin
        z:=a[l,i];
        for j:=i+1 to n+1 do a[l,j]:=a[l,j]-a[i,j]*z;
        a[l,i]:=0;
       end;
    end;
  writeln;
  writeln('Konechnaia matrix : ');out;
  writeln;
  writeln('Korni : ');
  for i:=1 to n do
    writeln ('x', i, '=', a[i,n+1]:3:3);
 readkey;
end.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог