[已解决] MATLAB 编写求和公式时候出现报错

[复制链接]
zoneplay 发表于 2022-11-15 13:25:22
公式是:
报错是:The following error occurred converting from sym to double:
Unable to convert expression into double array.

这一部分代码是这样写的
syms i j
%M(I,J)和Eta(i,j)是5*5的矩阵用来存储计算之前运算的结果

a=zeros(1,5)
K=zeros(1,5)
for i=1:5
    for j=1:5
      if j~=i
a(1,i)=a(1,i)+y(1,j)*H(i,j)*(3+(2*M(1,j)/M(1,i)))%取数组中的元素进行计算
      end
    end
  K(1,i)=y(1,i)*Eta(1,i)/(y(1,i)+Eta(1,i)*a(1,i))%取数组中的元素进行计算
end

这样报错有什么办法解决吗?

最佳答案


20141303 发表于 2022-11-15 17:46:59
仅供参考
  1. clear
  2. clc
  3. %总拟合程序:
  4. syms T
  5. disp('the component is:CO2 H2O N2 Ar O2')
  6. Eta=[Eta_CO2(T) Eta_H2O(T) Eta_N2(T) Eta_Ar(T) Eta_O2(T)];%units MuP=10e-7 kg/ms
  7. y=[8 8 44.610 0.560 0];% mole fraction
  8. M=[44 18 28 40 32];%units kg/kmol
  9. Mu=[1.8 0 0 0 0];%units debye
  10. Tc=[304.12 647.14 126.2 150.86 154.58];%units K
  11. pc=[73.74 220.64 33.98 48.98 50.43];%units bar
  12. Mur=NaN(1,5);Tr=NaN(1,5);FR=NaN(1,5);U=NaN(1,5);C=NaN(1,5);
  13. Mur=52.48*(Mu.^2.*pc)./(Tc.^2)
  14. Tr=T./Tc
  15. FR=(Tr.^3.5+(10*Mur).^7)./(Tr.^3.5.*(1+(10*Mur).^7))
  16. U=(1+0.36*Tr.*(Tr-1)).^(1/6)./(Tr).^(0.5)
  17. C=M.^(0.25)./(Eta.*U).^(0.5)
  18. for i=1:5
  19.     for j=1:5
  20. Murm(i,j)=sqrt(Mu(i).*Mu(j));
  21.     end
  22. end


  23. for i=1:5
  24.     for j=1:5
  25. Trm(i,j)=T./sqrt(Tc(i).*Tc(j))
  26.     end
  27. end

  28. for i=1:5
  29.     for j=1:5
  30.         FRm(i,j)=(Trm(i,j).^3.5+(10*Murm(i,j)).^7)./(Trm(i,j).^3.5.*(1+(10*Murm(i,j)).^7))
  31.     end
  32. end

  33. for i=1:5
  34.     for j=1:5
  35. H(i,j)=sqrt(M(i).*M(j)./(32*(M(i)+M(j).^3))).*(C(i)+C(j)).^2.*(1+0.36*Trm(i,j).*(Trm(i,j)-1)).^(1/6).*FRm(i,j)./sqrt(Trm(i,j))
  36.     end
  37. end

  38. a=zeros(1,5)+0*T
  39. K=zeros(1,5)+0*T
  40. M=M+0*i
  41. for i=1:5
  42.     for j=1:5
  43.       if j~=i
  44. a(1,i)=a(1,i)+y(1,j)*H(i,j)*(3+(2*M(1,j)/M(1,i)))
  45.       end
  46.     end
  47.   K(1,i)=y(1,i)*Eta(1,i)/(y(1,i)+Eta(1,i)*a(1,i))
  48. end
  49. %函数一:Ar粘性拟合:
  50. function y=Eta_Ar(T)
  51. y=-3.0982+978.51*(T/1000)^1-922.67*(T/1000)^2+912.64*(T/1000)^3-593.76*(T/1000)^4+217.79*(T/1000)^5-33.919*(T/1000)^6;
  52. end

  53. %函数二:CO2粘性拟合:
  54. function y=Eta_CO2(T)
  55. y=-20.434+680.07*(T/1000)^1-432.49*(T/1000)^2+244.22*(T/1000)^3-85.929*(T/1000)^4+14.50*(T/1000)^5-0.4564*(T/1000)^6;
  56. end


  57. %函数三:%H2O粘性拟合:
  58. function y=Eta_H2O(T)
  59. y=-6.7541+ 244.93*(T/1000)^1-419.50*(T/1000)^2-522.38*(T/1000)^3+348.12*(T/1000)^4-126.96*(T/1000)^5+19.591*(T/1000)^6;
  60. end


  61. %函数四:%N2粘性拟合:
  62. function y=Eta_N2(T)
  63. y=1.2719+771.45*(T/1000)^1-809.20*(T/1000)^2+832.47*(T/1000)^3-553.93*(T/1000)^4+206.15*(T/1000)^5-32.430*(T/1000)^6;
  64. end

  65. %函数五:O2粘性拟合:
  66. function y=Eta_O2(T)
  67. y=-1.6918+889.75*(T/1000)^1-892.79*(T/1000)^2+905.98*(T/1000)^3-598.36*(T/1000)^4+221.64*(T/1000)^5-34.754*(T/1000)^6;
  68. end
复制代码

7 条回复


20141303 发表于 2022-11-15 14:53:59
仅供参考,试试
  1. syms i j
  2. %M(I,J)和Eta(i,j)是5*5的矩阵用来存储计算之前运算的结果

  3. a=zeros(1,5)+0*i;
  4. K=zeros(1,5)+0*i;
  5. for i=1:5
  6.     for j=1:5
  7.       if j~=i
  8. a(1,i)=a(1,i)+y(1,j)*H(i,j)*(3+(2*M(1,j)/M(1,i)))%取数组中的元素进行计算
  9.       end
  10.     end
  11.   K(1,i)=y(1,i)*Eta(1,i)/(y(1,i)+Eta(1,i)*a(1,i))%取数组中的元素进行计算
  12. end
复制代码

zoneplay 发表于 2022-11-15 15:19:41

你好,我试了把a和K加上0*i还是报错,它报错是现实这样
The following error occurred converting from sym to double:
Unable to convert expression into double array.

Error in tryniandu (line 45)
a(1,i)=a(1,i)+y(1,j)*H(i,j)*(3+(2*M(1,j)/M(1,i)))

之前的错误没复制完全。

zoneplay 发表于 2022-11-15 15:33:25


这个是计算的时候数据的类型,是不是要把这些double改成sym     
因为需要获得温度T拟合函数,所以我把T设置为了符号变量

20141303 发表于 2022-11-15 15:33:37
请上传完整代码

zoneplay 发表于 2022-11-15 17:07:23

新手做的比较繁琐用了五个拟合函数、和一个程序计算不同成分拟合

%函数一:Ar粘性拟合:
function y=Eta_Ar(T)
y=-3.0982+978.51*(T/1000)^1-922.67*(T/1000)^2+912.64*(T/1000)^3-593.76*(T/1000)^4+217.79*(T/1000)^5-33.919*(T/1000)^6;
end

%函数二:CO2粘性拟合:
function y=Eta_CO2(T)
y=-20.434+680.07*(T/1000)^1-432.49*(T/1000)^2+244.22*(T/1000)^3-85.929*(T/1000)^4+14.50*(T/1000)^5-0.4564*(T/1000)^6;
end


函数三:%H2O粘性拟合:
function y=Eta_H2O(T)
y=-6.7541+ 244.93*(T/1000)^1-419.50*(T/1000)^2-522.38*(T/1000)^3+348.12*(T/1000)^4-126.96*(T/1000)^5+19.591*(T/1000)^6;
end


函数四:%N2粘性拟合:
function y=Eta_N2(T)
y=1.2719+771.45*(T/1000)^1-809.20*(T/1000)^2+832.47*(T/1000)^3-553.93*(T/1000)^4+206.15*(T/1000)^5-32.430*(T/1000)^6;
end

%函数五:O2粘性拟合:
function y=Eta_O2(T)
y=-1.6918+889.75*(T/1000)^1-892.79*(T/1000)^2+905.98*(T/1000)^3-598.36*(T/1000)^4+221.64*(T/1000)^5-34.754*(T/1000)^6;
end


%总拟合程序:
syms T
disp('the component is:CO2 H2O N2 Ar O2')
Eta=[Eta_CO2(T) Eta_H2O(T) Eta_N2(T) Eta_Ar(T) Eta_O2(T)];%units MuP=10e-7 kg/ms
y=[8 8 44.610 0.560 0];% mole fraction
M=[44 18 28 40 32];%units kg/kmol
Mu=[1.8 0 0 0 0];%units debye
Tc=[304.12 647.14 126.2 150.86 154.58];%units K
pc=[73.74 220.64 33.98 48.98 50.43];%units bar
Mur=NaN(1,5);Tr=NaN(1,5);FR=NaN(1,5);U=NaN(1,5);C=NaN(1,5);
Mur=52.48*(Mu.^2.*pc)./(Tc.^2)
Tr=T./Tc
FR=(Tr.^3.5+(10*Mur).^7)./(Tr.^3.5.*(1+(10*Mur).^7))
U=(1+0.36*Tr.*(Tr-1)).^(1/6)./(Tr).^(0.5)
C=M.^(0.25)./(Eta.*U).^(0.5)
for i=1:5
    for j=1:5
Murm(i,j)=sqrt(Mu(i).*Mu(j));
    end
end


for i=1:5
    for j=1:5
Trm(i,j)=T./sqrt(Tc(i).*Tc(j))
    end
end

for i=1:5
    for j=1:5
        FRm(i,j)=(Trm(i,j).^3.5+(10*Murm(i,j)).^7)./(Trm(i,j).^3.5.*(1+(10*Murm(i,j)).^7))
    end
end

for i=1:5
    for j=1:5
H(i,j)=sqrt(M(i).*M(j)./(32*(M(i)+M(j).^3))).*(C(i)+C(j)).^2.*(1+0.36*Trm(i,j).*(Trm(i,j)-1)).^(1/6).*FRm(i,j)./sqrt(Trm(i,j))
    end
end

a=zeros(1,5)+0*i
K=zeros(1,5)+0*j
M=M+0*i
for i=1:5
    for j=1:5
      if j~=i
a(1,i)=a(1,i)+y(1,j)*H(i,j)*(3+(2*M(1,j)/M(1,i)))
      end
    end
  K(1,i)=y(1,i)*Eta(1,i)/(y(1,i)+Eta(1,i)*a(1,i))
end


tryniandu.m

1.21 KB, 下载次数: 0

Eta_O2.m

156 Bytes, 下载次数: 0

Eta_N2.m

155 Bytes, 下载次数: 0

Eta_H2O.m

159 Bytes, 下载次数: 0

Eta_CO2.m

155 Bytes, 下载次数: 0

Eta_Ar.m

156 Bytes, 下载次数: 0


20141303 发表于 2022-11-15 17:46:59
仅供参考
  1. clear
  2. clc
  3. %总拟合程序:
  4. syms T
  5. disp('the component is:CO2 H2O N2 Ar O2')
  6. Eta=[Eta_CO2(T) Eta_H2O(T) Eta_N2(T) Eta_Ar(T) Eta_O2(T)];%units MuP=10e-7 kg/ms
  7. y=[8 8 44.610 0.560 0];% mole fraction
  8. M=[44 18 28 40 32];%units kg/kmol
  9. Mu=[1.8 0 0 0 0];%units debye
  10. Tc=[304.12 647.14 126.2 150.86 154.58];%units K
  11. pc=[73.74 220.64 33.98 48.98 50.43];%units bar
  12. Mur=NaN(1,5);Tr=NaN(1,5);FR=NaN(1,5);U=NaN(1,5);C=NaN(1,5);
  13. Mur=52.48*(Mu.^2.*pc)./(Tc.^2)
  14. Tr=T./Tc
  15. FR=(Tr.^3.5+(10*Mur).^7)./(Tr.^3.5.*(1+(10*Mur).^7))
  16. U=(1+0.36*Tr.*(Tr-1)).^(1/6)./(Tr).^(0.5)
  17. C=M.^(0.25)./(Eta.*U).^(0.5)
  18. for i=1:5
  19.     for j=1:5
  20. Murm(i,j)=sqrt(Mu(i).*Mu(j));
  21.     end
  22. end


  23. for i=1:5
  24.     for j=1:5
  25. Trm(i,j)=T./sqrt(Tc(i).*Tc(j))
  26.     end
  27. end

  28. for i=1:5
  29.     for j=1:5
  30.         FRm(i,j)=(Trm(i,j).^3.5+(10*Murm(i,j)).^7)./(Trm(i,j).^3.5.*(1+(10*Murm(i,j)).^7))
  31.     end
  32. end

  33. for i=1:5
  34.     for j=1:5
  35. H(i,j)=sqrt(M(i).*M(j)./(32*(M(i)+M(j).^3))).*(C(i)+C(j)).^2.*(1+0.36*Trm(i,j).*(Trm(i,j)-1)).^(1/6).*FRm(i,j)./sqrt(Trm(i,j))
  36.     end
  37. end

  38. a=zeros(1,5)+0*T
  39. K=zeros(1,5)+0*T
  40. M=M+0*i
  41. for i=1:5
  42.     for j=1:5
  43.       if j~=i
  44. a(1,i)=a(1,i)+y(1,j)*H(i,j)*(3+(2*M(1,j)/M(1,i)))
  45.       end
  46.     end
  47.   K(1,i)=y(1,i)*Eta(1,i)/(y(1,i)+Eta(1,i)*a(1,i))
  48. end
  49. %函数一:Ar粘性拟合:
  50. function y=Eta_Ar(T)
  51. y=-3.0982+978.51*(T/1000)^1-922.67*(T/1000)^2+912.64*(T/1000)^3-593.76*(T/1000)^4+217.79*(T/1000)^5-33.919*(T/1000)^6;
  52. end

  53. %函数二:CO2粘性拟合:
  54. function y=Eta_CO2(T)
  55. y=-20.434+680.07*(T/1000)^1-432.49*(T/1000)^2+244.22*(T/1000)^3-85.929*(T/1000)^4+14.50*(T/1000)^5-0.4564*(T/1000)^6;
  56. end


  57. %函数三:%H2O粘性拟合:
  58. function y=Eta_H2O(T)
  59. y=-6.7541+ 244.93*(T/1000)^1-419.50*(T/1000)^2-522.38*(T/1000)^3+348.12*(T/1000)^4-126.96*(T/1000)^5+19.591*(T/1000)^6;
  60. end


  61. %函数四:%N2粘性拟合:
  62. function y=Eta_N2(T)
  63. y=1.2719+771.45*(T/1000)^1-809.20*(T/1000)^2+832.47*(T/1000)^3-553.93*(T/1000)^4+206.15*(T/1000)^5-32.430*(T/1000)^6;
  64. end

  65. %函数五:O2粘性拟合:
  66. function y=Eta_O2(T)
  67. y=-1.6918+889.75*(T/1000)^1-892.79*(T/1000)^2+905.98*(T/1000)^3-598.36*(T/1000)^4+221.64*(T/1000)^5-34.754*(T/1000)^6;
  68. end
复制代码
回复此楼

zoneplay 发表于 2022-11-15 17:59:03

非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表