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

Свободная среда разработки программного обеспечения для компилятора Free Pascal. Библиотека визуальных компонентов. Перенос Delphi-программ с графическим интерфейсом в различные операционные системы. Ввод размерности матрицы и умножение ее на вектор.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 09.10.2013
Размер файла 16,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

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

Кафедра вычислительной математики и информатики

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

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

Работу выполнил _____________________________ Е.И. Сухан

Факультет математики и компьютерных наук, группа 26В

Специальность 010200.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.

Размещено на Allbest.ru


Подобные документы

  • Free Pascal как свободная реализация языка Паскаль, совместимая с Borland Pascal и Object Pascal - Delphi, но при этом обладающая и некоторыми дополнительными возможностями. Основы алгоритмизации и программирования, создание визуальных приложений.

    учебное пособие [4,2 M], добавлен 13.12.2011

  • Бесплатная среда разработки программного обеспечения с открытым исходным кодом для компилятора Free Pascal. Почему Lazarus такой популярный. Корректность введенных данных. Использование основных методов визуализации в среде программирования Lazarus.

    курсовая работа [695,5 K], добавлен 19.04.2013

  • Принципы разработки и пример работы программы, реализующей основные операции алгебры матриц: сложение, вычитание, умножение, транспонирование, а также умножение матрицы на число. Функциональные модели и блок-схемы решения задачи операций над матрицами.

    курсовая работа [956,7 K], добавлен 25.01.2010

  • Общая характеристика системы программирования Delphi, а также принципы создания ее компонентов. Описание значений файлов приложения, созданного с помощью Delphi. Структура и свойства библиотеки визуальных компонентов (Visual Component Library или VCL).

    отчет по практике [1,1 M], добавлен 07.12.2010

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

  • Составление алгоритмов и написание программ циклической структуры с использованием векторов, указателей и векторов указателей на вектор на языке C++. Статическое и динамическое распределение памяти. Функция ввода и обработки элементов вектора или матрицы.

    контрольная работа [210,5 K], добавлен 25.03.2015

  • Описание алгоритма решения задачи графическим способом. Ввод элементов исходного массива в цикле. Нахождение определённых элементов. Сортировка элементов с помощью пузырькового метода. Разработка программы на языке Pascal. Поиск наибольшего элемента.

    лабораторная работа [123,5 K], добавлен 15.01.2014

  • GetMatrDop как процедура определяет значение элемента транспонированной матрицы дополнений. Знакомство с этапами разработки в среде Turbo Pascal программы сортировки элементов, находящихся на главной диагонали матрицы. Особенности тестирования программы.

    курсовая работа [780,4 K], добавлен 20.11.2014

  • Особенности работы с массивами с помощью MS Excel. Вычисление определителей матриц, произведения матриц и матрицы на вектор. Скалярное произведения найденных векторов. Поиск обратных матриц. Решение системы линейных уравнений, проверка найденных решений.

    лабораторная работа [270,9 K], добавлен 05.06.2015

  • Основные операции над матрицами. Формирование матрицы из файла. Ввод матрицы с клавиатуры. Заполнение матрицы случайными числами. Способы формирования двухмерных массивов в среде программирования С++. Произведение определенных элементов матрицы.

    курсовая работа [537,0 K], добавлен 02.06.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.