请问这一串代码出现“数组索引必须为正整数或逻辑值”如何解决

请问这一串代码为何运行不了
问题相关代码,请勿粘贴截图

close all
clear all
clc
z=79;
k=9e9;%k=1/(4πε0)为静电力常量,值为8.98810^9(Nm^2)/C^2;
e=1.6e-19;%e为基元电荷;
m=6.68e-27;%m为alpha粒子质量;
a=2ze^2k/m;
vx0=input('请输入初始速度(速度范围1-3):')
t=0;
x=-50;
E=5;
vx=(2
E/m)^(1/2);
vy=0;
i=1;
for b=-20:5:20
line(0,0,'marker','.','markersize',50,'color','r');
text(2,0,'靶粒子');
hold on
while t<1000;
r(i)=(x(i)^2+b^2)^(1/2);
phi(i)=acos(x(i)/r(i));
ax(i)=(a/r(i)^2)*cos(phi(i));
ay(i)=(a/r(i)^2)*sin(phi(i));
x(i)=x(i)+vx(i)*1+(1/2)*ax(i)*1^2;
y(i)=b+vy(i)*1+(1/2)*ay(i)*1^2;
vx(i)=vx(i)+ax(i)*1;
vy(i)=vy(i)+ay(i)*1;
t=t+1;
plot(x(i),y(i),'ko')
i=i+1
end
end

运行结果及报错内容

索引超出数组范围。

出错 Untitled14 (line 21)
r(i)=(x(i)^2+b^2)^(1/2);

我的解答思路和尝试过的方法
我想要达到的结果

用volecity-verlet算法,想输出粒子在各个时刻的位置

i的初始值为多少,i不能为0

索引用的i为什么循环条件是t,可能是i没有给初始值