问题描述
在运行以下代码时,我收到此错误。我需要显示特定变量的所有解决方案的最小值。能否请我修复此错误或获得一些建议。
无法执行赋值,因为左侧和右侧的元素数量不同。
SpeciationCal 中的错误(第 38 行) m(i)=min(S.a)
syms a b c
x3=[ 0.038813753 0.109515494 0.258253623 0.250365943 0.266695352 0.254064153 0.355464596 0.367390937 0.367899743];
x1=[ 0.75197909 0.647030256 0.315659359 0.381316826 0.324185571 0.385450182 0.198472313 0.161364552 0.181784492];
x2=[ 0.209207157 0.243454249 0.426087018 0.368317231 0.409119077 0.360485665 0.446063091 0.47124451 0.450315765];
T=[384.2 392.1 396.4 392 406.1 405 409.6 416.2 416.4 417.1];
roundn = @(x,n) round(x.*10.^n)./10.^n;
x1=roundn(x1,5)
x2=roundn(x2,5)
x3=roundn(x3,5)
N=length(x1);
K1=zeros(N,1);K2=zeros(N,1);K3=zeros(N,1);m=zeros(N,1);n=zeros(N,1);o=zeros(N,1);
for i=1:N
K1(i)=exp((-936.28)+((40216.27)/T(i))+(151.983*(log(T(i))))+(-0.1675*(T(i))))
K2(i)=exp((1044.78)+(-45171.42/T(i))+(-165.20*log(T(i))+(0.1511*(T(i)))))
K3(i)=exp((-228.838)+(12587.48/T(i))+(40.68593*log(T(i)))+(-0.09838*(T(i))))
eqns=[((a*(a-b-3*b))/((x1(i)-a-c+3*b)^4*(x2(i)-a-c)))==K1,((b*3*b)/(a-b-3*b)*(x3(i)-b))==K2,((c*c)/((x1(i)-a-c+3*b)*(x2(i)-a-c)))==K3]
S=vpasolve(eqns,[a,b,c])
warning('off','symbolic:numeric:NumericalInstability')
S.a(S.a<0)=[];
S.b(S.b<0)=[];
S.c(S.c<0)=[];
idxa= abs(imag(S.a)) < eps;
idxb = abs(imag(S.b)) < eps;
idxc = abs(imag(S.c)) < eps;
S.a = S.a(idxa);
S.b = S.b(idxb);
S.c = S.c(idxc);
m(i)=min(S.a)
n(i)=min(S.b)
o(i)=min(S.c)
end
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)