Умножение матрицы на вектор
Свободная среда разработки программного обеспечения для компилятора 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.2014GetMatrDop как процедура определяет значение элемента транспонированной матрицы дополнений. Знакомство с этапами разработки в среде Turbo Pascal программы сортировки элементов, находящихся на главной диагонали матрицы. Особенности тестирования программы.
курсовая работа [780,4 K], добавлен 20.11.2014Особенности работы с массивами с помощью MS Excel. Вычисление определителей матриц, произведения матриц и матрицы на вектор. Скалярное произведения найденных векторов. Поиск обратных матриц. Решение системы линейных уравнений, проверка найденных решений.
лабораторная работа [270,9 K], добавлен 05.06.2015Основные операции над матрицами. Формирование матрицы из файла. Ввод матрицы с клавиатуры. Заполнение матрицы случайными числами. Способы формирования двухмерных массивов в среде программирования С++. Произведение определенных элементов матрицы.
курсовая работа [537,0 K], добавлен 02.06.2015