以下是我定义的函数的片段:
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
不兼容的矩阵。但是,正如我已经定义的那样,它们应该只是标量。我不明白代码中的内容会导致它们成为矩阵。
我尝试使用.*
代替*
等,但没有成功。