Решение систем линейных алгебраических уравнений с удвоенной точностью вычислений на языке СИ - page 4

>B=Vector([0.217, 0.254]);
>LinearSolve(A,B);
0.999999999901257661
– 0.99999999986319910
Результат решения тестовой задачи Уилкинсона в пакете Mathcad:
A=
0.7800000 0.563000
0.9130000 0.659000
B=
0.2170000 0.254000
x:=lsolve(A,B)
0.9999999998902543
– 0.999999999847955
Результат решения тестовой задачи Уилкинсона в пакете Mathe-
matica:
SetPrecision[LinearSolve[{{0.78000000000000, 0.5630000000000},
{0.9130000000000,0.6590000000000}},
{0.217000000000, 0.2540000000000}], 15]
{0.999999999890539,-0.999999999848725}
Таким образом, для тестовой задачи Уилкинсона при выборе реша-
телей СЛАУ, рекомендуемых в рассмотренных пакетах программ по
умолчанию, на обычных ПК не обеспечивается точность в 15 верных
значащих цифр для всех значений элементов вектора решения СЛАУ.
Из описаний программ-решателей СЛАУ для наиболее известных
математических библиотек стандартных программ на языке Си (на
этом языке ведутся основные разработки на обычных ПК по матема-
тическому моделированию технических систем и объектов — IMSL,
NAG, Intel MKL, LAPACK, BLAS, CUBLAS, MAGMA и др.) следует,
что они также не гарантируют обеспечения требуемой точности в 15
верных значащих цифр для всех значений элементов вектора решения
СЛАУ, если cond(A)
>
1. Например, аналогичный результат решения
тестовой задачи Уилкинсона был получен для аппаратно-программной
архитектуры NVIDIA
R
CUDA
TM
для решателей СЛАУ из математи-
ческих библиотек стандартных программ CUBLAS +MAGMA:
device 0: GeForce GTX 260, 1408.0 MHz clock, 895.3 MB memory
Test 1. A * X = B [DOUBLE PRECISION]
A:
0.78000000000000003 0.56299999999999994
0.91300000000000003 0.65900000000000003
B:
0.21700000000000000
0.25400000000000000
28 ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2011. № 4
1,2,3 5,6,7,8,9,10,11,12
Powered by FlippingBook