Matlab 彗星图中的错误
尝试在matlab中运行此代码,但出现错误: 在赋值A(:)=B中,A和B中的元素数必须相同 轨道运行中出错(第33行)Matlab 彗星图中的错误,matlab,plot,error-handling,Matlab,Plot,Error Handling,尝试在matlab中运行此代码,但出现错误: 在赋值A(:)=B中,A和B中的元素数必须相同 轨道运行中出错(第33行) Fx(i+1)=轨道力x(x(i+1)) 似乎它无法从武力来源获得我想要的信息。我应该换个说法吗 轨道运行 clear all; global m; global kappa; global x; m=2.2e14; kappa= 39.5; x(1)=1.97; y(1)=0.00; vx(1)=0.50; vy(1)=0
Fx(i+1)=轨道力x(x(i+1)) 似乎它无法从武力来源获得我想要的信息。我应该换个说法吗 轨道运行
clear all;
global m;
global kappa;
global x;
m=2.2e14;
kappa= 39.5;
x(1)=1.97;
y(1)=0.00;
vx(1)=0.50;
vy(1)=0.816;
r(1)=sqrt(x(1).*x(1)+y(1).*y(1));
Fx(1)=kappa.*x(1).*m./(r(1).^3);
Fy(1)=kappa.*y(1).*m./(r(1).^3);
tau=0.01;
t(1)=0;
n=1000;
for i=1:n
t(i+1)=t(1)+i*tau;
x(i+1)=x(i)+tau.*vx(i)+tau.^2.*(1./(2.*m)).*Fx(i);
y(i+1)=y(i)+tau.*vy(i)+tau.^2.*(1./(2.*m)).*Fy(i);
r=sqrt(x(i+1).^2+y(i+1).^2);
Fx(i+1)= Orbit_Forcex(x(i+1));
Fy(i+1)= Orbit_Forcey(y(i+1));
vx(i+1)=vx(i)+tau.*(Fx(i+1)+Fx(i))./(2.*m);
vy(i+1)=vy(i)+tau.*(Fy(i+1)+Fy(i))./(2.*m);
plot(x,y);
M(i) = getframe;
end
movie(M)
和部队:
轨道力
function [ Force ] = Orbit_Forcey(y)
global m;
global kappa;
global r;
Force =-kappa.*y.*m(1./r).^2;
end
轨道力
function [ Force ] = Orbit_Forcex(x)
global m;
global kappa;
global r;
Force =-kappa.*x.*m(1./r).^2;
end
完整的错误消息是什么?另外,想想你的指数。在上一次循环迭代中,您试图访问
x
的哪一部分?@excaza>>Orbit\u在分配A(:)=B中运行时,A和B中的元素数必须相同。轨道运行错误(第33行)Fx(i+1)=轨道力x(x(i+1));X和Y是轨道力:)全局是个坏主意,除非你真的需要它们(你不需要)。在这里,您使用x作为全局参数和函数参数,因此不清楚这里发生了什么和/或打算发生什么。我建议您删除global,并将m和kappa传递到每个函数中。