急!用matlab解微分方程组程序报错(附源程序)越快告诉就追加悬赏

2025-06-24 08:09:04
推荐回答(2个)
回答1:

没有大错误,将中文标点改下就行了

新建一个cjxxfun.m文件

function yp=cjxxfun(t,y,flag,q,m)

yp=[y(4);y(5);y(6);q*(10*y(3)+1)*y(5)/m-q*((-5*sqrt(y(1).^2+y(2).^2))*cos(pi/4))*y(6)/m;q*((-5*sqrt(y(1).^2+y(2).^2))*sin(pi/4))*y(6)/m;-q*((-5*sqrt(y(1).^2+y(2).^2))*sin(pi/4))*y(5)/m];

在command窗口输入下面代码结果就有了

clear;

q=1.6e-19;

m=1.6725e-27;

V0=1e6;sita=pi/4;

Vy=0;Vz=V0*cos(sita);Vx=V0*sin(sita);

c=[0;1;0;Vx;Vy;Vz];%给定初始量

[t,y]=ode45('cjxxfun',[0:1e-7:1.5e-6],c,[],q,m);%解微分方程组

plot3(y(:,1),y(:,2),y(:,3),'linewidth',2);%绘制三维粒子运动轨迹

xlabel('z');ylabel('y');zlabel('x');

grid on;title('磁镜现象')

figure

subplot(2,1,1);

plot(y(:,1),y(:,2),'linewidth',2);%从yoz面看到的轨迹

xlabel('z');ylabel('y');

grid on;title('yoz平面')

subplot(2,1,2);

plot(y(:,1),y(:,3),'linewidth',2);%从xoz面观察的轨迹

xlabel('z');ylabel('x');

title('xoz平面');grid on;

回答2:

1、单引号应为半角,但写成全角了:替换所有的(‘)和(’)为(')。

2、函数定义应该写成:
function yp=cjxxfun(t,y,q,m)
也就是说,没有那个flag。