我正试图逐行将代码从MATLAB转换为Python,但由于某些原因,我得到了不同的结果。
这是来自MATLAB的代码:
T = 150.00;
P = 3200.00;
P = P*6.894757*0.001;
w(1,1) = 1402.85; w(1,3) = 3.437*10^(-3); % Table 2
w(2,1) = 4.871; w(2,3) = 1.739*10^(-4);
w(3,1) = -0.04783; w(3,3) = -2.135*10^(-6);
w(4,1) = 1.487*10^(-4); w(4,3) = -1.455*10^(-8);
w(5,1) = -2.197*10^(-7); w(5,3) = 5.230*10^(-11);
w(1,2) = 1.524; w(1,4) = -1.197*10^(-5);
w(2,2) = -0.0111; w(2,4) = -1.628*10^(-6);
w(3,2) = 2.747*10^(-4); w(3,4) = 1.237*10^(-8);
w(4,2) = -6.503*10^(-7); w(4,4) = 1.327*10^(-10);
w(5,2) = 7.987*10^(-10); w(5,4) = -4.614*10^(-13);
sum = 0;
for i=1:5
for j=1:4
sum = sum+w(i,j)*T^(i-1)*P^(j-1);
end
end
v_water = sum
答案是CCD_ 1
但是,当我尝试使用以下语法将其转换为Python时:
T = 150.00;
P = 3200.00;
P = P*6.894757*0.001;
w = np.zeros(shape = (5,4))
w[0,0]=1402.85
w[0,2]=np.dot(3.437,10 ** (- 3))
w[1,0]=4.871
w[1,2]=np.dot(1.739,10 ** (- 4))
w[2,0]=- 0.04783
w[2,2]=np.dot(- 2.135,10 ** (- 6))
w[3,0]=np.dot(1.487,10 ** (- 4))
w[3,2]=np.dot(- 1.455,10 ** (- 8))
w[4,0]=np.dot(- 2.197,10 ** (- 7))
w[4,2]=np.dot(5.23,10 ** (- 11))
w[0,1]=1.524
w[0,3]=np.dot(- 1.197,10 ** (- 5))
w[1,1]=- 0.0111
w[1,3]=np.dot(- 1.628,10 ** (- 6))
w[2,1]=np.dot(2.747,10 ** (- 4))
w[2,3]=np.dot(1.237,10 ** (- 8))
w[3,1]=np.dot(- 6.503,10 ** (- 7))
w[3,3]=np.dot(1.327,10 ** (- 10))
w[4,1]=np.dot(7.987,10 ** (- 10))
w[4,3]=np.dot(- 4.614,10 ** (- 13))
sum=0
for i in range(5):
for j in range(4):
sum=sum + w[i,j]*T**(i-1)*P**(j-1)
v_water = sum
我得到v_water = 0.4605639858054064
。我在Python代码中做错了什么?
在MATLAB中,i的范围是1,。。。,5,。。。,4
在Python中,i的范围是0,。。。,4并且j范围是0、…、,。。。,3
然而,在这两个代码中,您都使用(i-1(和(j-1(表示幂。要获得相同的结果,您需要调整Python电源1。即,使用I和j代替(I-1(和(j-1(。