Converting symbolic matrix to numeric matrix with while loop
Show older comments
I am trying to convert several 1x11 symbolic matrix to a 1x11 numeric matrix.
WhenI run the code it gives the error:
Reference to non-existent field 'Ni'.
Error in Carbon_IB_HW (line 50)
solN1(1,i) = double(sol.Ni);
Does anyone know how I can define the elements in the matricies so I don't get this error? Or if there is some other way I can set this up that will avoid this problem entirely? Thanks.
The relevent code is:
clc
clear all
%Defining know values
T = linspace(10^8,10^9,11);
l10T = log10(T);
a1 = [5.91e-15 4.42e-15 3.30e-15 2.46e-15 1.83e-15 1.36e-15 1.01e-15 7.53e-16 5.60e-16 4.17e-16 2.10e-16];
a2 = [4.22e-15 3.02e-15 2.16e-15 1.55e-15 1.12e-15 8.05e-16 5.83e-16 4.24e-16 3.10e-16 2.28e-16 1.69e-16];
a3 = [4.49e-15 3.27e-15 2.39e-15 1.74e-15 1.28e-15 9.36e-16 6.89e-16 5.09e-16 3.77e-16 2.81e-16 2.11e-16];
a4 = [3.14e-14 2.25e-14 1.61e-14 1.15e-14 8.17e-15 5.82e-15 4.15e-15 2.96e-15 2.11e-15 1.50e-15 1.07e-15];
a5 = [6.95e-14 4.98e-14 3.57e-14 2.56e-14 1.84e-14 1.32e-14 9.43e-15 6.76e-15 4.84e-15 3.48e-15 2.50e-15];
a6 = [1.33e-14 1.01e-14 7.56e-15 5.65e-15 4.21e-15 3.12e-15 2.30e-15 1.69e-15 1.24e-15 9.11e-16 6.63e-16];
k = 1.38e-23;
m = 1.9944235e-26;
V = sqrt((2*k.*(T.*11600))./(m));
I1 = 10.6; A11 = 1.829; A12 = -1.975; A13 = 1.149; A14 = -3.583; A15 = 2.451;
I2 = 24.4; A21 = 8.390e-1; A22 = -7.95e-1; A23 = 3.263; A24 = -5.382; A25 = 3.476;
I3 = 41.4; A31 = 4.009e-1; A32 = -3.518e-1; A33 = 2.375; A34 = -3.992; A35 = 2.794;
I4 = 64.5; A41 = 1.350; A42 = -8.748e-1; A43 = -1.444; A44 = 2.330; A45 = -2.730;
I4b = 285; A41b = -2.777; A42b = 5.376; A43b = -8.748; A44b = 1.766e1; A45b = -9.086;
I5 = 392; A51 = 9.205e-1; A52 = -6.297e-1; A53 = 1.316; A54 = -9.156e-2; A55 = 0;
I6 = 490; A61 = 2.489e-1; A62 = 1.847e-1; A63 = 4.475e-2; A64 = -9.432e-2; A65 = 5.122e-1;
E = 6.242e18.*(.5*m.*V.^2);
%Solving for collisional cross section
Si1 = (1e-13./(I1.*E)).*((A11.*log(E./I1))+((A12.*(1-(I1./E).^1))+(A13.*(1-(I1./E).^2))+(A14.*(1-(I1./E).^3))+(A15.*(1-(I1./E).^4))));
Si2 = (1e-13./(I2.*E)).*((A21.*log(E./I2))+((A22.*(1-(I2./E).^1))+(A23.*(1-(I2./E).^2))+(A24.*(1-(I2./E).^3))+(A25.*(1-(I2./E).^4))));
Si3 = (1e-13./(I3.*E)).*((A31.*log(E./I3))+((A32.*(1-(I3./E).^1))+(A33.*(1-(I3./E).^2))+(A34.*(1-(I3./E).^3))+(A35.*(1-(I3./E).^4))));
Si4 = (1e-13./(I4.*E)).*((A41.*log(E./I4))+((A42.*(1-(I4./E).^1))+(A43.*(1-(I4./E).^2))+(A44.*(1-(I4./E).^3))+(A45.*(1-(I4./E).^4))));
Si4b = (1e-13./(I4b.*E)).*((A41b.*log(E./I4))+((A42b.*(1-(I4b./E).^1))+(A43b.*(1-(I4b./E).^2))+(A44b.*(1-(I4b./E).^3))+(A45b.*(1-(I4b./E).^4))));
Si5 = (1e-13./(I5.*E)).*((A51.*log(E./I5))+((A52.*(1-(I5./E).^1))+(A53.*(1-(I5./E).^2))+(A25.*(1-(I5./E).^3))+(A55.*(1-(I5./E).^4))));
Si6 = (1e-13./(I6.*E)).*((A61.*log(E./I6))+((A62.*(1-(I6./E).^1))+(A63.*(1-(I6./E).^2))+(A64.*(1-(I6./E).^3))+(A65.*(1-(I6./E).^4))));
S1 = Si1.*V;
S2 = Si2.*V;
S3 = Si3.*V;
S4 = (Si4.*V)+(Si4b.*V);
S5 = Si5.*V;
S6 = Si6.*V;
%Solving system of equations to find populations at level N'x'
n = 11;
N1 = sym('N1',[1 n]);
N2 = sym('N2',[1 n]);
N3 = sym('N3',[1 n]);
N4 = sym('N4',[1 n]);
N5 = sym('N5',[1 n]);
N6 = sym('N6',[1 n]);
eqns = [N1 == N2.*(a2./S1), N2 == N3.*(a3./S2), N3 == N4.*(a4./S3),...
N4 == N5.*(a5./S4), N5 == N6.*(a6./S5), 1 == N1+N2+N3+N4+N5+N6];
sol = solve(eqns,[N1 N2 N3 N4 N5 N6]);
solN1 = zeros(1,n);
solN2 = zeros(1,n);
solN3 = zeros(1,n);
solN4 = zeros(1,n);
solN5 = zeros(1,n);
solN6 = zeros(1,n);
i=1;
while i<=11
solN1(1,i) = double(sol.N1i);
solN2(1,i) = double(sol.N2i);
solN3(1,i) = double(sol.N3i);
solN4(1,i) = double(sol.N4i);
solN5(1,i) = double(sol.N5i);
solN6(1,i) = double(sol.N6i);
i=i+1;
end
Accepted Answer
More Answers (0)
Categories
Find more on Programming in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!