Параметр пропуска октавы - PullRequest
0 голосов
/ 10 июня 2018

У меня следующая проблема:

Я хочу использовать следующую функцию из октавы "pcg", определенную как:

x = pcg (A, b, tol, maxit, m1, m2,x0,…)

Документация гласит:

"m = m1 * m2 - (слева) матрица предобусловливания, так что итерация (теоретически) эквивалентна решению с помощью pcg P * x= m \ b, с P = m \ A. Обратите внимание, что правильный выбор предварительного кондиционера может значительно улучшить общую производительность метода. Вместо матриц m1 и m2 пользователь может передать две функции, которые возвращают результаты примененияобратное m1 и m2 к вектору (обычно это предпочтительный способ использования предобработчика). Если m1 опущено или пусто [], то предварительное кондиционирование не применяется. Если m2 опущено, m = m1 будет использоваться в качестве предобусловливателя."

Теперь у меня есть все параметры, но у меня нет м2, и я хочу пропустить этот.Как в документации сказано «опустить», так что m = m1.

Я не смог найти способ пропустить этот параметр в октаве.

Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 10 июня 2018

Пример 6 в документации для pcg:

[x, flag, relres, iter, resvec, eigest] = ...
     pcg (A, b, [], [], "apply_m", [], [], 3)

Здесь ”apply_m” - это входной аргумент m1, а для m2 они заполнилиout [], чтобы иметь возможность предоставить более поздний параметр.

Таким образом, чтобы задать параметр x0, но пропустить m1, вы должны сказать:

x = pcg (A, b, tol, maxit, m1, [], x0, …)
...