Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Умножение матрицы на вектор

КонтрольнаяПомощь в написанииУзнать стоимостьмоей работы

Получаемые бинарные файлы могут иметь достаточно большой размер из-за того, что включают в себя отладочную информацию для использования в отладчикe gdb (GNU Debugger). Компилятор имеет настройку для удаления отладочной информации из исполняемого файла (-Xs), но из-за ошибки в компиляторе FPC до версии 2.0.4 она работала некорректно. Для удаления отладочной информации также можно воспользоваться… Читать ещё >

Умножение матрицы на вектор (реферат, курсовая, диплом, контрольная)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Кафедра вычислительной математики и информатики КУРСОВАЯ РАБОТА Умножение матрицы на вектор Работу выполнил _____________________________ Е. И. Сухан Факультет математики и компьютерных наук, группа 26 В Специальность 10 200.62 Математика и компьютерные науки Научный руководитель ________________________________ Г. Г. Кравченко Краснодар 2013

Lazarus — свободная среда разработки программного обеспечения для компилятора Free Pascal (часто используется сокращение FPC— свободно распространяемый компилятор языка программирования Pascal) на языке Object Pascal. Интегрированная среда разработки предоставляет возможность кроссплатформенной разработки приложений в Delphi-подобном окружении. На данный момент является единственным инструментом быстрой разработки приложений (RAD), позволяющим Delphi-программистам создавать приложения с графическим интерфейсом для Linux (и других не-Windows) систем.

Позволяет достаточно несложно переносить Delphi-программы с графическим интерфейсом в различные операционные системы: Linux, FreeBSD, Mac OS X, Microsoft Windows.

Функции:

Основан на библиотеке визуальных компонентов Lazarus Component Library (LCL). В настоящее время практически полностью поддерживает виджеты Win32, GTK1, GTK2, Carbon, Qt. В разработке находятся виджеты WinCE.

· Поддерживает преобразование проектов Delphi

· Реализован основной набор элементов управления

· Редактор форм и инспектор объектов максимально приближены к Delphi

· Интерфейс отладки (используется внешний отладчик GDB)

· Простой переход для Delphi программистов благодаря близости LCL к VCL

· Полностью юникодный (UTF-8) интерфейс и редактор и поэтому отсутствие проблем с портированием кода, содержащего национальные символы

· Мощный редактор кода, включающий систему подсказок, гипертекстовую навигацию по исходным текстам, автозавершение кода и рефакторинг

· Форматирование кода «из коробки», используя механизмы Jedi Code Format

· Поддержка двух стилей ассемблера: Intel и AT&T (поддерживаются со стороны компилятора)

· Поддержка множества типов синтаксиса Pascal: Object Pascal, Turbo Pascal, Mac Pascal, Delphi (поддерживаются со стороны компилятора)

· Имеет собственный формат управления пакетами

· Авто сборка самого себя (под новую библиотеку виджетов) нажатием одной кнопки

· Поддерживаемые для компиляции ОС: Linux, Microsoft Windows (Win32, Win64), Mac OS

Недостатки:

· Нет полной совместимости с Delphi (хотя в отличие от Delphi предоставляет возможность создавать более кроссплатформенные приложения)

· Получаемые бинарные файлы могут иметь достаточно большой размер из-за того, что включают в себя отладочную информацию для использования в отладчикe gdb (GNU Debugger). Компилятор имеет настройку для удаления отладочной информации из исполняемого файла (-Xs), но из-за ошибки в компиляторе FPC до версии 2.0.4 она работала некорректно. Для удаления отладочной информации также можно воспользоваться утилитой «strip», входящей в пакет Lazarus

· Разные кодировки строк в Windows и Lazarus (UTF-16 и UTF-8) создают трудности для Windows — пользователей, так как им придется вручную следить за преобразованием строк

ПОСТАВЛЕННАЯ ЗАДАЧА

Найти произведение матрицы A на вектор b

АЛГОРИТМ ПРОГРАММЫ

1. Ввести размерность матрицы A и вектора b

2. Заполнить числами матрицу A и вектор b

3. Умножить матрицу A на вектор b

программный матрица вектор умножение ОПИСАНИЕ ВХОДНЫХ И ВЫХОДНЫХ ДАННЫХ Ввод исходных данных осуществляется с клавиатуры. Тип переменных: REAL.

Type

A = array[1.10, 1.10] of real;

B = array[1.10] of real;

Вывод результатов работы программы осуществляется на экран.

ИСХОДНЫЙ КОД

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

Windows, Messages, Classes, SysUtils, FileUtil, Forms, Controls,

Graphics, Dialogs, StdCtrls, Grids;

type

{ TForm1 }

TForm1 = class (TForm)

Button1: TButton;

Button2: TButton;

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

Matr = array[1.10, 1.10] of real;

Vct = array[1.10] of real;

var

Form1: TForm1;

A: Matr;

b, y: Vct;

n, i, j: integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1. FormCreate (Sender: TObject);

begin

n := 3;

Edit1.Text := FloatToStr (n);

StringGrid1.ColCount := n + 1;

StringGrid1.RowCount := n + 1;

StringGrid2.RowCount := n + 1;

StringGrid3.RowCount := n + 1;

StringGrid1.Cells[0,0] := 'Матрица A:';

StringGrid2.Cells[0,0] := 'Вектор B:';

StringGrid3.Cells[0,0] := 'Вектор Y:';

for i := 1 to n do

begin

StringGrid1.Cells[0,i] := 'i=' + IntToStr (i);

StringGrid1.Cells[i, 0] := 'j=' + IntToStr (i);

end;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

n := StrToInt (Edit1.Text);

StringGrid1.ColCount := n + 1;

StringGrid1.RowCount := n + 1;

StringGrid2.RowCount := n + 1;

StringGrid3.RowCount := n + 1;

for i := 1 to n do

begin

StringGrid1.Cells[0,i] := 'i=' + IntToStr (i);

StringGrid1.Cells[i, 0] := 'j=' + IntToStr (i);

end;

end;

procedure TForm1. Button2Click (Sender: TObject);

begin

for i := 1 to n do

for j := 1 to n do

A[i, j] := StrToFloat (StringGrid1.Cells[j, i]);

for i := 1 to n do

b[i] := StrToFloat (StringGrid2.Cells[0,i]);

for i := 1 to n do

begin

y[i] := 0;

for j := 1 to n do y[i] := y[i] + A[i, j] * b[j];

StringGrid3.Cells[0,i] := FloatToStrF (y[i], fffixed, 6,2);

end;

end;

end.

ПРИМЕРЫ Пример № 1.

Размерность матрицы A и вектора b: 2.

A (1,1) := 1; A (1,2) := 2; B (1) := 1;

A (2,1) := 3; A (2,2) := 4; B (2) := 2;

Полученный ответ:

Y (1) = 5;

Y (2) = 11;

Пример № 2.

Размерность матрицы A и вектора b: 3.

A (1,1) := 1; A (1,2) := 2; A (1,3) := 3; B (1) := 5;

A (2,1) := 0; A (2,2) := -1; A (2,3) := 5; B (2) := 2;

A (3,1) := -4; A (3,2) := 3; A (3,3) := -2; B (3) := -3;

Полученный ответ:

Y (1) = 0;

Y (2) = -17;

Y (3) = -8;

Пример № 3.

Размерность матрицы A и вектора b: 4.

A (1,1) := 4; A (1,2) := 2; A (1,3) := 1; A (1,4) := -1; B (1) := 2;

A (2,1) := 3; A (2,2) := -2; A (2,3) := 0; A (2,4) := -2; B (2) := 2;

A (3,1) := 0; A (3,2) := 4; A (3,3) := 5; A (3,4) := 7; B (3) := 1;

A (4,1) := -4; A (4,2) := 3; A (4,3) := -3; A (4,4) := 1; B (4) := -4;

Полученный ответ:

Y (1) = 17;

Y (2) = 10;

Y (3) = -23;

Y (4) = -9;

1. Алексеев Е. Р., Чеснокова О. В., Кучер Т. В. Самоучитель по программированию на Free Pascal и Lazarus. — ДонНТУ УНИТЕХ, 2011.

2. Алексеев Е. Р., Чеснокова О. В., Кучер Т. В. Free Pascal и Lazarus: Учебник по программированию. — ALT Linux; ДМК-пресс, 2010.

3. Мансуров К. Т. Основы программирования в среде Lazarus. — 2010.

Показать весь текст
Заполнить форму текущей работой