UNIVERS
15.3
UNIVERS base processing software API
Main Page
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
include
mth
linalg.h
1
/* linalg.h */
2
/* $Id: linalg.h,v 1.7 2008/02/20 10:12:35 tully Exp $ */
3
#ifndef __linalg_h
4
#define __linalg_h
5
6
#include <mix/Types.h>
7
8
#ifdef __cplusplus
9
extern
"C"
{
10
#endif
/* C++ */
11
12
#define MACHINEZERO 1e-18
13
14
/*************************************************************************
15
* ПОДПРОГРАММА НАХОЖДЕНИЯ СОБСТВЕННЫХ ЗНАЧЕНИЙ И СОБСТВЕННЫХ ВЕКТОРОВ *
16
* ИТЕРАЦИОННЫМ МЕТОДОМ ЯКОБИ *
17
* *
18
* ВХОДНЫЕ ДАННЫЕ: A - исходная квадратная матрица (NxN) *
19
* N - размерность матрицы *
20
* B - временный буферный вектор размерности N *
21
* Z - временный буферный вектор размерности N *
22
* ВЫХОДНЫЕ ДАННЫЕ: D - собственные значения N *
23
* V - матрица, столбцами которой являются *
24
* собственные вектора (NxN) *
25
*************************************************************************/
26
void
Fortran(jacobi)(
double
A[],
int
*N,
double
D[],
double
V[],
27
double
B[],
double
Z[]);
28
29
30
/***********************************************************************
31
* Функция для вычисления определителя матрицы 3x3 одинарной точности.
32
*
33
* ВХОДНЫЕ ПАРАМЕТРЫ:
34
* float a[] - матрица 3x3
35
***********************************************************************/
36
float
det3 (
float
a[]);
37
38
39
/***********************************************************************
40
* Функция для вычисления определителя матрицы 3x3 двойной точности.
41
*
42
* ВХОДНЫЕ ПАРАМЕТРЫ:
43
* double a[] - матрица 3x3
44
***********************************************************************/
45
double
ddet3 (
double
a[]);
46
47
48
/**********************************************************************
49
* Функция вычисления определителя матрицы 4x4 одинарной точности.
50
*
51
* ВХОДНЫЕ ПАРАМЕТРЫ:
52
* float a[] - матрица 4x4
53
**********************************************************************/
54
float
det4 (
float
a[]);
55
56
57
/**********************************************************************
58
* Функция вычисления определителя матрицы 4x4 двойной точности.
59
*
60
* ВХОДНЫЕ ПАРАМЕТРЫ:
61
* double a[] - матрица 4x4
62
**********************************************************************/
63
double
ddet4 (
double
a[]);
64
65
66
/**********************************************************************
67
* Функция вычисления определителя матрицы 5x5 одинарной точности.
68
*
69
* ВХОДНЫЕ ПАРАМЕТРЫ:
70
* float a[] - матрица 5x5
71
**********************************************************************/
72
float
det5 (
float
a[]);
73
74
75
/**********************************************************************
76
* Функция вычисления определителя матрицы 5x5 двойной точности.
77
*
78
* ВХОДНЫЕ ПАРАМЕТРЫ:
79
* double a[] - матрица 5x5
80
**********************************************************************/
81
double
ddet5 (
double
a[]);
82
83
/**********************************************************************
84
* Подпрограмма нахождения решения системы 3-х линейных уравнений.
85
* A * X = B
86
*
87
* ВХОДНЫЕ ПАРАМЕТРЫ:
88
* float a[3*3] - матрица коэффициентов по строкам:
89
* a(1,1), a(1,2), a(1,3), a(2,1) ...
90
* float b[3] - вектор свободных членов * * ВЫХОДНЫЕ ПАРАМЕТРЫ: * float x[3] - вектор решения * * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: * int - признак ошибки: * 0 - нет ошибок * 1 - определитель A равен 0 ***********************************************************************/ int sle3 (float a[3*3], float b[3], float x[3]); /********************************************************************** * Подпрограмма нахождения решения системы 3-х линейных уравнений. * A * X = B * * ВХОДНЫЕ ПАРАМЕТРЫ: * float a[3*3] - матрица коэффициентов по строкам: * a(1,1), a(1,2), a(1,3), a(2,1) ... * float b[3] - вектор свободных членов * * ВЫХОДНЫЕ ПАРАМЕТРЫ: * float x[3] - вектор решения * * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: * int - признак ошибки: * 0 - нет ошибок * 1 - определитель A равен 0 ***********************************************************************/ int dsle3 (double a[3*3], double b[3], double x[3]); /********************************************************************** * Подпрограмма нахождения решения системы 4-х линейных уравнений. * A * X = B * * ВХОДНЫЕ ПАРАМЕТРЫ: * float a[4*4] - матрица коэффициентов по строкам: * a(1,1), a(1,2), a(1,3), a(1,4), a(2,1) * float b[4] - вектор свободных членов * * ВЫХОДНЫЕ ПАРАМЕТРЫ: * float x[4] - вектор решения * * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: * int - признак ошибки: * 0 - нет ошибок * 1 - определитель A равен 0 ***********************************************************************/ int sle4 (float a[4*4], float b[4], float x[4]); /********************************************************************** * Подпрограмма нахождения решения системы 5-х линейных уравнений. * A * X = B * * ВХОДНЫЕ ПАРАМЕТРЫ: * float a[5*5] - матрица коэффициентов по строкам: * a(1,1), a(1,2), a(1,3), a(1,4), a(2,1) * float b[5] - вектор свободных членов * * ВЫХОДНЫЕ ПАРАМЕТРЫ: * float x[5] - вектор решения * * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: * int - признак ошибки: * 0 - нет ошибок * 1 - определитель A равен 0 ***********************************************************************/ int sle5 (float a[5*5], float b[5], float x[5]); #ifdef __cplusplus }; #endif /* C++ */ #endif /* linalg.h */
91
*
92
* ВЫХОДНЫЕ ПАРАМЕТРЫ:
93
* float x[3] - вектор решения
94
*
95
* ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
96
* int - признак ошибки:
97
* 0 - нет ошибок
98
* 1 - определитель A равен 0
99
***********************************************************************/
100
int
sle3 (
float
a[3*3],
float
b[3],
float
x[3]);
101
102
/**********************************************************************
103
* Подпрограмма нахождения решения системы 3-х линейных уравнений.
104
* A * X = B
105
*
106
* ВХОДНЫЕ ПАРАМЕТРЫ:
107
* float a[3*3] - матрица коэффициентов по строкам:
108
* a(1,1), a(1,2), a(1,3), a(2,1) ...
109
* float b[3] - вектор свободных членов * * ВЫХОДНЫЕ ПАРАМЕТРЫ: * float x[3] - вектор решения * * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: * int - признак ошибки: * 0 - нет ошибок * 1 - определитель A равен 0 ***********************************************************************/ int dsle3 (double a[3*3], double b[3], double x[3]); /********************************************************************** * Подпрограмма нахождения решения системы 4-х линейных уравнений. * A * X = B * * ВХОДНЫЕ ПАРАМЕТРЫ: * float a[4*4] - матрица коэффициентов по строкам: * a(1,1), a(1,2), a(1,3), a(1,4), a(2,1) * float b[4] - вектор свободных членов * * ВЫХОДНЫЕ ПАРАМЕТРЫ: * float x[4] - вектор решения * * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: * int - признак ошибки: * 0 - нет ошибок * 1 - определитель A равен 0 ***********************************************************************/ int sle4 (float a[4*4], float b[4], float x[4]); /********************************************************************** * Подпрограмма нахождения решения системы 5-х линейных уравнений. * A * X = B * * ВХОДНЫЕ ПАРАМЕТРЫ: * float a[5*5] - матрица коэффициентов по строкам: * a(1,1), a(1,2), a(1,3), a(1,4), a(2,1) * float b[5] - вектор свободных членов * * ВЫХОДНЫЕ ПАРАМЕТРЫ: * float x[5] - вектор решения * * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: * int - признак ошибки: * 0 - нет ошибок * 1 - определитель A равен 0 ***********************************************************************/ int sle5 (float a[5*5], float b[5], float x[5]); #ifdef __cplusplus }; #endif /* C++ */ #endif /* linalg.h */
110
*
111
* ВЫХОДНЫЕ ПАРАМЕТРЫ:
112
* float x[3] - вектор решения
113
*
114
* ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
115
* int - признак ошибки:
116
* 0 - нет ошибок
117
* 1 - определитель A равен 0
118
***********************************************************************/
119
int
dsle3 (
double
a[3*3],
double
b[3],
double
x[3]);
120
121
122
/**********************************************************************
123
124
* Подпрограмма нахождения решения системы 4-х линейных уравнений.
125
* A * X = B
126
*
127
* ВХОДНЫЕ ПАРАМЕТРЫ:
128
* float a[4*4] - матрица коэффициентов по строкам:
129
* a(1,1), a(1,2), a(1,3), a(1,4), a(2,1)
130
* float b[4] - вектор свободных членов * * ВЫХОДНЫЕ ПАРАМЕТРЫ: * float x[4] - вектор решения * * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: * int - признак ошибки: * 0 - нет ошибок * 1 - определитель A равен 0 ***********************************************************************/ int sle4 (float a[4*4], float b[4], float x[4]); /********************************************************************** * Подпрограмма нахождения решения системы 5-х линейных уравнений. * A * X = B * * ВХОДНЫЕ ПАРАМЕТРЫ: * float a[5*5] - матрица коэффициентов по строкам: * a(1,1), a(1,2), a(1,3), a(1,4), a(2,1) * float b[5] - вектор свободных членов * * ВЫХОДНЫЕ ПАРАМЕТРЫ: * float x[5] - вектор решения * * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: * int - признак ошибки: * 0 - нет ошибок * 1 - определитель A равен 0 ***********************************************************************/ int sle5 (float a[5*5], float b[5], float x[5]); #ifdef __cplusplus }; #endif /* C++ */ #endif /* linalg.h */
131
*
132
* ВЫХОДНЫЕ ПАРАМЕТРЫ:
133
* float x[4] - вектор решения
134
*
135
* ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
136
* int - признак ошибки:
137
* 0 - нет ошибок
138
* 1 - определитель A равен 0
139
***********************************************************************/
140
int
sle4 (
float
a[4*4],
float
b[4],
float
x[4]);
141
142
/**********************************************************************
143
144
* Подпрограмма нахождения решения системы 5-х линейных уравнений.
145
* A * X = B
146
*
147
* ВХОДНЫЕ ПАРАМЕТРЫ:
148
* float a[5*5] - матрица коэффициентов по строкам:
149
* a(1,1), a(1,2), a(1,3), a(1,4), a(2,1)
150
* float b[5] - вектор свободных членов * * ВЫХОДНЫЕ ПАРАМЕТРЫ: * float x[5] - вектор решения * * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: * int - признак ошибки: * 0 - нет ошибок * 1 - определитель A равен 0 ***********************************************************************/ int sle5 (float a[5*5], float b[5], float x[5]); #ifdef __cplusplus }; #endif /* C++ */ #endif /* linalg.h */
151
*
152
* ВЫХОДНЫЕ ПАРАМЕТРЫ:
153
* float x[5] - вектор решения
154
*
155
* ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
156
* int - признак ошибки:
157
* 0 - нет ошибок
158
* 1 - определитель A равен 0
159
***********************************************************************/
160
int
sle5 (
float
a[5*5],
float
b[5],
float
x[5]);
161
162
163
#ifdef __cplusplus
164
};
165
#endif
/* C++ */
166
167
#endif
/* linalg.h */
Generated by
1.8.5