Rн⟨ у, Х ⟩ ≜ Re( уНх )
Одне, що ви повинні бути обережними, коли ви реалізуєте CG (або подібні ітераційні підходи) із загальними лінійними операторами, - це правильно реалізувати суміжність вашого лінійного оператора. Тобто, люди часто отримують правильно, але роблять помилку, реалізуючи .z = F ∗ ( y )у= F( х )z=F∗( у)
Я рекомендую здійснити простий тест, який використовує наступну ідентичність: для будь-яких відповідних і ,
Отже, те, що ви робите, - генерувати випадкові значення і , запускати їх відповідно відповідно до ваших операцій вперед та суміжних даних і обчислювати два внутрішніх добутку вище. Переконайтесь, що вони відповідають розумній точності, і повторіть кілька разів.у ⟨ у , Р ( х ) ⟩ = ⟨ Р * ( у ) , х ⟩ . х уху
⟨ у, F( Х ) ⟩ = ⟨ Р∗( у) , Х ⟩ .
ху
EDIT: що робити, якщо ваш лінійний оператор повинен бути симетричним? Що ж, вам потрібно перевірити і цю симетрію. Тому використовуйте той самий тест, лише зазначивши, що --- застосуйте ту саму операцію до та . Звичайно, ОП має як асиметричний оператор, так і симетричний для вирішення ... x yЖ= F∗ху