I'm trying to solve a system of differential equations. After a ridiculous amount of attempts I think i've finally managed to use ode15i correctly but it won't solve as the matrix is singular and I can't figure out why. I'd greatly appreacite it if someone could take a look at this and help me sort this out.
clc
n_total = 3.2203e21;
r = 2; % [cm]
h = 30; % [cm]
Volume = pi*(r.^2)*h; % [cm^3]
e = 1.602e-19;% [C]
n_total = 3.22E21; % [1/cm^3], from P = nkT
tspan = [0 1E-3];
x0 = [1.5; 10E9; n_total; 0];
x01 = [0; 0 ;0 ;0];
%[X0,X01] = decic(@odefun,0,x0,[1 1 0 0],x01,[]);
[t,y] = ode15i(@odefun, tspan, x0, [0; 0; 0; 0])
nAr = y(:,3);
plot(t, nAr);
function res = odefun(t, x, x1)
r = 2; % [cm]
h = 30; % [cm]
Volume = pi*(r.^2)*h; % [cm^3]
e = 1.602e-19;% [C]
kb = 1.38E-23; % [J/K]
Tg = 300; % [K]
Ti = Tg;
PAr = 13.3322; % [Pa], given as 0.1m[Torr]
n_total = PAr/ (kb*Tg); % [1/cm^3], from P = nkT
A = r/2.405;
uio = 1.53; % [cm^2/ V-s]
Patm = 101325; % [Pa], given as 1 atm
natm = Patm/ (kb*Tg);
Di = uio*(natm/n_total)*((kb*Ti)/e); % [cm^2/ V-s], n= n(total)
E1 = 11.6; % [eV]
E2 = 16; % [eV]
Power_den = 100/Volume;
res = zeros(4,1);
k3 = 10000;
k1 = ((2.5E-9).*(x(1).^0.74).*exp(-11.6./ x(1))); %%[cm^3/s]
k2 = ((2.3E-8).*(x(1).^0.68).*exp(-16./x(1))); %%[cm^3/s]
k4 = ((Di.*(1 + x(1)./ Ti)) ./A.^2); %[1/s]
Rate_sum = k1.*x(2).*x(3)*E1 + k2.*x(2).*x(3)*E2 + k3.*x(4) + k4.*x(2);
res(1) = x1(1) - (2./ (3*x(2)*kb))*(Power_den - Rate_sum) + x1(2).*(x(1)./x(2));
res(2) = x1(2) - x(2).*(k2.*x(3) - k4);
res(3) = x1(3) + k1.*x(2).*x(3) + k2.*x(2).*x(3) - k3.*x(4) - k4.*x(2);
res(4) = x1(4) - k1.*x(2).*x(3) + k3.*x(4);
end

Respuestas (1)

Torsten
Torsten el 30 de Abr. de 2018

0 votos

You return NaN values to ode15i within your vector "res". So you should check your inputs.
Best wishes
Torsten.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Preguntada:

el 30 de Abr. de 2018

Respondida:

el 30 de Abr. de 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by