Консультация № 136839
14.05.2008, 20:08
0.00 руб.
0 1 1
Помогите пожалуста с задачей: Тема подпрограммы. Даны 6 элементные вещественные векторы х и у, и квадратные матрицы шестого порядка А, В и С. Вычислить: (Ах,Ву)+(Сх,у)(х,Ву). Спасибо

Обсуждение

давно
Профессор
401888
1232
15.05.2008, 15:06
общий
это ответ
Здравствуйте, Михайлов Евгений Юрьевич!
Вообщем немного почитал и подумал и пришел к следующим выводам.
1. (Ах,Вх) вовсе не означает обязательно умножение, перед скобками должно стоять указание на действие в виде служебного слова. Но если вы говорите, что умножение, будем делать умножение.
2. Результатом Ах, Ву, Сх будет матрица [6,1].
3. Результатом (Ах,Ву), (Сх,у), (х,Ву) будет произведение матрицы [6,1] на матрицу [1,6] т.е. число.
4. Дальше идут действия с числами.
По программе.
- для создания матриц и векторов, а также умножения матрицы на вектор сделал процедуры, чтобы не повторяться по 2-3 раза.
- матрицы и вектора заполнил числами из интервала [1,8], т.к. даже 10 иногда дает выход за пределы типа Longint.
- переменным дал обозначения, чтобы было понятно, какое действие делаем.
Код в приложении, если что непонятно, пишите.


Приложение:
uses crt;const n=6;type Tvect=array[1..n]of integer; Tmatr=array[1..n] of Tvect;var a,b,c:Tmatr; x,y,ax,by,cx:Tvect; axby,cxy,xby:longint; sum:real; i,j:integer;Procedure VvMatr(var m:Tmatr);beginfor i:=1 to n do begin for j:=1 to n do begin m[i,j]:=random(8)+1; write(m[i,j]:3); end; writeln; end;end;Procedure VvVect(var m:Tvect);beginfor i:=1 to n do begin m[i]:=random(10)+1; write(m[i],‘ ‘); end;end;Procedure PrzMatVec(m:Tmatr;p:Tvect;var q:Tvect);beginfor i:=1 to n do begin q[i]:=0; for j:=1 to n do begin q[i]:=q[i]+m[i,j]*p[j]; end; write(q[i],‘ ‘); end;writeln;end;beginclrscr;randomize;Writeln(‘Matrica A:‘);VvMatr(a);readln;Writeln(‘Vector x:‘);VvVect(x);readln;Writeln(‘Vector A*x:‘);PrzMatVec(a,x,ax);readln;Writeln(‘Matrica B:‘);VvMatr(b);readln;Writeln(‘Vector y:‘);VvVect(y);readln;Writeln(‘Vector B*y:‘);PrzMatVec(b,y,by);readln;Writeln(‘Matrica C:‘);VvMatr(c);readln;Writeln(‘Vector x:‘);VvVect(x);readln;Writeln(‘Vector C*x:‘);PrzMatVec(c,x,cx);readln;axby:=0;for i:=1 to n doaxby:=axby+ax[i]*by[i];writeln(‘axby=‘,axby);cxy:=0;for i:=1 to n docxy:=cxy+cx[i]*y[i];writeln(‘cxy=‘,cxy);xby:=0;for i:=1 to n doxby:=xby+x[i]*by[i];writeln(‘xby=‘,xby);sum:=axby+cxy/xby;writeln(‘Rezultat=‘,sum:6:2);readlnend.
Форма ответа