Справочник
NonLinearReactionAdvectionDiffusionWithFrontData.NonLinearReactionAdvectionDiffusionWithFrontDataNonLinearReactionAdvectionDiffusionWithFrontData.ARP_yNonLinearReactionAdvectionDiffusionWithFrontData.DRP_yNonLinearReactionAdvectionDiffusionWithFrontData.JNonLinearReactionAdvectionDiffusionWithFrontData.J_qNonLinearReactionAdvectionDiffusionWithFrontData.adjointRPNonLinearReactionAdvectionDiffusionWithFrontData.apply_on_dynamic_meshNonLinearReactionAdvectionDiffusionWithFrontData.deltaNonLinearReactionAdvectionDiffusionWithFrontData.deltawNonLinearReactionAdvectionDiffusionWithFrontData.directRPNonLinearReactionAdvectionDiffusionWithFrontData.dparamsNonLinearReactionAdvectionDiffusionWithFrontData.dparams_nonuniformNonLinearReactionAdvectionDiffusionWithFrontData.f1NonLinearReactionAdvectionDiffusionWithFrontData.f2NonLinearReactionAdvectionDiffusionWithFrontData.find_f_zerosNonLinearReactionAdvectionDiffusionWithFrontData.generate_obs_dataNonLinearReactionAdvectionDiffusionWithFrontData.heterogeneityNonLinearReactionAdvectionDiffusionWithFrontData.heterogeneity_mapNonLinearReactionAdvectionDiffusionWithFrontData.make_gifNonLinearReactionAdvectionDiffusionWithFrontData.make_minimzation_gifNonLinearReactionAdvectionDiffusionWithFrontData.make_plotNonLinearReactionAdvectionDiffusionWithFrontData.minimizeNonLinearReactionAdvectionDiffusionWithFrontData.phideterminationNonLinearReactionAdvectionDiffusionWithFrontData.shishkin_meshNonLinearReactionAdvectionDiffusionWithFrontData.solveNonLinearReactionAdvectionDiffusionWithFrontData.solve_adjointNonLinearReactionAdvectionDiffusionWithFrontData.strip_borderPointsNonLinearReactionAdvectionDiffusionWithFrontData.u_initNonLinearReactionAdvectionDiffusionWithFrontData.ΦNonLinearReactionAdvectionDiffusionWithFrontData.δwNonLinearReactionAdvectionDiffusionWithFrontData.∂ARP_∂yNonLinearReactionAdvectionDiffusionWithFrontData.∂DRP_∂yNonLinearReactionAdvectionDiffusionWithFrontData.∂adjointRP_∂yNonLinearReactionAdvectionDiffusionWithFrontData.∂directRP_∂y
NonLinearReactionAdvectionDiffusionWithFrontData.NonLinearReactionAdvectionDiffusionWithFrontData — Modulemodule NonLinearReactionAdvectionDiffusionWithFrontDataПакет реализует исследование в рамках гранта РФФИ #20-31-70016 "Численные методы решения обратных задач для нелинейных сингулярно возмущённых уравнений типа реакция-диффузия-адвекция с данными о положении фронта реакции".
Автор исходного кода пакета:
- Андрей Борзунов, Кафедра математики физического факультета МГУ им. Ломоносова.
Исполнители гранта:
- Мельникова Алина Александровна
- Левашова Наталия Тимуровна
- Лукьяненко Дмитрий Витальевич (Руководитель)
- Быцюра Светлана Владимировна
- Борзунов Андрей Анатольевич
- Исаев Темур Фуркатович
- Аргун Рауль Ларикович
- Горбачев Александр Викторович
Документация: https://github.com/aborzunov/NonLinearReactionAdvectionDiffusionWithFrontData.jl
NonLinearReactionAdvectionDiffusionWithFrontData.J — FunctionJ(uˢ::Matrix, Xₙ::Array, N::Int,
Tₘ::Vector, M::Int,
f1::Vector, f2::Vector,
qₙˢ::Vector, α::Real = 0.0) -> RealВычисляет функционал $J(\mathbf{x}) = \int_0^T \left( u(f_1(t), t; q^s) - f_2(t) \right)^2 + \alpha \int_0^1 q^2(x) dx$.
Использует f2 для вычисления $u(f_1(t), t)$ и после по формуле трапеций.
NonLinearReactionAdvectionDiffusionWithFrontData.J_q — FunctionJ_q(uˢ::Matrix, ψˢ::Matrix,
Xₙ::Array, N::Int,
Tₘ::Vector, M::Int) -> VectorВычисляет градиент $J_q(x) = \int_0^T u^s(x, t) \psi^s(x, t) dt$.
NonLinearReactionAdvectionDiffusionWithFrontData.apply_on_dynamic_mesh — Methodapply_on_dynamic_mesh(ϕ::Matrix, XX::Matrix,
N::Int, M::Int) -> MatrixАппроксимирует ϕ на динамичски изменяющуюся на каждом временном шаге сетку XX.
Функция phidetermination определяют вырожденные корни на стартовой сетке. Φ проиозводит линейные операции над векторами на каждом временном шаге, опять же на стартовой сетке. Поэтому если в расчетах была использована динамическая сетка, то нужно переопределить ϕ на этой динамической сетке.
NonLinearReactionAdvectionDiffusionWithFrontData.delta — Functiondelta(x, Xₙ, x₀ = 0) -> ::RealВычисляет конечно разностную аппроксимацию дельта функции $\delta(x; x₀)$ на сетке Xₙ исходя из $\int\limits_a^b \delta(x; x₀) dx = 1$: если $x, x_0 \in [X_n, X_{n+1}]$, возвращаем $1/h$, где $h$ –- шаг сетки.
NonLinearReactionAdvectionDiffusionWithFrontData.dparams — Methoddparams()Возвращает стандартный набор параметров для равномерной сетки.
Return
`a, b, t₀, T, N, M, ε, Xₙ, Tₘ, qₙ, ulₘ, urₘ, u₀ `NonLinearReactionAdvectionDiffusionWithFrontData.f1 — Methodf1(ϕ::Matrix, u::Matrix, Xₙ::Array, N::Int, M::Int) -> VectorНаходит положение переходного слоя $f_1(t) = x_{t.p.}(t)$ путем поиска точки пересечения аргумента, при котором пересекаются $u(x,t)$ и $ϕ(x)$.
Точка пересечения находится путем интерполяции функции обратной к $u(x,t) - ϕ(x) = 0$, передавай аргументы в инвертированном виде в find_f_zeros.
See also: find_f_zeros
NonLinearReactionAdvectionDiffusionWithFrontData.f2 — Methodf2(ϕ::Matrix, u::Matrix, Xₙ::Array, N::Int, M::Int) -> VectorНаходит значение искомой функции на переходном слое $f_2(t) = u(x_{t.p.}, t)$. Находится путем интерполяции функции $u(x - f1(t), t) = 0$.
See also: find_f_zeros
NonLinearReactionAdvectionDiffusionWithFrontData.generate_obs_data — Methodgenerate_obs_data(u::Matrix, Xₙ::Vector, N::Int,
Tₘ::Vector, M::Int,
qₙ::Vector,
ulₘ::Vector, urₘ::Vector)Фнукция-сокращение.
#Return Левый вырожденный корень, правый, их полуразность, положение переходного слоя, значение u на переходном слое. ϕl, ϕr, ϕ, f1_data, f2_data
See also: phidetermination, Φ, f1, f2.
NonLinearReactionAdvectionDiffusionWithFrontData.make_gif — Functionmake_gif(u::Matrix, Xₙ::Vector, Tₘ::Vector,
ϕ_l::Matrix = missings(2), ϕ_r::Matrix = missings(2),
f1::Vector = missings(2), f2::Vector = missings(2),
analitical = nothing;
frames_to_write::Int = -1,
name = "solution.gif",
convert2mp4 = false)Рисует gif анимацию решения. вплоть по frames_to_write-ый кадр, сохраняет как "results/name".
Так же рисует аналитическое решение analitic(x,t), если таково передано. label::String — LaTeX строка подписи искомой функции с экранирование спец. символов.
Pass an empty string to avoid saving at disk.
TODO: Fix doc
NonLinearReactionAdvectionDiffusionWithFrontData.make_minimzation_gif — Methodmake_minimzation_gif(Js::Vector, Qs::Matrix,
qₙ::Vector, Xₙ::Vector;
frames_to_write::Vector = Vector(),
name = "solution.gif", convert2mp4 = false,
β::Real = 0.0)Сохраняет анимацию процесса минимизации.
NonLinearReactionAdvectionDiffusionWithFrontData.make_plot — Functionmake_plot(u::Matrix, Xₙ::Vector, Tₘ::Vector, m::Int,
ϕ_l::Matrix = missings(2), ϕ_r::Matrix = missings(2),
f1::Vector = missings(2), f2::Vector = missings(2),
analitical = nothing;
label::String = "u")Рисует m-ый кадр решения u. Xₙ, Tₘ — сетки. ϕ_l, ϕ_r — вырожденные решения. f1, f2 — сгенерированные априорные данные. analitical — или функция или сеточные значения аналитического решения. label::String — LaTeX строка подписи искомой функции с экранирование спец. символов.
NonLinearReactionAdvectionDiffusionWithFrontData.minimize — Methodminimize(q₀::Vector, u₀::Vector,
ulₘ::Vector, urₘ::Vector,
Xₙ, N,
Tₘ::Vector, M,
ε,
f1_data::Vector, f2_data::Vector;
S::Int = 10,
β::Real = 0.01,
w::Real = 0.0001,
create_mesh::Function = x -> [NaN, NaN]) -> Vector, Vector, MatrixВернет qˢ на оригинальной сетке Xₙ[:,1].
NonLinearReactionAdvectionDiffusionWithFrontData.phidetermination — Methodphidetermination(q::Vector, ub::Vector,
Xₙ::Vector, N::Int,
Tₘ::Vector, M::Int;
reverseX = false)Решает ОДУ для нахождения вырожденного корня.
reverseX флаг обозначающий обратное направление интегрирования по оси $X$.
NonLinearReactionAdvectionDiffusionWithFrontData.solve — Functionsolve(y₀::Vector, Xₙ::Vector, N::Int,
Tₘ::Vector, M::Int,
ε::Real, ulₘ::Vector, urₘ::Vector,
qₙ::Vector,
RP::Function = directRP,
jac::Function = ∂directRP_∂y;
α::Complex = complex(0.5, 0.5),
create_mesh::Function = x -> [NaN, NaN]) -> Matrix, Matrix, VectorФункция, которая находит решение прямой задачи с помощью одностадийной схемы Розенброка с комплексным коэффициентом.
Arguments
y₀::Vector: Сеточные значения начального условия.Xₙ::Vector: Пространственная сетка по $X$.N::Int: Число интервалов сетки по $X$.Tₘ::Vector: Пространственная сетка по $t$.M::Int: Число интервалов сетки по $t$.ε::Real: Малый параметр при старшей производной.ulₘ::Function: Сеточные значения левого ГУ.urₘ::Function: Сеточные значения правого ГУ.qₙ::Vector: Сеточные значения "неоднородности", см. постановку задачи.RP::Function: Функция вычисления вектора правой части —directRP.jac::Function: Якобиан правой части по векторуy—∂DRP_∂y.α::Complex: Коэффициент схемы. Приα = 0— схема Эйлера, приα = complex(0.5, 0.5)— схема Розенброка с комплексным коэффициентом.create_mesh::Function: Принимает один аргументx_tpположение переходного слоя и формирует подходяющую сетку.
Return
Тройку: - Матрицу размера $(N+1, M+1)$, содержащую значения искомой функции на сетках $X\_n, T\_m$,. - Матрицу размера $(N+1, M+1)$, содержащую значения стеки $X\_n$ на каждом моменте времени. - Вектора размера $M+1$, содержащий координаты положения переходного слоя в каждый момент времени.
Xₙ,qₙ,y₀векторы размера $N+1$!Tₘ,ulₘ,urₘвекторы размера $M+1$!
NonLinearReactionAdvectionDiffusionWithFrontData.solve_adjoint — FunctionМассивы Xₙ, Tₘ, u, f1, f2 Передаются как есть! Они переварачиваются внутри функции локально.
NonLinearReactionAdvectionDiffusionWithFrontData.u_init — Methodu_init(x::Real; ε::Real = 0.2, x_tp = 0.15) -> RealНачальные условия в виде $(x^2 - x -2) -6 \tanh( -3 \xi)$, где $\xi = \frac{x - x_tp}{ε}$. x_tp — положение внутрннего переходного слоя.
Граничные условия для этих начальных условий должны быть заданы как (-8, 4).
Вы вольны устанавливать начальные условия на свое усмотрения, эта функция внесена в модуль для удобства повествования.
Example
julia> NonLinearReactionAdvectionDiffusionWithFrontData.u_init.(0:0.1:1)
11-element Array{Float64,1}:
-7.868156688432881
-5.900893714323723
1.650893714323725
3.6581566884328813
3.753366656356917
3.749669571706625
3.7599835485135173
3.7899991809276505
3.839999959220786
3.909999997969723
3.999999999898918NonLinearReactionAdvectionDiffusionWithFrontData.Φ — MethodΦ(ϕ_l::Matrix, ϕ_r::Matrix, N::Int, M::Int) -> ::VectorВычисляет полуразность вырожденных решений $|\phi_l^m - \phi_r^m|/2 + \phi_l^m$ на каждом шаге по времени m с помощью матриц вырожденных решений $\phi_l$ и $\phi_r$ вырожденного корня.
NonLinearReactionAdvectionDiffusionWithFrontData.ARP_y — Method" ARP_y(y::Vector, m::Int, Xₙ::Vector, N::Int, Tₘ::Vector, M::Int, ε::Real, ulₘ::Vector, urₘ::Vector, qₙ::Vector, Uₙₘ::Matrix, f1::Vector, f2::Vector) -> (::Vector, ::Vector, ::Vector)
Возращает три диагонали якоибана правой части сопряженной задачи. Входные параметры полностью аналогичны adjointRP.
Return
Возвращает три вектора dl, d, dl элементов якоибана. Нижняя и верхняя диагонали длины $N-2$, главная — $N-1$.
[ d[1] du[1] ]
[ dl[1] d[2] du[2] ]
[ 0 dl[2] d[3] du[3] ]
[ ... ... ... ]
[ ... ... du[N-2] ]
[ dl[N-2] d[N-1] ]Функция не входит в публичный API, поэтому размерность входных векторов отличается от аналогичных в solve_adjoint.
qₙ,yразмераN-1,XₙразмераN+1,UₙₘразмераN-1, M+1
NonLinearReactionAdvectionDiffusionWithFrontData.DRP_y — Method" DRP(y::Int, m::Int, Xₙ::Vector, N::Int, ε::Real, ulₘ::Vector, urₘ::Vector, qₙ::Vector) -> (::Vector, ::Vector, ::Vector)
Возращает три диагонали якоибана правой части прямой задачи, чтобы после сформировать трехдигональную матрицу Tridiagonal.
Функция не входит в публичный API, поэтому размерность входных векторов отличается от аналогичных в solve.
qₙ,yразмераN-1!XₙразмераN+1.
Return
Возвращает три вектора dl, d, dl элементов якоибана. Нижняя и верхняя диагонали длины $N-2$, главная — $N-1$.
[ d[1] du[1] ]
[ dl[1] d[2] du[2] ]
[ 0 dl[2] d[3] du[3] ]
[ ... ... ... ]
[ ... ... du[N-2] ]
[ dl[N-2] d[N-1] ]Example
julia> # Данные необохдимо подготовить, например, как в examples/example_direct.jl
julia> # Подготовим массивы, выбросив граничные точки
julia> # ведь тестируемая функция — для внутреннего использования
julia> qq = qₙ[2:N];
julia> y = y₀[2:N];
julia> dl, d, du = NonLinearReactionAdvectionDiffusionWithFrontData.DRP_y(y, 1, Xₙ, N, ε, ulₘ, urₘ, qq);
julia> Tridiagonal( dl, d, du )
49×49 Tridiagonal{Float64,Array{Float64,1}}:
-991.038 305.462 ⋅ ⋅ ⋅ ⋅ ⋅ … ⋅ ⋅ ⋅ ⋅ ⋅ ⋅
[...]NonLinearReactionAdvectionDiffusionWithFrontData.adjointRP — MethodadjointRP(y::Vector, m::Int,
Xₙ::Vector, N::Int,
Tₘ::Vector, M::Int,
ε::Real,
ulₘ::Vector, urₘ::Vector,
qₙ::Vector,
Uₙₘ::Matrix, f1::Vector, f2::Vector)Вычисляет вектор правой части с помощью конечно-разностной аппроксимации пространственных производных.
Arguments
y::Vector: Вектор размераN-1, решение в текущий момент без ГТ.m::Int: Номер шага в сетке по времени.Xₙ::Vector: Вектор размераN+1сетки по $X$, вместе с ГТ.N::Int: Число интервалов в полной сетке по $X$.Tₘ::Vector: Вектор размераM+1сетки по $T$.M::Int: Число интервалов в полной сетке по $T$.ε::Real: Малый параметр при старшей производной.ulₘ::Vector: Вектор сеточных значений левого ГУ.urₘ::Vector: Вектор сеточных значений правого ГУ.qₙ::Vector: Вектор размераN-1сеточные значений неоднородности без ГТ.Uₙₘ::Matrix: Матрица размераN-1, M+1решения прямой задачи при данномqₙ.f1::Vector: Эспериментальные данные — положение внутреннего слоя, размераM+1.f2::Vector: Эспериментальные данные — значение функции на внутреннеем слое, размераM+1.w::Real: Априорный параметр в аппроксимации дельта-функции (см.heterogeneity,δw).
Функция не входит в публичный API, поэтому размерность входных векторов отличается от аналогичных в solve_adjoint.
qₙ,yразмераN-1,XₙразмераN+1,UₙₘразмераN-1, M+1
NonLinearReactionAdvectionDiffusionWithFrontData.deltaw — Methoddeltaw(n::Int, x₀::Real, Xₙ::Vector, N::Int, w::Real) --> ::RealВычисляет $\delta(x - x₀)$, где x = Xₙ[n]. n — номер узла в сетке Xₙ(без граничных точек).
Использует более точную конечно разностную аппроксимацию дельта функции, w — априорный параметр, см. δw.
NonLinearReactionAdvectionDiffusionWithFrontData.directRP — MethoddirectRP(y::Vector, m::Int,
Xₙ::Vector, N::Int,
ε::Real,
ulₘ::Vector, urₘ::Vector,
qₙ::Vector)Вычисляет вектор правой части с помощью конечно-разностной аппроксимации пространственных производных.
Arguments
y::Vector: Вектор размераN-1, решение в текущий момент без ГТ.m::Int: Номер шага в сетке по времени.Xₙ::Vector: Вектор размераN+1сетки по $X$, вместе с ГТ.N::Int: Число интервалов в полной сетке по $X$.ε::Real: Малый параметр при старшей производной.ulₘ::Vector: Вектор сеточных значений левого ГУ.urₘ::Vector: Вектор сеточных значений правого ГУ.qₙ::Vector: Вектор размераN-1сеточные значений неоднородности без ГТ.
Функция не входит в публичный API, поэтому размерность входных векторов отличается от аналогичных в solve.
qₙ,yразмераN-1!XₙразмераN+1.
NonLinearReactionAdvectionDiffusionWithFrontData.dparams_nonuniform — Methoddparams_nonuniform()Возвращает стандартный набор параметров для неравномерной сетки.
Return
return a, b, t₀, T, N, M, ε, Xₙ, Tₘ, qₙ, ulₘ, urₘ, u₀, meshf;NonLinearReactionAdvectionDiffusionWithFrontData.find_f_zeros — Methodfind_f_zeros(f::Vector, Xₙ::Vector)Находит такой $x$, что $f(x) = 0$. f — сеточные значения функции на сетке Xₙ.
- Функция обязана пересекать ноль. Не сработает на неотрицательных функциях.
- Возвращает только аргуент реализующий первый ноль.
- Решение ищется аппроксимацией.
NonLinearReactionAdvectionDiffusionWithFrontData.heterogeneity — Methodheterogeneity(n::Int, m::Int,
Xₙ::Vector, N::Int,
Tₘ::Vector, M::Int,
Uₙₘ::Matrix,
f1::Vector, f2::Vector,
w::Real)Неоднородность выражающая невязку текущего решения с искомым. $2 \delta( x - f_1(t) ) ( u^s(x,t) - f_2(t) )$.
NonLinearReactionAdvectionDiffusionWithFrontData.heterogeneity_map — Methodheterogeneity_map(XX::Matrix, N::Integer,
Tₘ::Vector, M::Integer,
u::Matrix,
f1_data::Vector, f2_data::Vector,
w::Real) --> ::MatrixВозвращает матрицу неоднородности $-\delta(x - f_1(t))(u - f_2(t))$. Следует использовать для контроля выбора параметра аппроксимации $w$ в дельта-функции.
NonLinearReactionAdvectionDiffusionWithFrontData.shishkin_mesh — Functionshishkin_mesh(a::Real, b::Real,
x_tp::Real, ε::Real,
N::Int = 50,
C_i::Real = 1.0, K_i::Real = 1.0,
C_b::Real = 1.0, K_b::Real = 1.0) --> VectorВозвращает кусочнораномерную сетку со сгущением на границах и на переходном слое.
Экскиз:
..... . . . . . . . . . ....... . . . . . . . . . . ......Arguments
a::IntЛевая граница.b::IntПравая граница.x_tp::RealПоложение переходного слоя.ε::RealМалый параметр при старшей производной.C_i::RealМасштабирующий коэффициент для ширины внутреннего сгущения.K_i::intМасштабирующий коэффициент количества интервалов внутреннего сгущения.C_b::RealМасштабирующий коэффициент для ширин пограничных сгущений.K_b::IntМасштабирующий коэффициент количеств интервалов пограничных сгущений.K::IntКол-во интервалов вне всех сгущений.
NonLinearReactionAdvectionDiffusionWithFrontData.strip_borderPoints — Methodstrip_borderPoints(a::Vector, N) -> VectorФункция для внутренного использования.
Входящий массив должен быть размера N+1. Обрезает граничные точки слева и справа. Возвращает массив размера N-1.
Example
julia> N = 10; a = collect(1:N+1);
julia> NonLinearReactionAdvectionDiffusionWithFrontData.strip_borderPoints(a, N)
9-element Array{Int64,1}:
2
3
4
5
6
7
8
9
10NonLinearReactionAdvectionDiffusionWithFrontData.δw — Methodδw(x::Real, ω::Real) -> RealЛинейная аппроксимация $δ(x)$, ω — эвристический парамет. Подбирается так, чтобы невязка сопряженной задачи $2 \delta( x - f_1(t)) ( u(x,t) - f_2(t))$ при подстановке в неё решения u(x,t;q) при истинном q, обнулялась почти везде, но не всюду.
NonLinearReactionAdvectionDiffusionWithFrontData.∂ARP_∂y — Method∂ARP_∂y(y::Vector, m::Int,
Xₙ::Vector, N::Int,
Tₘ::Vector, M::Int,
ε::Real,
ulₘ::Vector, urₘ::Vector,
qₙ::Vector,
Uₙₘ::Matrix, f1::Vector, f2::Vector) -> TridiagonalОбертка фнукции ARP_y, которая возвращает Tridiagonal( ARP_y(...)) трехдиагональную матрицы из векторов, которые возвращает ARP_y.
NonLinearReactionAdvectionDiffusionWithFrontData.∂DRP_∂y — Method∂DRP_∂y(y::Vector, m::Int,
Xₙ::Vector, N::Int,
ε::Real,
ulₘ::Vector, urₘ::Vector,
qₙ::Vector) -> TridiagonalОбертка фнукции DRP_y, которая возвращает Tridiagonal( DRP_y(...)) трехдиагональную матрицу из векторов, которые возвращает DRP_y(...).
Функция не входит в публичный API, поэтому размерность входных векторов отличается от аналогичных в solve.
qₙ,yразмераN-1!XₙразмераN+1.
NonLinearReactionAdvectionDiffusionWithFrontData.∂adjointRP_∂y — Method∂adjointRP_∂y(y::Vector, m::Int,
Xₙ::Vector, N::Int,
Tₘ::Vector, M::Int,
ε::Real,
ulₘ::Vector, urₘ::Vector,
qₙ::Vector,
Uₙₘ::Matrix, f1::Vector, f2::Vector,
w::Real)Функция якобиана для adjointRP. Все аргументы, размерности входных векторов такие же, как и у adjointRP.
Функция не входит в публичный API, поэтому размерность входных векторов отличается от аналогичных в solve_adjoint.
qₙ,yразмераN-1,XₙразмераN+1,UₙₘразмераN-1, M+1
NonLinearReactionAdvectionDiffusionWithFrontData.∂directRP_∂y — Method∂directRP_∂y(y::Vector, m::Int,
Xₙ::Vector, N::Int,
ε::Real,
ulₘ::Vector, urₘ::Vector,
qₙ::Vector)Функция якобиана для adjointRP. Размерности входных векторов такие же, как и у directRP.
Функция не входит в публичный API, поэтому размерность входных векторов отличается от аналогичных в solve.
qₙ,yразмераN-1!XₙразмераN+1.