微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 syms 求解非线性方程时为变量赋值时出错

如何解决使用 syms 求解非线性方程时为变量赋值时出错

我正在尝试求解一些非线性方程。运行时出现如下错误。请问这个错误到底是什么意思(因为我需要所有解决方案的最小正值)以及如何解决

无法执行赋值,因为左侧和右侧的元素数量不同。

SpeciationCal 中的错误(第 29 行)

n(i)=min(S.b)

syms a b c
x3=[0.000804557 0.038813753 0.109515494 0.258253623 0.250365943 0.266695352 0.254064153 0.355464596 0.367390937 0.367899743];
x1=[0.812965986 0.75197909 0.647030256 0.315659359 0.381316826 0.324185571 0.385450182 0.198472313 0.161364552 0.181784492];
x2=[0.186229457 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];
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))/((x1(i)-a-c+3*b)*(x2(i)-a-c)))==K1(i),((b*3*b)/(a-b)*(x3(i)-b))==K2(i),((c*c)/((x1(i)-a-c+3*b)*(x2(i)-a-c)))==K3(i)]
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 举报,一经查实,本站将立刻删除。