ode 45无法解决微分方程。

2次观看(过去30天)
Abhiram CD
Abhiram CD 2021年8月8日
回答: 达娃 2021年8月9日
我具有令人愉快的波浪引导泵功率的微分方程。颂歌应该在matlab中解决。我不知道如何正确使用颂歌。我在matlab中只解决了简单的颂歌。如果您可以查看它。请。
这是我的代码。
CLC.
清晰的
关闭全部
l = 10;
z = 0:0.1:l;
nt = [1.2 * 10 ^(20),1.2 * 10 ^(20),1.2 * 10 ^(20)];
AP = 0.23e2;
SCA = 2.1E-25;
TP = 0.85;
TCB = 30 * 10 ^( - 6);
TBA = 2.3 * 10 ^( - 3);
vs = 196E12;
vp = 307e12;
h = 6.625 * 10 ^( - 34);
pp0 = 10 ^( - 3);
PS0 = 10 ^( - 6);
SAB = 4.8E-2;
囊= 2.1 e-21;
SBA = 4.4E-21;
是= ps0 * exp(-ap)/(2 * pi * 0.8e-8);
IP = pp0 * exp(-ap * z)/(2 * pi * 0.8e-8);
WAB =是* sab / h * vs;
WAC = IP * SAC / H * VP;
WBA =是* sba / h * vs;
Nb =((WAB + WAC)/ 1 + WAC * TCB)/(WAB + WBA +(1 / TBA)+(WAC *(1-WAB * TCB)/(1 + WAC * TCB)));
NC =(WAC * TCB *(1-NB)')./(1 + WAC * TCB);
na = 1-nb-nc;
为了k = 1:3
ode_ = @(z,pp)(-ap +((sca * nc) - (sac * na))* tp * nt(k)* pp))';
psol(z)= ode45(ode_,[0 l],0);
pp_sol(k)= psol;
结尾
我需要在三个不同的NT瓦斯中的PP解决方案。这就是为什么我给了一个循环。这给了我一个错误。
%无法执行分配,因为左侧的索引与右侧的大小不兼容。
ode中的%误差(第42行)
%pp_sol(k)= psol;
z值不能作为数组给出。然后它给了我另一个错误,
使用odearguments%错误(第95行)
%@(z,pp)( - ap +(((sca * nc) - (sac * na))* tp * nt(k)* pp))'返回长度101的向量,但初始条件的长度
%载体为1. @(z,pp)返回的载体( - ap +(((sca * nc) - (sac * na))* tp * nt(k)* pp))'和初始条件矢量
%必须具有相同数量的元素。
ode45中的%误差(第115行)
%odearguments(fcnhandlesused,solver_name,ode,tspan,y0,选项,varargin);
ode中的%误差(第41行)
%psol(z)= ode45(ode_,[0 l],0);
我已将其作为随机alue检查循环是否正常工作。

答案(1)

达娃
达娃 2021年8月9日
试试这个方法
psol = [];
为了k = 1:3
ode_ = @(z,pp)(-ap +((sca * nc) - (sac * na))* tp * nt(k)* pp))';
psol = [psol;ode45(ode_,[0 l],0)];
结尾

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!