|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.03.2010, 15:29 | #1 |
Регистрация: 05.03.2010
Сообщений: 6
|
какой будет код вычисления для D
Даны две матрицы А размера n*m B размера m*n, состоящие из целых елементов. Если количество z(A) нулевых элементов матрицы А, больше количества z(B) нулевых элементов матрицы B, то вычислить новую матрицу С по формуле C=z(A)*A*B^T(транспонированная) +z(B)*(A*B^T)^2, иначе вычислить новую матрицу D по формуле D по формуле D=z(B)*((A^T)*B)^2+(A^T)*B*z(A)
type matrix = array[1..100,1..100] of integer; {нахождение количества 0} function z(a:matrix;k,l:integer):integer; var c,i,j:integer; begin c:=0; for I := 1 to k do for J := 1 to l do if a[i,j]=0 then c:=c+1; end; {умножение матрицы на число } function scmult(a:matrix;k,l:integer;sc:inte ger) :matrix; var i,j:integer; b:matrix; begin for I := 1 to k do for J := 1 to l do b[i,j]:=a[i,j]*sc; end; {ввод матрицы} procedure Vvod(var mt:matrix;x,y:byte); var i,j:byte; begin for i:=1 to x do for j:=1 to y do mt[i,j]:=random(x*y); end; {вывод матриц на экран} procedure Vyvod(var mt:matrix;x,y:byte; var i,j:byte; begin for i:=1 to x do begin for j:=1 to y do write(mt[i,j]:4); writeln; end; end; {траеспонирование матриц} procedure Trans(m1:matrix;x,y:byte;var m2:matrix); var i,j:byte; begin for i:=1 to y do for j:=1 to x do m2[i,j]:=m1[j,i]; end; {умножение матриц} procedure Umn(m1,m2:matrix;x,y:byte;var m3:matrix); var i,j,k:byte; begin for k:=1 to x do for j:=1 to x do begin m3[k,j]:=0; for i:=1 to y do m3[k,j]:=m3[k,j]+m1[k,i]*m2[i,j]; end; end; {возведение матриц в квадрат} procedure Umn2(m1:matrix;x,y:byte;var m3:matrix); var i,j,k:byte; begin for k:=1 to x do for j:=1 to x do begin m3[k,j]:=0; for i:=1 to y do m3[k,j]:=m3[k,j]+m1[k,i]*m1[i,j]; end; end; VAR za, zb : Integer; m, n : Integer; A, B, C, D, E : Matrix; BEGIN n:=4; m:=5; Vvod(A,n,m); Vvod(B,n,m); WriteLn('Matrix A:'); Vyvod(A,n,m); WriteLn('Matrix B:'); Vyvod(B,n,m); za:=z(A, n, m); zb:=z(B, n, m); WriteLn('z(A)=', za); WriteLn('z(B)=', zb); if za>zb then begin {C:=za*(A*B^T)+zb*(A*B^T)^2} {D:=(A*B^T)} Trans(B,n,m, C); Umn(A,C,m,n, D); {C:=za*D} scmult(D,n,n,za, C); {E:=D^2} Umn2(D,n,n, E); {D:=zb*E} scmult(E,n,n,zb, D); {C:=C+D} SumMatr(C, D, n,n, C); WriteLn('Матрица C'); Vyvod(C, n,n); end else begin |
22.03.2010, 15:37 | #2 |
Форумчанин
Регистрация: 10.02.2010
Сообщений: 137
|
сорри, но для чего вообще нужна эта прога??? чё-то я из условия вообще ничего не понял?
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Какой код клавиши?? | RAVAL)) | Общие вопросы Delphi | 10 | 28.10.2015 12:24 |
составить функцию для вычисления значения y=P(x) многочлена для заданного аргумента x | KASPEER | Помощь студентам | 2 | 12.01.2010 15:03 |
Если y – вещественная переменная, а n – целая, то оператор присваивания какой будет иметь вид? | Naruto63 | Помощь студентам | 6 | 23.11.2009 16:30 |
Имеется ли у вас какой ассемблерный код? | rusell | Помощь студентам | 5 | 04.11.2009 16:11 |
Что будет собой прдставлять этот код: | Pirotexnik | Общие вопросы Delphi | 3 | 27.03.2009 13:30 |