Undefined function 'm' for input arguments of type 'double
Afficher commentaires plus anciens
Hi, I don't know why I keep getting this error..I've made deep search on the forum but I got no solution.. Here's my function:
function [x,y,vx,vy,t] = ss(gx,gy,hx,hy,t0,tN,x0,y0,vx0,vy0,B,N)
%step size%
dt=(tN-t0)/(N-1);
%arrays%
t=linspace(t0,tN,N);
ax=zeros(B,N);
ay=zeros(B,N);
vx=zeros(B,N);
vy=zeros(B,N);
x=zeros(B,N);
y=zeros(B,N);
for i = 1:B
x(i,1)=x0(i);
y(i,1)=y0(i);
vx(i,1)=vx0(i);
vy(i,1)=vy0(i);
end
for i = 1:B % body number %
%Initial acceleration
for k = 1:N-1
for j = 1:B % rest of bodies%
if j==i %nothing%
else
ax(i,k)=ax(i,k)+gx(x(j,k)-x(i,k),y(j,k)-y(i,k),m(j));
ay(i,k)=ay(i,k)+gy(x(j,k)-x(i,k),y(j,k)-y(i,k),m(j));
end
end
%tmid = t(k)+dt/2;
xmid = x(i,k)+hx(vx(i,k)).*(dt/2); %????
ymid = y(i,k)+hy(vy(i,k)).*(dt/2); %????
vxmid = vx(i,k)+ax(i,k).*(dt/2);
vymid = vy(i,k)+ay(i,k).*(dt/2);
for j = 1:B % rest of bodies%
if j==i %nothing%
else
ax(i,k)=ax(i,k)+gx(x(j,k)-xmid,y(j,k)-ymid,m(j));
ay(i,k)=ay(i,k)+gy(x(j,k)-xmid,y(j,k)-ymid,m(j));
end
end
x(i,k+1) = x(i,k)+hx(vxmid).*dt; %????
y(i,k+1) = v(i,k)+hy(vymid).*dt; %????
vx(i,k+1) = vx(i,k)+ax(i,k).*dt;
vy(i,k+1) = vy(i,k)+ay(i,k).*dt;
end
end
Here's the script:
%Initial values
G=1 ;
B=2 ;
m=[40000;87777] ;
ax=zeros(B,1);
ay=zeros(B,1);
t0=0 ;
tN=365 ;
x0=[5;98765] ;
y0=[8975647;86] ;
vx0=[2;3] ;
vy0=[4,5] ;
N=10 ;
gx = @ (x,y,m) ((G.*m.*x)./(((x.^2)+(y.^2)).^(3/2)));
gy = @ (x,y,m) ((G.*m.*y)./(((x.^2)+(y.^2)).^(3/2)));
hx = @ (x,y,m) (vx);
hy = @ (x,v,m) (vy);
[x,y,vx,vy,t] = ss(gx,gy,hx,hy,t0,tN,x0,y0,vx0,vy0,B,N);
And the error is...
Undefined function 'm' for input arguments of type 'double'.
Error in ss (line 27)
ax(i,k)=ax(i,k)+gx(x(j,k)-x(i,k),y(j,k)-y(i,k),m(j));
Thanks in advance!
Réponse acceptée
Plus de réponses (1)
James Tursa
le 1 Avr 2015
1 vote
Error seems straight forward to me ... once you reach that line m is not defined, hence the error. Is m supposed to be a vector containing the mass of the objects, and you forgot to define it?
Catégories
En savoir plus sur Functions dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!