Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите! (задача с матрицей)

Автор: Zolushka 1.04.2006 2:16

!help.gif Помогите !mol1.gifкто-нибудь решить задачку по программированию!!!! !fie.gif
Даны квадратная матрица А порядка m, натуральное число n, действительные числа pn, pn-1,..., p0. Получить матрицу pnAn + pn-1An-1 + ... + p1A + p0E, где E – единичная матрица порядка m. (n это индексы у р, а у А это степень, просто не знаю как тут это написать)
Если я не принесу сделанную эту задачку мне можно вешаться, сделайте плииииииииииииз!!!

ЗЫ Мне там нужно чтоб использовались процедуры и функции. (Но вообще то решите хоть как-то!!!!!)

Автор: volvo 1.04.2006 2:26

Zolushka, ты относишься к исключениям из правил?

Цитата(Правила Раздела)
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!


Тебе что, ссылку привести на задачу из FAQ? Сам не в состоянии нажать кнопку "Поиск"?


Вот решенная задача:
http://forum.pascal.net.ru/index.php?s=&showtopic=2694&view=findpost&p=38417

Автор: Zolushka 1.04.2006 2:36

Большое спасибо! blink.gif Только не можешь хоть не много объяснить, что там нужно сделать, как для тупых.
Честно признаюсь не искала в поиске, потому что, что искать не понимаю! Задача какая-то тупая. Или я... wacko.gif
Объясни пожалуста, что обозначают индексы и степень? Пожалуйста!!! !mol1.gif !mol1.gif !mol1.gif

Автор: мисс_граффити 1.04.2006 23:47

Цитата(volvo @ 31.03.2006 23:26) *

Сам не в состоянии нажать кнопку "Поиск"?

СамА, судя по нику.

Zolushka
Индексы... ну смотри: у тебя много чисел p. ты их нумеруешь: р первое, р второе, р третье.... вот 1,2,3 и есть индексы.
Обычно это делается так: массив называют р, а индексы - номера элементов.

Степени проходят в пятом классе... 2*2=2^2, 2*2*2=2^3, 2*2*2*2=2^4 и так далее (^ обозначает степень).
то же самое и с матрицами. сколько раз их перемножить - такая степень и получится.

Автор: Zolushka 2.04.2006 2:50

Цитата
Индексы... ну смотри: у тебя много чисел p. ты их нумеруешь: р первое, р второе, р третье.... вот 1,2,3 и есть индексы.

а в чем зависемость р первого от второго, третьегои тд? то есть если у меня например р1=3, то р2 - ?

Автор: volvo 2.04.2006 2:55

Да нет тут никакой зависимости... Если тебе надо найти многочлен от переменной, то ты просто задаешь НУЖНЫЕ тебе коэффициенты при каждой степени, и вычисляешь, так? То же самое и здесь - ТЫ задаешь те коэффициенты, которые тебе нужны, и программа их вычисляет.

У тебя же в задании явно сказано:

Цитата
Даны квадратная матрица А порядка m, натуральное число n, действительные числа pn, pn-1,..., p0.

Автор: Zolushka 2.04.2006 14:11

Ух, круто, я почти поняла. Спасибо всем!!! give_rose.gif

Автор: Zolushka 2.04.2006 22:48

Ааааааааааа, совсем запуталась. Написала какой-то бред. norespect.gif Помогите мне исправить пожалуйста!!!

Код
Program L1;
const
   N = 5;
   M = 4;
Type
   TMatrix= array [1..M, 1..M] of real;

Procedure MatrixPower(var h:TMatrix; a:TMatrix);
Var
   i,j,k:integer;
Begin
   for i:=1 to m do
    for j:=1 to m do begin
      a[i,j]:=0;
      h[i,j]:=a[i,j]+ a[i,k]*a[k,j];
    end;
end;

Procedure MatrixScale(var h:TMatrix; a:TMatrix; p:real);
var
   i,j,k:integer;
Begin
   For k:=1 to n do begin
    writeln ('Введите действительное число р,k);
    read (p);
   end;
   for i:=1 to m do
    for j:=1 to m do
     h[i,j]:=p* a[i,j];
end;

Procedure MatrixAdd (Var h:TMatrix; a,b:TMatrix);
var
   i,j:integer;
Begin
   for i:=1 to m do
    for j:=1 to m do
    h[i,j]:=a[i,j]+b[i,j];
end;

Procedure MatrixPrint(a:TMatrix);
var
   i,j:integer;
Begin
   for i:=1 to m do Begin
    for j:=1 to m do
      write(a[i,j]:9:2);
    writeln;
   end;
end;


var
   a: TMatrix;
   T,Res: TMatrix;
   i, j: Integer;
BEGIN
   for i:=1 to m do
     for j:=1 to m do
       a[i,j]:=random(20);
   MatrixPrint(a);

   For i:=1 to n do begin
     MatrixPower(T, a);
     MatrixScale(T, T,n);
     MatrixAdd(Res, Res, T);
   end;
   MatrixPrint(Res);
End.

Автор: мисс_граффити 2.04.2006 23:42

Procedure MatrixPower(var h:TMatrix; a:TMatrix); 
Var
i,j,k:integer;
Begin
for i:=1 to m do
for j:=1 to m do begin
a[i,j]:=0;
h[i,j]:=a[i,j]+ a[i,k]*a[k,j];
end;
end;

вот это что должно делать?...

Автор: volvo 2.04.2006 23:58

Zolushka, я дал тебе ссылку НА РЕШЕННУЮ и отлаженную задачу. ЗАЧЕМ тебе понадобилось лезть внутрь процедур и что-то там исправлять??? Недостаточно было просто ввести данные?

А уж коли полезла - извини, но ошибки ищи сама!!!