Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Розрахунок норм вектору

Тип Реферат
Предмет Информатика и программирование
Просмотров
1020
Размер файла
94 б
Поделиться

Ознакомительный фрагмент работы:

Розрахунок норм вектору

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ "КПІ"

ФАКУЛЬТЕТ ПРИКЛАДНОЇ МАТЕМАТИКИ

Кафедра спеціалізованих комп’ютерних систем

КУРСОВА РОБОТА

з дисципліни "Технологія програмування"

Виконав: Семенякін Володимир

Постановка завдання

Розробити програму для розрахунку норм вектору, отриманому по наступній формулі:

, Де A, B, C - матриці й X, Y - вектори.

Теоретичні відомості

Для обрахунку заданої формули необхідно:

a) Написати процедуру[1] множення матриці на матрицю.

b) Написати процедуру сумування матриць.

c) Написати процедуру віднімання векторів.

d) Написати функцію множення матриці на вектор

e) Написати функцію для обчислення евклідової норми вектора.

f) Написати функцію обчислення норми вектора

g) Написати функцію обчислення норми вектора

h) Створити зручний інтерфейс для користувача.

Множення матриць:

Звідки легко бачити, що при множені матриці розмірами NM на матрицю розмірами МК буде отримана матриця розміром NК.

Сумування матриць:

Легко бачити, що задана дія ніяк не впливає на розмірність результуючої матриці. Матриці, що сумуються, мають бути однакових розмінностей.

Множення матриці на вектор:

Аналогічно множенню матриці на матрицю. Другим операндом у такій ситуації виступає матриця розміром М1. В результаті виникає матриця розміром N1, або ж просто вектор з N координатами.

Віднімання векторів:

Обчислення евклідової норми[2]:

Відбувається за наступною формулою:

Частіше всього евклідова норма використовується для обчислення довжини вектора.

Норми й не потребують пояснення. Їх зміст у їх вигляді.

Обґрунтування доцільності використання модулів

Модулі дозволяють використання функцій, процедур й типів для роботи з матрицями і векторами у інших програмах. Отже модульне програмування додає універсальності.

Функції й процедури доцільні, коли виникає багаторазове повторення одних й тих же алгоритмів. Ця курсова робота - як раз той випадок.

Код програми

Код головної програми:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls, ComCtrls, matrix, Menus;

type

TmatrEditor = class (TForm)

Label1: TLabel;

Button2: TButton;

operList: TListView;

l2: TLabel;

objInf: TGroupBox;

matrViev: TStringGrid;

vectViev: TStringGrid;

itemNomb: TEdit;

infLab: TLabel;

Button3: TButton;

GroupBox2: TGroupBox;

Label2: TLabel;

vectorRB: TRadioButton;

matrixRB: TRadioButton;

l4: TLabel;

GroupBox3: TGroupBox;

Button1: TButton;

Button4: TButton;

TEST: TButton;

MainMenu1: TMainMenu;

File1: TMenuItem;

Save1: TMenuItem;

Open1: TMenuItem;

Exit1: TMenuItem;

opViev: TEdit;

GroupBox1: TGroupBox;

plusA: TRadioButton;

minusA: TRadioButton;

multA: TRadioButton;

Button5: TButton;

Button7: TButton;

Button6: TButton;

OpenD: TOpenDialog;

saveD: TSaveDialog;

Label3: TLabel;

procedure Button2Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure matrVievClick (Sender: TObject);

procedure TESTClick (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure operListClick (Sender: TObject);

procedure vectVievClick (Sender: TObject);

procedure vectorRBClick (Sender: TObject);

procedure matrixRBClick (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure itemNombKeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure operListDblClick (Sender: TObject);

procedure Button5Click (Sender: TObject);

procedure Button6Click (Sender: TObject);

procedure Button7Click (Sender: TObject);

procedure Save1Click (Sender: TObject);

procedure Open1Click (Sender: TObject);

procedure itemNombChange (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const maxAct=15;

type matrRec = record

strName: string [20];

case typeOf: (vect,matr) of

matr: (mt: matrix_);

vect: (vt: vector);

end;

matrRecLink = ^matrRec;

var

matrEditor: TmatrEditor;

nowCharCode: byte;

nowMatr: matrix_;

nowVect: vector;

mainList: TList;

nowEl: matrRecLink;

i,j: size;

nowItem: integer;

fl: boolean;

actionArr: array [1. maxAct] of 0.5;

indexArr: array [1. maxAct+1] of 0.60;

sizeOfAction,act: 0.2;

opers: array [1.2] of matrRecLink;

filePath: string [255];

f: file of matrRec;

newItem: TListItem;

implementation

uses Unit3;

{$R *. dfm}

procedure TmatrEditor. Button2Click (Sender: TObject);

begin

newItem: =operList. Items. Add;

newItem. Caption: =char (nowCharCode);

newItem. SubItems. Add ('Vector');

// ------------------------

new (nowEl);

nowEl^. typeOf: =vect;

ziroVect (nowEl^. vt);

nowEl^. strName: =char (nowCharCode);

mainList. Add (nowEl);

// ------------------------

nowCharCode: =nowCharCode+1;

// ------------------------

operList. Enabled: =true;

end;

procedure TmatrEditor. FormCreate (Sender: TObject);

var newItem: TListItem;

begin

mainList: =TList. Create;

nowCharCode: =65;

fl: =true;

sizeOfAction: =0;

end;

procedure TmatrEditor. matrVievClick (Sender: TObject);

begin

itemNomb. Text: =matrViev. Cells [matrViev. Col,matrViev. Row];

infLab. caption: =matrRecLink (mainList [nowItem]) ^. strName+' ['+IntToStr (matrViev. Col+1) +'] ['+IntToStr (matrViev. Row+1) +'] ';

end;

procedure TmatrEditor. TESTClick (Sender: TObject);

begin

transp (nowMatr);

for i: =1 to nmax do

for j: =1 to nmax do

begin

matrViev. Cells [i-1,j-1]: =FloatToStr (nowMatr [i] [j]);

end;

end;

procedure TmatrEditor. Button1Click (Sender: TObject);

var nowRand: real;

begin

if matrRecLink (mainList [nowItem]) ^. typeOf = Matr then

for i: =1 to nmax do

for j: =1 to nmax do

begin

nowRand: = (1-2*random (2)) *random (100) /10;

matrViev. Cells [i-1,j-1]: =FloatToStr (nowRand);

matrRecLink (mainList [nowItem]) ^. mt [i] [j]: =nowRand;

end;

// ---------------------

if matrRecLink (mainList [nowItem]) ^. typeOf = Vect then

for i: =1 to nmax do

begin

nowRand: = (1-2*random (2)) *random (100) /10;

vectViev. Cells [i-1,0]: =FloatToStr (nowRand);

matrRecLink (mainList [nowItem]) ^. vt [i]: =nowRand;

end;

end;

procedure TmatrEditor. operListClick (Sender: TObject);

begin

if nowItem<>-1 then

begin

objInf. Enabled: =true;

nowItem: =operList. ItemIndex;

if matrRecLink (mainList [nowItem]) ^. typeOf=vect then

begin

l4. caption: ='vect';

for i: =1 to nmax do

for j: =1 to nmax do

matrViev. Cells [i-1,j-1]: ='';

for i: =1 to nmax do vectViev. Cells [i-1,0]: =FloatToStr (matrRecLink (mainList [nowItem]) ^. vt [i]);

vectViev. Color: =clWindow;

vectViev. Ctl3D: =true;

vectViev. Enabled: =true;

matrViev. Color: =clScrollBar;

matrViev. Ctl3D: =false;

matrViev. Enabled: =false;

// -----------------------

vectorRB. Checked: =true;

itemNomb. Text: =vectViev. Cells [0,0];

end;

// ==================================================

if matrRecLink (mainList [nowItem]) ^. typeOf=matr then

begin

l4. caption: ='matr';

for i: =1 to nmax do vectViev. Cells [i-1,0]: ='';

for i: =1 to nmax do

for j: =1 to nmax do

matrViev. Cells [i-1,j-1]: =FloatToStr (matrRecLink (mainList [nowItem]) ^. mt [i] [j]);

vectViev. Color: =clScrollBar;

vectViev. Ctl3D: =false;

vectViev. Enabled: =false;

matrViev. Color: =clWindow;

matrViev. Ctl3D: =true;

matrViev. Enabled: =true;

// -----------------------

matrixRB. Checked: =true;

itemNomb. Text: =matrViev. Cells [0,0];

end;

end;

end;

procedure TmatrEditor. vectVievClick (Sender: TObject);

begin

itemNomb. Text: =vectViev. Cells [vectViev. Col,0];

infLab. caption: =matrRecLink (mainList [nowItem]) ^. strName+' ['+IntToStr (vectViev. Col+1) +'] ';

end;

procedure TmatrEditor. vectorRBClick (Sender: TObject);

begin

if matrRecLink (mainList [nowItem]) ^. typeOf = matr then

if MessageDlg ('All matrix information will be lost. Change to vector? ', mtWarning, [mbYes, mbNo], 0) = mrYes then

begin

new (nowEl);

nowEl^. typeOf: =vect;

ziroVect (nowEl^. vt);

nowEl^. strName: =matrRecLink (mainList [nowItem]) ^. strName;

for i: =1 to nmax do

for j: =1 to nmax do

matrViev. Cells [i-1,j-1]: ='';

for i: =1 to nmax do vectViev. Cells [i-1,0]: =FloatToStr (nowEl^. vt [i]);

dispose (mainList [nowItem]);

mainList [nowItem]: =nowEl;

// -----------------------------

vectViev. Color: =clWindow;

vectViev. Ctl3D: =true;

vectViev. Enabled: =true;

matrViev. Color: =clScrollBar;

matrViev. Ctl3D: =false;

matrViev. Enabled: =false;

// ------------------------------

operList. Items [nowItem]. SubItems [0]: ='Vector';

end;

end;

procedure TmatrEditor. matrixRBClick (Sender: TObject);

begin

if matrRecLink (mainList [nowItem]) ^. typeOf = vect then

if MessageDlg ('All vector information will be lost. Change to matrix? ', mtWarning, [mbYes, mbNo], 0) = mrYes then

begin

new (nowEl);

nowEl^. typeOf: =matr;

ziroMatr (nowEl^. mt);

nowEl^. strName: =matrRecLink (mainList [nowItem]) ^. strName;

for i: =1 to nmax do vectViev. Cells [i-1,0]: ='';

for i: =1 to nmax do

for j: =1 to nmax do

matrViev. Cells [i-1,j-1]: =FloatToStr (nowEl^. mt [i] [j]);

dispose (mainList [nowItem]);

mainList [nowItem]: =nowEl;

// --------------------------------

vectViev. Color: =clScrollBar;

vectViev. Ctl3D: =false;

vectViev. Enabled: =false;

matrViev. Color: =clWindow;

matrViev. Ctl3D: =true;

matrViev. Enabled: =true;

// ------------------------------

operList. Items [nowItem]. SubItems [0]: ='Matrix';

end;

end;

procedure TmatrEditor. Button4Click (Sender: TObject);

begin

if matrRecLink (mainList [nowItem]) ^. typeOf = Vect then

begin

ziroVect (matrRecLink (mainList [nowItem]) ^. vt);

for i: =1 to nmax do

vectViev. Cells [i-1,0]: ='0';

end;

// ---------------------

if matrRecLink (mainList [nowItem]) ^. typeOf = Matr then

begin

ziroMatr (matrRecLink (mainList [nowItem]) ^. mt);

for i: =1 to nmax do

for j: =1 to nmax do

matrViev. Cells [i-1,j-1]: ='0';

end;

end;

procedure TmatrEditor. itemNombKeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

var saveVal: real;

begin

if (matrRecLink (mainList [nowItem]) ^. typeOf=vect) and not (Key=46) then

begin

try

// saveVal: =matrRecLink (mainList [nowItem]) ^. vt [vectViev. Col];

matrRecLink (mainList [nowItem]) ^. vt [vectViev. Col]: =StrToFloat (itemNomb. text);

saveVal: =matrRecLink (mainList [nowItem]) ^. vt [vectViev. Col];

vectViev. Cells [vectViev. Col,0]: =itemNomb. text;

except

on EConvertError do

begin

matrRecLink (mainList [nowItem]) ^. vt [vectViev. Col]: =saveVal;

text: =FloatToStr (saveVal);

showMessage ('Put only number! ');

end;

end;

end;

{if matrRecLink (mainList [nowItem]) ^. typeOf=matr then

begin

saveVal: =matrRecLink (mainList [nowItem]) ^. mt [matrViev. Col] [matrViev. Row];

matrRecLink (mainList [nowItem]) ^. mt [matrViev. Col] [matrViev. Row]: =StrToFloatDef (text,saveVal);

text: =FloatToStr (matrRecLink (mainList [nowItem]) ^. mt [matrViev. Col] [matrViev. Row]);

matrViev. Cells [vectViev. Col,vectViev. Row]: =text;

end; }

end;

procedure TmatrEditor. operListDblClick (Sender: TObject);

begin

if (nowItem<>-1) and (sizeOfAction<2) then

begin

if length (opViev. Text) >0 then

begin

if multA. Checked then begin

opViev. Text: =opViev. text+'x'; act: =0; end;

if minusA. Checked then begin

opViev. Text: =opViev. text+'-'; act: =1; end;

if plusA. Checked then begin

opViev. Text: =opViev. text+'+'; act: =2; end;

end;

new (opers [sizeOfAction+1]);

opers [sizeOfAction+1] ^. typeOf: =matr;

for i: =1 to nmax do

for j: =1 to nmax do

opers [sizeOfAction+1] ^. mt [i] [j]: =matrRecLink (mainList [nowItem]) ^. mt [i] [j];

sizeOfAction: =sizeOfAction+1;

opViev. Text: =opViev. text+matrRecLink (mainList [nowItem]) ^. strName;

end;

end;

procedure TmatrEditor. Button5Click (Sender: TObject);

var newItem: TListItem;

begin

// -----------------------------------------

if fl then begin

for nowCharCode: =65 to 67 do

begin

newItem: =operList. Items. Add;

newItem. Caption: =char (nowCharCode);

newItem. SubItems. Add ('Matrix');

// ------------------------

new (nowEl);

nowEl^. typeOf: =matr;

ziroMatr (nowEl^. mt);

nowEl^. strName: =char (nowCharCode);

mainList. Add (nowEl);

// ------------------------

operList. Enabled: =true;

end;

// =========================================

for nowCharCode: =88 to 89 do

begin

newItem: =operList. Items. Add;

newItem. Caption: =char (nowCharCode);

newItem. SubItems. Add ('Vector');

// ------------------------

new (nowEl);

nowEl^. typeOf: =vect;

ziroVect (nowEl^. vt);

nowEl^. strName: =char (nowCharCode);

mainList. Add (nowEl);

// ------------------------

operList. Enabled: =true;

end;

fl: =false;

end;

ziroMatr (nowMatr);

// ==================================================

writeMatr (nowMatr,matrRecLink (mainList [0]) ^. mt);

multMatrToMatr (nowMatr,matrRecLink (mainList [1]) ^. mt,nowMatr);

sumMatr (nowMatr,matrRecLink (mainList [2]) ^. mt,nowMatr);

// --------------------------------------------------

writeVect (nowVect,matrRecLink (mainList [3]) ^. vt);

decVect (nowVect,matrRecLink (mainList [4]) ^. vt,nowVect);

// --------------------------------------------------

multMatrToVect (nowMatr,nowVect,nowVect);

// --------------------------------------------------

for i: =1 to nmax do rezults. rezVect. Cells [i-1,0]: =FloatToStr (nowVect [i]);

rezults. visible: =true;

rezults. Left: =331;

rezults. Top: =222;

// ------------------------

rezults. norm1. Text: =FloatToStr (longOfVect (nowVect));

rezults. norm2. Text: =FloatToStr (absSum (nowVect));

rezults. norm3. Text: =FloatToStr (absMax (nowVect));

end;

procedure TmatrEditor. Button6Click (Sender: TObject);

begin

opViev. Text: ='';

dispose (opers [1]);

dispose (opers [2]);

sizeOfAction: =0;

end;

procedure TmatrEditor. Button7Click (Sender: TObject);

begin

if sizeOfAction=2 then

begin

// ziroMatr (nowMatr);

// ==================================================

// writeMatr (nowMatr,opers [1] ^. mt);

multMatrToMatr (opers [1] ^. mt,opers [2] ^. mt,nowMatr);

for i: =1 to nmax do

for j: =1 to nmax do

rezults. rezMatr. Cells [i-1,j-1]: =FloatToStr (nowMatr [i] [j]);

end;

rezults. visible: =true;

rezults. Left: =331;

rezults. Top: =222;

// -------------------

opViev. Text: ='';

dispose (opers [1]);

dispose (opers [2]);

sizeOfAction: =0;

end;

procedure TmatrEditor. Save1Click (Sender: TObject);

var writeRec: matrRec; var i: integer;

begin

fl: =saveD. Execute;

if fl then

begin

filePath: =saveD. FileName;

assignFile (f,filePath);

rewrite (f);

for i: =0 to mainList. Count-1 do

begin

writeRec: =matrRecLink (mainList [i]) ^;

write (f,writeRec);

end;

end;

end;

procedure TmatrEditor. Open1Click (Sender: TObject);

var writeRec: matrRec;

begin

fl: =openD. Execute;

operList. Clear;

mainList. Clear;

if fl then

begin

filePath: =openD. FileName;

assignFile (f,filePath);

reset (f);

while not (eof (f)) do

begin

new (nowEl);

read (f,nowEl^);

mainList. Add (nowEl);

newItem: =operList. Items. Add;

newItem. Caption: =nowEl^. strName;

if nowEl^. typeOf=vect then

newItem. SubItems. Add ('Vector')

else

newItem. SubItems. Add ('Matrix');

if operList. Items. Count>0 then

nowItem: =0;

operList. Enabled: =true;

end;

end;

end;

procedure TmatrEditor. itemNombChange (Sender: TObject);

var saveVal: real;

begin

if matrRecLink (mainList [nowItem]) ^. typeOf=matr then

begin

saveVal: =matrRecLink (mainList [nowItem]) ^. mt [matrViev. Col+1,matrViev. Row+1];

try

matrRecLink (mainList [nowItem]) ^. mt [matrViev. Col+1,matrViev. Row+1]: =StrToFloat (itemNomb. Text);

matrViev. Cells [matrViev. Col,matrViev. Row]: =FloatToStr (matrRecLink (mainList [nowItem]) ^. mt [matrViev. Col+1,matrViev. Row+1]);

except

on EConvertError do begin

matrRecLink (mainList [nowItem]) ^. mt [matrViev. Col+1,matrViev. Row+1]: =saveVal;

matrViev. Cells [matrViev. Col,matrViev. Row]: =FloatToStr (saveVal);

itemNomb. Text: =FloatToStr (saveVal);

end;

end;

end;

if matrRecLink (mainList [nowItem]) ^. typeOf=vect then

begin

saveVal: =matrRecLink (mainList [nowItem]) ^. vt [vectViev. Col+1];

try

matrRecLink (mainList [nowItem]) ^. vt [vectViev. Col+1]: =StrToFloat (itemNomb. Text);

Label3. Caption: =FloatToStr (vectViev. Col);

vectViev. Cells [vectViev. Col,vectViev. Row]: =FloatToStr (matrRecLink (mainList [nowItem]) ^. vt [vectViev. Col+1]);

except

on EConvertError do begin

showMessage ('Convert error! ');

matrRecLink (mainList [nowItem]) ^. vt [vectViev. Col+1]: =saveVal;

vectViev. Cells [vectViev. Col,vectViev. Row]: =FloatToStr (saveVal);

itemNomb. Text: =FloatToStr (saveVal);

end;

end;

end;

end;

end.

Код модуля "MATRIX":

unit matrix;

interface

const

nmax = 10;

type

size = 1. nmax;

vector = array [size] of real;

matrix_ = array [size,size] of real;

// Vector working ===============================

procedure writeVect (var op1: vector; op2: vector);

procedure ziroVect (var op1: vector);

// - ----------- - ------------------------------

procedure sumVect (op1,op2: vector; var rez: vector);

procedure decVect (op1,op2: vector; var rez: vector);

procedure multVectToNomb (var op1: vector; nomb: real);

function multVectToVect (op1,op2: vector): real;

// NORMS - --

function longOfVect (op1: vector): real;

function absSum (op1: vector): real;

function absMax (op1: vector): real;

// ============== ================================

// matrix_ working ================================

// ============== ================================

procedure writeMatr (var op1: matrix_; op2: matrix_);

procedure ziroMatr (var op1: matrix_);

// - ----------- - ------------------------------

procedure sumMatr (op1,op2: matrix_; var rez: matrix_);

procedure decMatr (op1,op2: matrix_; var rez: matrix_);

procedure multMatrToNomb (var op1: matrix_; nomb: real);

procedure multMatrToVect (op1: matrix_; op2: vector; var rez: vector);

procedure multMatrToMatr (op1,op2: matrix_; var rez: matrix_);

procedure transp (var op1: matrix_);

// NORMS - --

function longOfMatr (op1: matrix_): real;

function ijMaxSum (op1: matrix_): real;

function jiMaxSum (op1: matrix_): real;

implementation

// =============== HELP FUNCTIONS ================

// ------------ - writeVect - -------------------

procedure writeVect (var op1: vector; op2: vector);

var i: size;

begin

for i: =1 to nmax do op1 [i]: =op2 [i];

end;

// ------------ - writeMatr - -------------------

procedure writeMatr (var op1: matrix_; op2: matrix_);

var i,j: size;

begin

for i: =1 to nmax do

for j: =1 to nmax do

op1 [i] [j]: =op2 [i] [j];

end;

// ------------- - ziroVect - -------------------

procedure ziroVect (var op1: vector);

var i: size;

begin

for i: =1 to nmax do op1 [i]: =0;

end;

// ------------- - ziroMatr - -------------------

procedure ziroMatr (var op1: matrix_);

var i,j: size;

begin

for i: =1 to nmax do

for j: =1 to nmax do

op1 [i] [j]: =0;

end;

// =================================================

// ------------- - sumVect - --------------------

procedure sumVect (op1,op2: vector; var rez: vector);

var i: size;

begin

for i: =1 to nmax do rez [i]: =op1 [i] +op2 [i];

end;

// ------------- - decVect - --------------------

procedure decVect (op1,op2: vector; var rez: vector);

var i: size;

begin

for i: =1 to nmax do rez [i]: =op1 [i] - op2 [i];

end;

// --------- - multVectToNomb - -----------------

procedure multVectToNomb (var op1: vector; nomb: real);

var i: size;

begin

for i: =1 to nmax do op1 [i]: =op1 [i] *nomb;

end;

// ------------ - longOfVect - ------------------

function longOfVect (op1: vector): real;

var i: size; tmpVal: real;

begin

tmpVal: =0;

for i: =1 to nmax do tmpVal: =tmpVal+op1 [i] *op1 [i];

longOfVect: =sqrt (tmpVal);

end;

// --------- - multVectToVect - -----------------

function multVectToVect (op1,op2: vector): real;

var i: size; tmpVal: real;

begin

tmpVal: =0;

for i: =1 to nmax do tmpVal: =tmpVal+op1 [i] *op2 [i];

multVectToVect: =tmpVal;

end;

// ------------- - absSum - --------------------

function absSum (op1: vector): real;

var i: size; tmpVal: real;

begin

tmpVal: =0;

for i: =1 to nmax do tmpVal: =tmpVal+abs (op1 [i]);

absSum: =tmpVal;

end;

// ------------- - absMax - -------------------

function absMax (op1: vector): real;

var i: size; tmpVal: real;

begin

tmpVal: =op1 [1];

for i: =2 to nmax do if op1 [i] >tmpVal then tmpVal: =op1 [i];

absMax: =tmpVal;

end;

// ================================================

// =============== matrix_ ================

// ================================================

// ------------- - sumMatr - ------------------

procedure sumMatr (op1,op2: matrix_; var rez: matrix_);

var i,j: size;

begin

for i: =1 to nmax do

for j: =1 to nmax do

rez [i] [j]: =op1 [i] [j] +op2 [i] [j];

end;

// ------------- - decMatr - ------------------

procedure decMatr (op1,op2: matrix_; var rez: matrix_);

var i,j: size;

begin

for i: =1 to nmax do

for j: =1 to nmax do

rez [i] [j]: =op1 [i] [j] - op2 [i] [j];

end;

// ------------- - multMatrToNomb - ------------------

procedure multMatrToNomb (var op1: matrix_; nomb: real);

var i,j: size;

begin

for i: =1 to nmax do

for j: =1 to nmax do

op1 [i] [j]: =op1 [i] [j] *nomb;

end;

// ------------- - multMatrToVect - ------------------

procedure multMatrToVect (op1: matrix_; op2: vector; var rez: vector);

var i,j: size; tmpVal: real;

begin

for i: =1 to nmax do

begin

tmpVal: =0;

for j: =1 to nmax do

tmpVal: =tmpVal+op1 [i] [j] *op2 [j];

rez [i]: =tmpVal;

end;

end;

// ------------- - multMatrToMatr - ------------------

procedure multMatrToMatr (op1,op2: matrix_; var rez: matrix_);

var i,j,j1: size; tmpVal: real;

begin

for i: =1 to nmax do

for j1: =1 to nmax do

begin

tmpVal: =0;

for j: =1 to nmax do

tmpVal: =tmpVal+op1 [i] [j] *op2 [j] [j1];

rez [i] [j1]: =tmpVal;

end;

end;

// ------------------ - transp - ---------------------

procedure transp (var op1: matrix_);

var i,j: size; tmpVal: real;

begin

for i: =1 to nmax do

for j: =i+1 to nmax do

begin

tmpVal: =op1 [i] [j];

op1 [i] [j]: =op1 [j] [i];

op1 [j] [i]: =tmpVal;

end;

end;

// ---------------- - longOfMatr - -------------------

function longOfMatr (op1: matrix_): real;

var i,j: size; tmpVal: real;

begin

tmpVal: =0;

for i: =1 to nmax do

for j: =1 to nmax do

tmpVal: =tmpVal+op1 [i] [j] *op1 [i] [j];

longOfMatr: =sqrt (tmpVal);

end;

// ----------------- - ijSumMax - --------------------

function ijMaxSum (op1: matrix_): real;

var i,j: size; tmpVal1,tmpVal2: real;

begin

for j: =1 to nmax do

tmpVal2: =tmpVal2+op1 [i] [j];

for i: =2 to nmax do

begin

tmpVal1: =0;

for j: =1 to nmax do

tmpVal1: =tmpVal1+op1 [i] [j];

if tmpVal1>tmpVal2 then

tmpVal2: =tmpVal1;

end;

ijMaxSum: =tmpVal2;

end;

// ----------------- - jiMaxSum - --------------------

function jiMaxSum (op1: matrix_): real;

var i,j: size; tmpVal1,tmpVal2: real;

begin

for i: =1 to nmax do

tmpVal2: =tmpVal2+op1 [i] [j];

for j: =2 to nmax do

begin

tmpVal1: =0;

for i: =1 to nmax do

tmpVal1: =tmpVal1+op1 [i] [j];

if tmpVal1>tmpVal2 then

tmpVal2: =tmpVal1;

end;

jiMaxSum: =tmpVal2;

end;

end.

Інтерфейс програми

Перевірка програми

Матриця А

програма вектор матриця інтерфейс

Матриця В

Матриця С

Вектор Х

Вектор Y

Результуючій вектор

Евклідова норма: 206,434591820266

: 581,39

: 116


[1] Усі дії над матрицями та векторами, результатами яких не є скалярне значення треба робити з допомогою процедур, адже функція не може передавати складну структуру даних у якості результату.

[2]У найбільш широкому змісті нормою у лінійній алгебрі називається деяка функція, що ставить у відповідність матриці (вектору) деяке число (скаляр).


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156492
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 688 оценок star star star star star
среднее 4.9 из 5
РГУ им.Косыгина Текстильный интитут
Рекомендую данного исполнителя! Все что нужно было доработать - доработал без всяких пробл...
star star star star star
ТУСУР
Отличная работа. Рекомендую Марину, как отзывчивого и быстрого в работе исполнителя. Спасибо!
star star star star star
БПОУ ОО "Орловский базовый медицинский колледж"
Более чем досрочно. Задание выполнено в полном объеме, всё отлично. Цена - АДЕКВАТНАЯ!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Задание 4.1: Составить первичные документы

Лабораторная, Бухгалтерский учет

Срок сдачи к 17 дек.

только что

Написать отчет о прохождении производственной практики

Отчет по практике, Менеджмент

Срок сдачи к 26 дек.

9 минут назад

случай). Задача 1. Построить линию пересечения многогранника и

Решение задач, Начертательная геометрия

Срок сдачи к 16 дек.

10 минут назад

Дописать раздел 2 (расчетный) отчета по практике

Отчет по практике, Управление проектами

Срок сдачи к 14 дек.

10 минут назад

Практическая работа

Решение задач, Технология машиностроения

Срок сдачи к 31 дек.

10 минут назад

Сделать небольшие расчеты по разработке стенда

Решение задач, Проектирование металлических конструкций

Срок сдачи к 14 дек.

12 минут назад

Рещить все задания, построить графики и дать пояснения

Лабораторная, Физико химические процессы получения функциональных материалов

Срок сдачи к 15 дек.

12 минут назад

Выполнить курсовую работу

Курсовая, Стратегический менеджмент

Срок сдачи к 15 дек.

12 минут назад
12 минут назад

Разработать или модернизировать указанное количество конструкций

Лабораторная, Инженерная графика

Срок сдачи к 17 дек.

12 минут назад

Срочное выполнение работы. Имеются данные

Лабораторная, Электрические сети и системы

Срок сдачи к 12 дек.

12 минут назад

Создайте restful api с использованием django rest framework

Решение задач, Языки и среды разработки Интернет ресурсов

Срок сдачи к 21 дек.

12 минут назад

W. Shakespeare: one of the greatest mysteries in the modern world

Реферат, Лингвострановедение

Срок сдачи к 16 дек.

12 минут назад

Чертеж в autocad

Чертеж, Архитектура

Срок сдачи к 8 янв.

12 минут назад

Решить задания

Контрольная, Мат анализ

Срок сдачи к 14 дек.

12 минут назад

Макроэкономика

Курсовая, Макроэкономика

Срок сдачи к 15 дек.

12 минут назад

Выполнить задание

Контрольная, Геометрия

Срок сдачи к 13 дек.

12 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно