Реклама:

Рис. 3.4.3. Проект factormatrix

3. Построение пакета Java. Для построения компонента, инкапсулирующего функции MATLAB cholesky.m, ludecomp.m и qrdecomp.m, нужно нажать кнопку построения (Build) на инструментальной панели. В случае успешного исхода в каталоге проекта создается подкаталог factormatrix, который содержит два подкаталога distrib и src, в которые помещаются созданные файлы компонента.

Подкаталог distrib содержит файлы factormatrix.ctf и factormatrix.jar, которые предназначены для создания инсталляционного пакета для распространения.

Подкаталог src содержит копии файлов factormatrix.ctf и factormatrix.jar, log-файлы регистрации процесса построения, а также файл readme.txt. Кроме того, в подкаталоге classes содержатся созданные классы компонента, а в подкаталоге factormatrix содержатся Java интерфейсные файлы.

Разработка приложения, использующего компонент

Создадим приложение, которое обращается к данному компоненту factormatrix. Для этого необходимо написать java-код приложения, установить переменные среды, построить и протестировать приложение Java.

1. Создание кода приложения Java. Пример кода getfactor.java приложения для этого примера находится в подкаталоге .\MatrixMathExample \MatrixMathDemoJavaApp. Приведем листинг программы getfactor.java.

/* Импорт необходимых пакетов */

import com.mathworks.toolbox.javabuilder.*;

Смоленцев H. К. Создание Windows-приложений с использованием математических процедур MATLAB.

import factormatrix.*;

/*

* Создание класса getfactor, который вычисляет разложения

* Холецкого LU и QR, матрицы конечных разностей порядка п.

* Значение п передается в командной строке

* Если второй аргумент командной строки передается как «sparse»,

* то используется разреженная матрица.

*/

class getfactor {

public static void main(String[] args)

{

MWNumericArray a = null; /* Для матрицы для разложения */ Object[] result = null; /* Для результата, тип Object[] */

factor theFactor = null; /* Для экземпляра класса factor */

try

{

/* Если нет входных данных, выход */ if (args.length == 0)

{

System.out.println("Error: must input a positive integer"); return;

}

/* Преобразование входного значения из строки в int */ int n = Integer.valueOf(args[0]).intValue();

if (n <= 0)

{

System.out.println("Error: must input a positive integer"); return;

}

/*

* Задание типа матрицы.

* Если второй ввод "sparse", то — разреженная матрица

*/

int[] dims = {n, n};

if (args.length > 1 && args[1].equals("sparse"))

a = MWNumericArray.newSparse(dims[0], dims[1],n+2*(n-1),

MWClasslD.DOUBLE, MWComplexity.REAL);

else

a = MWNumericArray.newInstance(dims,MWClassID.DOUBLE,

MWComplexity.REAL);

/* Установка значений элементов матрицы */ int[] index = {1, 1};

for (index[0] = 1; index[0] <= dims[0]; index[0]++)

{

for (index[1] = 1; index[1] <= dims[1]; index[1]++)

{

if (index[1] == index[0])

a.set(index, 2.0); else if (index[1] == index[0]+1 || index[1] == index[0]-1) a.set(index, -1.0);

}

}

/* Создание нового объект factor */ theFactor = new factor();


⇐ Предыдущая страница| |Следующая страница ⇒