Matlab 彗星图中的错误

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

尝试在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.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传递到每个函数中。