Производная y ^ 3 с использованием Matlab ode45 - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть два дифференциальных уравнения, которые я хотел бы решить одновременно, используя ode45 в Matlab, показанном ниже. Проблема, которую я имею, состоит в том, что второе дифференциальное уравнение фактически d (y ^ 3) / dt, то есть производная y ^ 3 по t. Как мне это выразить?

function dydt=odefcnNY(t,y,D,Cs,rho,r0,Af,N,V)
dydt=zeros(2,1);
dydt(1)=(3*D*Cs/rho*r0^2)*(y(1)/r0)*(1-y(2)/Cs);
dydt(2)=(D*4*pi*r0*N*(1-y(2)/Cs)*(y(1)/r0)-(Af*y(2)/Cs))/V;
end

D=4e-9;
rho=1300;
r0=10.1e-6;
Cs=0.0016;
V=1.5e-6;
W=4.5e-8;
N=W/(4/3*pi*r0^3*rho);
Af=0.7e-6/60;
tspan=[0 75000];
y0=[r0 Cs];
[t,y]=ode45(@(t,y) odefcnNY(t,y,D,Cs,rho,r0,Af,N,V), tspan, y0);
plot(t,y(:,1),'-o',t,y(:,2),'-.')

1 Ответ

0 голосов
/ 02 ноября 2019

d(y^3)/dt = 3 * y^2 * dy/dt, чтобы вы могли разделить второе уравнение с (3 * y(2) * y(2)). Это должно быть хорошо, если y (2) не приблизится к нулю.

Если оно приблизится к нулю, вам придется переписать ваше дифференциальное уравнение в терминах другой переменной, в которой второе уравнение не имеет особенностей. Например, у вас может быть u(t) = y^3(t), а затем y(t) = u(t)^{1/3} (вам нужно выяснить, будут ли неоднозначности с отрицательными корнями куба).

...