матрично-векторное произведение без хранения матрицы

Форум, посвященный общим вопросам, связанным с MATLAB

Модератор: Admin

Galek
Пользователь
Сообщения: 2
Зарегистрирован: Пн сен 11, 2017 10:54 am

матрично-векторное произведение без хранения матрицы

Сообщение Galek » Пн сен 11, 2017 11:03 am

Добрый день! Подскажите, пожалуйста, как написать handle функцию матрично-векторного произведения без хранения матрицы с использованием gmres. Спасибо заранее!

Galek
Пользователь
Сообщения: 2
Зарегистрирован: Пн сен 11, 2017 10:54 am

Re: матрично-векторное произведение без хранения матрицы

Сообщение Galek » Вт сен 12, 2017 10:33 am

Найти х из решения уравнения Ах=b

b=1:1000;
h = get_handle_A();
x=gmres(h,b);
________________________
function h = get_handle_A()
h = @mult;
function result=mult(f)
[result]=get_A(f);
end
end
________________________

function [result]=get_A(f)
for i=1:1000
for j=1:1000
A(i,j)=1/j+i;% пример любая матрица элементы которой можно задать формулой
end
end
result=A*f;
end

_________________________




Пишет вот такую ошибку после компиляции:

Warning: Matrix is close to singular or badly scaled. Results may be
inaccurate. RCOND = 4.405612e-018.
> In gmres at 489
In gmres_cpu at 4
In test_product_fly_matrix at 2
gmres stopped at iteration 10 without converging to the desired tolerance 1e-006
because the maximum number of iterations was reached.
The iterate returned (number 10) has relative residual 0.52.