Matlab数组中的实数找出来
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/30 13:07:55
Matlab数组中的实数找出来
%Matlab程序如下,是关于求根的,三重根有实数根,也有复数根,我只要实数根,怎么拣选V?
clc;clear
% Tb/K Tc/K Pc/MPa Zc ω
% 甲烷 乙烷 丙烷 正丁烷 异丁烷 丙烯 苯 甲苯 甲醇 乙醇 丙酮 Ar O2 N2 H2 CO2 H2O NH3 R12(CCl2F2) R22(CHClF2)
dat=[
111.6300 190.5800 4.6040 0.2280 0.0110
184.5500 305.3300 4.8700 0.2840 0.0990
231.0500 369.8500 4.2490 0.2800 0.1520
272.6500 425.4000 3.7970 0.2740 0.1930
261.3000 408.1000 3.6480 0.2830 0.1760
225.4600 364.8000 4.6100 0.2750 0.1480
353.2400 562.1600 4.8980 0.2710 0.2110
383.7800 591.7900 4.1040 0.2640 0.2640
337.7000 512.6400 8.0920 0.2240 0.5640
351.4400 516.2500 6.3790 0.2400 0.6350
329.3500 508.1000 4.7000 0.2320 0.3090
87.3000 150.8000 4.2350 0.2910 -0.0040
90.1800 154.5800 5.0430 0.2890 0.0190
77.3500 126.1500 3.3940 0.2870 0.0450
20.3900 33.1900 1.2970 0.3050 -0.2200
185.1000 304.1900 7.3810 0.2740 0.2250
373.1500 647.3000 22.0640 0.2300 0.3440
239.8200 405.4500 11.3180 0.2420 0.2550
243.4000 385.0000 4.1240 0.2800 0.1760
232.4000 369.2000 4.9750 0.2670 0.2150 ];
Tc=dat(:,2);Pc=dat(:,3);omega=dat(:,5);
P=6.0; T=25+273.15; R=8.314
Tr=T./Tc;
%-Method1:V^3+alpha*V^2+beta*V+gamma=0
%PR(Peng-Robinson Equation
m=0.37646+1.54226*omega-0.26992*omega.^2;
alpha_c=(1+m.*(1-Tr.^0.5)).^2;
ac=0.457235*(R*Tc).^2./Pc;
a=ac.*alpha_c;
b=0.077796*(R*Tc./Pc);
for i=1:1:20;
c=[-P,(-P*b(i)+R*T),(2*R*T*b(i)-a(i)+3*P*b(i)^2),a(i)*b(i)-R*T*b(i)^2-P*b(i)^3 ];
V=roots(c)
end
%Matlab程序如下,是关于求根的,三重根有实数根,也有复数根,我只要实数根,怎么拣选V?
clc;clear
% Tb/K Tc/K Pc/MPa Zc ω
% 甲烷 乙烷 丙烷 正丁烷 异丁烷 丙烯 苯 甲苯 甲醇 乙醇 丙酮 Ar O2 N2 H2 CO2 H2O NH3 R12(CCl2F2) R22(CHClF2)
dat=[
111.6300 190.5800 4.6040 0.2280 0.0110
184.5500 305.3300 4.8700 0.2840 0.0990
231.0500 369.8500 4.2490 0.2800 0.1520
272.6500 425.4000 3.7970 0.2740 0.1930
261.3000 408.1000 3.6480 0.2830 0.1760
225.4600 364.8000 4.6100 0.2750 0.1480
353.2400 562.1600 4.8980 0.2710 0.2110
383.7800 591.7900 4.1040 0.2640 0.2640
337.7000 512.6400 8.0920 0.2240 0.5640
351.4400 516.2500 6.3790 0.2400 0.6350
329.3500 508.1000 4.7000 0.2320 0.3090
87.3000 150.8000 4.2350 0.2910 -0.0040
90.1800 154.5800 5.0430 0.2890 0.0190
77.3500 126.1500 3.3940 0.2870 0.0450
20.3900 33.1900 1.2970 0.3050 -0.2200
185.1000 304.1900 7.3810 0.2740 0.2250
373.1500 647.3000 22.0640 0.2300 0.3440
239.8200 405.4500 11.3180 0.2420 0.2550
243.4000 385.0000 4.1240 0.2800 0.1760
232.4000 369.2000 4.9750 0.2670 0.2150 ];
Tc=dat(:,2);Pc=dat(:,3);omega=dat(:,5);
P=6.0; T=25+273.15; R=8.314
Tr=T./Tc;
%-Method1:V^3+alpha*V^2+beta*V+gamma=0
%PR(Peng-Robinson Equation
m=0.37646+1.54226*omega-0.26992*omega.^2;
alpha_c=(1+m.*(1-Tr.^0.5)).^2;
ac=0.457235*(R*Tc).^2./Pc;
a=ac.*alpha_c;
b=0.077796*(R*Tc./Pc);
for i=1:1:20;
c=[-P,(-P*b(i)+R*T),(2*R*T*b(i)-a(i)+3*P*b(i)^2),a(i)*b(i)-R*T*b(i)^2-P*b(i)^3 ];
V=roots(c)
end
你得到的根应该是存储在矩阵V中吧,可以从该矩阵中把实数选出来.
for k=1:length(V)
idx(k) = isreal(V(k,1));
end
z=V(idx)
主意isreal函数兵不是对矩阵中的某一分量进行判断,只要该矩阵中有一个复数值即判断为伪.所以我不得不用了循环.
for k=1:length(V)
idx(k) = isreal(V(k,1));
end
z=V(idx)
主意isreal函数兵不是对矩阵中的某一分量进行判断,只要该矩阵中有一个复数值即判断为伪.所以我不得不用了循环.
Matlab数组中的实数找出来
编写一个程序,利用for循环语句,不用数组,输入5个实数,把它们中的最大数和最小数找出来
matlab怎么来统计数组元素个数
matlab求各个数组最大值中的最小值
MATLAB中:如何剔除一个数组中的复数(前面元素是实数,后面是复数,复数的数量不定).
matlab 找出数组 中所有绝对值大于3的元素
matlab中如何找出不同维度矩阵的相同数组
编写一个函数,找出一个数组中的最大值和最小值.
matlab 如何按一定概率取数组中的值
matlab中如何剔除数组中的某些元素
matlab 数组中的科学计数法改成小数
matlab如何实现数组中的每一个元素都减去1