Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2014, 22:45   #41
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от now2 Посмотреть сообщение
давайте заполение A и В хоть
извольте.

Код:
Program b6;
Uses crt;
const n=3;
Var
  A,L,Lt: array[1..n,1..n] of real;
  B,X,y: array[1..n] of real; sum:real;

procedure Fill_A_B;
var i, j : integer;
Begin
   For i:=1 to n do
      For j:=1 to n do
         A[i,j]:=-1/(i+j);
   For i:=1 to n do Begin
      Sum:=0;
      For j:=1 to n do Sum:=sum+a[i,j];
      B[i]:=sum;
   End;
End;

procedure Print_A;
var i, j : integer;
Begin
   WriteLn('Matrix A:');
   For i:=1 to n do begin
      For j:=1 to n do
         Write(A[i,j]:3:5,' ');
      WriteLn;
   end;
end;

procedure Print_B;
var i : integer;
Begin
   WriteLn('Matrix B:');
   For i:=1 to n do
         Write(B[i]:3:5,' ');
      WriteLn;
end;

procedure PrintX;
var i : integer;
Begin
  Writeln('Ðåçóëüòàò: ');
  For i:=1 to n do
     WriteLN('x',i,'=', X[i]);
End;


Begin
  ClrScr;

  Fill_A_B;
  
  Print_A;
  
  Print_B;
  
end.
Скажите, а Вы метод Холецкого внимательно читали/разбирали?
Посмотрите, что написано у Вас же в пост #11

если a11 > 0 тогда находим L11 как корень квадратный из a11,
ИНАЧЕ - метод неприменим, конец алгоритма
очевидно, что по заданной формуле
Aij = -1 / (i+j) получаем такую матрицы A и B заполенные строго отрицательными значениями. формально - метод Холецкого к ним не применим. Практически, думаю, что можно умножить все элементы матрицы A и B на минус единицу. Вроде бы, умножение на одно число не нарушает равенства системы уравнения!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.05.2014, 22:47   #42
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
извольте.

Код:
Program b6;
Uses crt;
const n=3;
Var
  A,L,Lt: array[1..n,1..n] of real;
  B,X,y: array[1..n] of real; sum:real;

procedure Fill_A_B;
var i, j : integer;
Begin
   For i:=1 to n do
      For j:=1 to n do
         A[i,j]:=-1/(i+j);
   For i:=1 to n do Begin
      Sum:=0;
      For j:=1 to n do Sum:=sum+a[i,j];
      B[i]:=sum;
   End;
End;

procedure Print_A;
var i, j : integer;
Begin
   WriteLn('Matrix A:');
   For i:=1 to n do begin
      For j:=1 to n do
         Write(A[i,j]:3:5,' ');
      WriteLn;
   end;
end;

procedure Print_B;
var i : integer;
Begin
   WriteLn('Matrix B:');
   For i:=1 to n do
         Write(B[i]:3:5,' ');
      WriteLn;
end;

procedure PrintX;
var i : integer;
Begin
  Writeln('Ðåçóëüòàò: ');
  For i:=1 to n do
     WriteLN('x',i,'=', X[i]);
End;


Begin
  ClrScr;

  Fill_A_B;
  
  Print_A;
  
  Print_B;
  
end.
Скажите, а Вы метод Холецкого внимательно читали/разбирали?
Посмотрите, что написано у Вас же в пост #11

если a11 > 0 тогда находим L11 как корень квадратный из a11,
ИНАЧЕ - метод неприменим, конец алгоритма
очевидно, что по заданной формуле
Aij = -1 / (i+j) получаем такую матрицы A и B заполенные строго отрицательными значениями. формально - метод Холецкого к ним не применим. Практически, думаю, что можно умножить все элементы матрицы A и B на минус единицу. Вроде бы, умножение на одно число не нарушает равенства системы уравнения!
если честно я этот метод вообще не поняла особенно с этими L
now2 вне форума Ответить с цитированием
Старый 29.05.2014, 22:51   #43
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

а почему везде минусы и что означает что вывило две матрицы?
Изображения
Тип файла: jpg Безымянный99.jpg (7.6 Кб, 136 просмотров)
now2 вне форума Ответить с цитированием
Старый 29.05.2014, 22:52   #44
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

а ответ где ?
now2 вне форума Ответить с цитированием
Старый 29.05.2014, 22:55   #45
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

БЛИН ПРОГА ЗАПУТАННАЯ ВСЯ . А ДЛЯ ЭТОЙ НЕ МОГИ БЫ ВЫ НАПИСАТЬ А И В ОПИСАНИЕ ?

Код:
program kursovaya;
uses crt;
const p = 10;
type mattype = array[1..p, 1..p] of double;
  mattype1 = array[1..p] of double;
{Процедура для вывода матрицы на экран}

procedure writemat(var a: mattype; n, m: byte);
var i, j: byte;
begin
  writeln;
  for i := 1 to n do
  begin
    for j := 1 to m do
      write(a[i, j]: 7: 3, ' ');
    writeln
  end;
end;
{Процедура для ввода значений элементов матрицы}

procedure inputmat(var a: mattype; var d: mattype1; var n: byte);
var i, j: byte;
begin
  writeln;
  write('Введите размер матрицы = ');
  readln(n);
  writeln;
  writeln('Введите матрицу:');
  writeln;
  for i := 1 to n do
    for j := 1 to n do
      read(a[i, j]);
  writeln;
  writeln('Введите свободные коэффициенты:');
  writeln;
  for i := 1 to n do
    readln(d[i]);
  writeln;
end;
{Процедура получения двух треугольных матриц, произведение которых равно исходной матрице}

procedure getBnC(var a, b, c: mattype; n: byte);
var k, i, a1, j: byte;
begin
  for k := 1 to n do
    for i := 1 to n do
    begin
      if k = i then c[k, i] := 1
      else c[k, i] := 0;
      b[k, i] := 0;
    end;
  for a1 := 1 to n do
  begin
    if a1 = 1 then
    begin
      for i := 1 to n do
        b[i, 1] := a[i, 1];
      for i := 2 to n do
        c[1, i] := a[1, i] / b[1, 1];
    end
    else
    begin
      k := a1;
      for i := a1 to n do
      begin
        b[i, k] := a[i, k];
        for j := 1 to k - 1 do
          b[i, k] := b[i, k] - b[i, j] * c[j, k];
      end;
      i := a1;
      for k := i + 1 to n do
      begin
        c[i, k] := a[i, k];
        for j := 1 to i - 1 do
          c[i, k] := c[i, k] - b[i, j] * c[j, k];
        c[i, k] := c[i, k] / b[i, i];
      end;
    end;
  end;
end;

procedure otvet(var b, c: mattype; d: mattype1; n: byte);
var x, y, s: mattype1;
  i, j, k: byte;
  w, q: double;
  y1, x1: mattype;
begin
  for i := 1 to n do
    if i = 1 then y[i] := d[i] / b[i, i]
    else
    begin
      w := 0;
      for k := 1 to i - 1 do
      begin
        y1[i, k] := w + b[i, k] * y[k];
        w := y1[i, k];
      end;
      y[i] := (d[i] - w) / b[i, i];
    end;
  for i := n downto 1 do
    if i = n then x[i] := y[i]
    else
    begin
      q := 0;
      for k := i + 1 to n do
      begin
        x1[i, k] := q + c[i, k] * x[k];
        q := x1[i, k];
      end;
      x[i] := y[i] - q;
    end;
  writeln;
  writeln('Ответ X:');
  writeln;
  for i := 1 to n do
    writeln('x[', i, ']= ', x[i]: 1: 4);
  writeln;
end;

{Основная программа}
var a, a1, c, b: mattype;
  d: mattype1;
  n: byte;
begin
  clrscr;
  writeln('метод Холецкого ');
  InputMat(a, d, n); {Ввод матрицы A }
  getBnC(a, b, c, n); { Получение треугольных матриц B u C}
  Writeln('Матрица B: ');
  writemat(b, n, n);
  readln;
  Writeln('Матрица C: ');
  writemat(c, n, n);
  otvet(b, c, d, n);
  readln;
end.
________
ВЫ ЧТО, НЕ ПОНИМАЕТЕ, ЧТО КОД НА ФОРУМЕ НУЖНО ОФОРМЛЯТЬ????!!!

Исходный код программы нужно ОБЯЗАТЕЛЬНО оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)

Не забывайте об этом!!!!!


Модератор.

Последний раз редактировалось Serge_Bliznykov; 29.05.2014 в 22:59.
now2 вне форума Ответить с цитированием
Старый 29.05.2014, 23:03   #46
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

замените процедуру inputmat
на такую:
Код:
{Процедура для ввода значений элементов матрицы}
procedure inputmat(var a: mattype; var d: mattype1; var n: byte);
var i, j: byte;
  Sum : double;
begin
  n := 3;
  for i := 1 to n do
    for j := 1 to n do
         A[i,j]:=1/(i+j);

   For i:=1 to n do Begin
      Sum:=0.0;
      For j:=1 to n do Sum:=sum+a[i,j];
      d[i]:=sum;
   End;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.05.2014, 23:12   #47
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

спасибо большое , а не поясните матрицы B и C это что за матрицы
now2 вне форума Ответить с цитированием
Старый 29.05.2014, 23:17   #48
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

и как ввести точность в обе программки ? просто где константа написать e=0.001? к примеру
now2 вне форума Ответить с цитированием
Старый 29.05.2014, 23:19   #49
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от now2 Посмотреть сообщение
спасибо большое , а не поясните матрицы B и C это что за матрицы
не знаю точно. думаю, что это какие-то промежуточные матрицы, получаемые при разложении...
А какие конкретно - не скажу. Лень разбираться...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.05.2014, 07:36   #50
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не знаю точно. думаю, что это какие-то промежуточные матрицы, получаемые при разложении...
А какие конкретно - не скажу. Лень разбираться...
а точность как ввести?
now2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа выдает ошибку. Паскаль Тетрадь Помощь студентам 0 29.03.2014 16:12
почему выдает ошибку паскаль? Program3.pas(30) : Встречено 'and', а ожидался оператор Julia1 Паскаль, Turbo Pascal, PascalABC.NET 13 08.02.2014 21:28
выдает ошибку ВрединкаИринка Общие вопросы Delphi 2 18.06.2012 20:46
выдает ошибку (C++) Carter Помощь студентам 2 10.03.2012 17:37
Написал прогу в паскаль в ответ после запуска выдает ошибку.Что не так? sawel23 Паскаль, Turbo Pascal, PascalABC.NET 5 27.05.2010 15:37