Ниже приведен фрагмент функции, которую я определяю:
function [V1, V2] = lambert(R1, R2, t, string)
r1 = norm(R1);
r2 = norm(R2);
z = -100;
while F(z,t) < 0
z = z + 0.1;
end
tol = 1.e-8;
nmax = 5000;
ratio = 1;
n = 0;
while (abs(ratio) > tol) & (n <= nmax)
n = n + 1;
ratio = F(z,t)/dFdz(z);
z = z - ratio;
end
f = 1 - y(z)/r1;
g = A*sqrt(y(z)/mu);
gdot = 1 - y(z)/r2;
V1 = (R2-f*R1)/g;
V2 = (gdot*R1-R1)/g;
function dum = y(z)
dum = r1 + r2 + A*(z*S(z) - 1)/sqrt(C(z));
end
Когда я запускаю этот код с некоторыми векторами R1
, R2
, я получаю:
Ошибка при использовании *
.
Размеры внутренней матрицы должны совпадать.
Это происходит в следующих строках:
V1 = (R2-f*R1)/g;
V2 = (gdot*R1-R1)/g;
Я думаю, это связано с тем, чтоf
и gdot
и g
- это матрицы, размеры которых несовместимы с R1
и R2
.Однако, как я их определил, они должны быть просто скалярами.Я не понимаю, что в коде заставляет их быть матрицами.
Я пытался использовать .*
вместо *
и т. Д., Но безуспешно.