matlab赋值维度不同怎么解决

有三个不同的微分方程组,其中两个运算之后作为参数代入另一个微分方程组运算,然后出现In an assignment  A(:) = B, the number of elements in A and B must be the same.的错误,怎么解决呢?

function dy=Z(t,y,C1,C2,F,H,Pb,P1,M,N,alpha,A,G,S)
dy=zeros(3,1);
dy(1)=y(1)*(1-y(1))*(-y(2)*Pb+y(3)*(2*H-Pb)+y(2)*y(3)*(2*F-2*H+Pb)-C1+C2+Pb);
dy(2)=y(2)*(1-y(2))*(y(1)*Pb+y(3)*(M+N+Pb)-y(1)*y(3)*Pb-P1);
dy(3)=y(3)*(1-y(3))*(-y(1)*A+y(2)*(G-S-A)+y(1)*y(2)*A-alpha+S+A);
end
function dx=S1(t,x,rho1,beta1,gamma1,epsilon1,tau1,k)
dx=zeros(3,1);
dx(1)=rho1*k*(1-x(1)-x(2)-x(3))*x(2)-epsilon1*x(1)-beta1*k*x(1)*x(2);
dx(2)=beta1*k*x(1)*x(2)+tau1*x(3)-gamma1*x(2);
dx(3)=gamma1*x(2)+epsilon1*x(1)-tau1*x(3);
end
function dz=S2(t,z,rho2,beta2,gamma2,epsilon2,tau2,k)
dz=zeros(3,1);
dz(1)=rho2*k*(1-z(1)-z(2)-z(3))*z(2)-epsilon2*z(1)-beta2*k*z(1)*z(2);
dz(2)=beta2*k*z(1)*z(2)+tau2*z(3)-gamma2*z(2);
dz(3)=gamma2*z(2)+epsilon2*z(1)-tau2*z(3);
end

 

E0=0.001,I0=0.0001,R0=0.01
rho1=0.2,beta1=0.1,gamma1=0.3,epsilon1=0.2,tau1=0.05,k=10;
rho2=0.3,beta2=0.2,gamma2=0.4,epsilon2=0.3,tau2=0.1,k=10;
p0=0.5,q0=0.5,z0=0.5
C1=3,C2=1,Pb=5,P1=5,alpha=3,A=5;n=10000,f1=0.1,f2=0.3,f3=0.2,m1=0.1,m2=0.3,m3=0.2,g1=0.1,g2=0.3,g3=0.2;
[t,x]=ode45(@(t,x)S1(t,x,rho1,beta1,gamma1,epsilon1,tau1,k),[0 10],[E0 I0 R0]);
x1=x(:,1);
x2=x(:,2);
x3=x(:,3); 
[t,z]=ode45(@(t,z)S2(t,z,rho2,beta2,gamma2,epsilon2,tau2,k),[0 10],[E0 I0 R0]);
z1=z(:,1);
z2=z(:,2);
z3=z(:,3);
F=(x1-E0)*(n+1)*f1+(x2-I0)*(n+1)*f2+(x3-R0)*(n+1)*f3;
M=(x1-E0)*(n+1)*m1+(x2-I0)*(n+1)*m2+(x3-R0)*(n+1)*m3;
G=(x1-E0)*(n+1)*g1+(x2-I0)*(n+1)*g2+(x3-R0)*(n+1)*g3;
H=(z1-E0)*(n+1)*f1+(z2-I0)*(n+1)*f2+(z3-R0)*(n+1)*f3;
N=(z1-E0)*(n+1)*m1+(z2-I0)*(n+1)*m2+(z3-R0)*(n+1)*m3;
S=(z1-E0)*(n+1)*g1+(z2-I0)*(n+1)*g2+(z3-R0)*(n+1)*g3;
[t,y]=ode45(@(t,y)Z(t,y,C1,C2,F,H,Pb,P1,M,N,alpha,A,G,S),[0 10],[p0 q0 z0]);
y1=y(:,1);
y2=y(:,2);
y3=y(:,3);

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,目前超出我们的服务范围,暂时无法为您解答。

首次提问人员可免费体验一次有问必答服务。目前首次提问的问题服务范围为:编程语言、Java开发、python、数据库、前端开发 领域专业技术问题,为您提供问题的解决思路和指导。不提供源码代写、项目文档代写、论文代写、作业代写、安装包资源发送或安装、软件使用指导等服务。

我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。