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

求解非线性方程时的输出误差

如何解决求解非线性方程时的输出误差

在运行以下代码时,我收到此错误。我需要显示特定变量的所有解决方案的最小值。能否请我修复此错误或获得一些建议。

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

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 举报,一经查实,本站将立刻删除。