返回信息流function R = rk4(f,g,h,a,b,xa,ya,za,N)
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
%x'=f(t,x,y,z) y'=g(t,x,y,z) z'=h(t,x,y,z)
%N为迭代次数
%h为步长
%ya,xa为初值
i=(b-a)/N;
T=zeros(1,N+1);
X=zeros(1,N+1);
Y=zeros(1,N+1);
Z=zeros(1,N+1);
T=a:i:b;
X(1)=xa;
Y(1)=ya;
Z(1)=za;
ut1=stepfun(T,900);
ut2=stepfun(T,910);
I=4-2.4*ut1+2.4*ut2;f=@(t,x,y,z)(y-x^3+3*x^2-z+ I);
g=@(t,x,y,z)(1-5*x^2-y);
h=@(t,x,y,z)(0.024*x-0.006*z+0.0384);
for j=1:N
f1=feval(f,T(j),X(j),Y(j),Z(j));
g1=feval(g,T(j),X(j),Y(j),Z(j));
h1=feval(h,T(j),X(j),Y(j),Z(j));
f2=feval(f,T(j)+i/2,X(j)+i/2*f1,Y(j)+i/2*g1,Z(j)+i/2*h1);
g2=feval(g,T(j)+i/2,X(j)+i/2*f1,Y(j)+i/2*g1,Z(j)+i/2*h1);
h2=feval(h,T(j)+i/2,X(j)+i/2*f1,Y(j)+i/2*g1,Z(j)+i/2*h1);
f3=feval(f,T(j)+i/2,X(j)+i/2*f2,Y(j)+i/2*g2,Z(j)+i/2*h2);
h3=feval(h,T(j)+i/2,X(j)+i/2*f2,Y(j)+i/2*g2,Z(j)+i/2*h2);
g3=feval(g,T(j)+i/2,X(j)+i/2*f2,Y(j)+i/2*g2,Z(j)+i/2*h2);
f4=feval(f,T(j)+i,X(j)+i*f3,Y(j)+i*g3,Z(j)+i*h3);
g4=feval(g,T(j)+i,X(j)+i*f3,Y(j)+i*g3,Z(j)+i*h3);
h4=feval(h,T(j)+i,X(j)+i*f3,Y(j)+i*g3,Z(j)+i*h3);
X(j+1)=X(j)+i*(f1+2*f2+2*f3+f4)/6;
Y(j+1)=Y(j)+i*(g1+2*g2+2*g3+g4)/6;
Z(j+1)=Z(j)+i*(h1+2*h2+2*h3+h4)/6;
R=[T' X' Y' Z'];
plot(T,X)
xlabel('t');
ylabel('x');
title('I=3.15');
axis([700,1050,-2.5,2.5]);
end
不一样颜色的 就是后加的内容
本来不加脉冲电流,是可以仿真出波形的,加了之后就出现以下的问题
??? Error using ==> mpower
Inputs must be a scalar and a square matrix.
Error in ==> rk4>@(t,x,y,z)(y-x^3+3*x^2-z+I) at 20
f=@(t,x,y,z)(y-x^3+3*x^2-z+ I);
Error in ==> rk4 at 28
f2=feval(f,T(j)+i/2,X(j)+i/2*f1,Y(j)+i/2*g1,Z(j)+i/2*h1);
修改后
又出现
In an assignment A(I) = B, the number of elements in B and I must be the same.
有没有大神知道是为什么QAQ
求帮助啊~
这是一条镜像帖。来源:北邮人论坛 / matlab / #10849同步于 2014/4/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
求助,想加个脉冲信号,代码就不行了
amy0724
2014/4/22镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。