【问题标题】:Keeping iteration results as an array将迭代结果保存为数组
【发布时间】:2022-01-06 15:43:38
【问题描述】:

我如何才能将我想要计算的所有数量的所有迭代结果保留为最后的数组(行向量)。这是我的代码。

#import numpy library
import numpy as np

#define the function to compute SHM main quantities for sevral masses
def SHM(k,x,m,v):
    for i in range(0,len(m)):
        Fx = -k*x 
        ax = -(k/m[i])*x 
        w  = np.sqrt(k/m[i]) 
        f  = w/2*(np.pi) 
        T  = 1/f 
        Ek = (1/2)*m[i]*v**2 
        Ep = (1/2)*k*x**2 
        Et = Ek + Ep 
    
    return Fx, ax, w, f, T, Ek, Ep, Et

#Define the values you want to use for calculation
m = [0.2, 0.3, 0.4, 0.5]
k = 200
x = 0.015
v = 0.40

#Call the function
out = SHM(k,x,m,v)

#disaply the results
display(out)

我们将不胜感激。 谢谢。

【问题讨论】:

    标签: python arrays function numpy


    【解决方案1】:

    对我来说,使用 python List 很容易,如下所示。

    #import numpy library
    import numpy as np
    
    #define the function to compute SHM main quantities for sevral masses
    def SHM(k,x,m,v):
        Fx = list()
        ax = list()
        w = list()
        f = list()
        T = list()
        Ek = list()
        Ep = list()
        Et = list()
        for i in range(0,len(m)):
            Fx.append(-k*x)
            ax.append(-(k/m[i])*x )
            w1  = np.sqrt(k/m[i]) 
            w.append(w1)
            f1  = w1/2*(np.pi)
            f.append(f1)
            T.append(1/f1) 
            Ek1 =(1/2)*m[i]*v**2
            Ek.append(Ek1)
            Ep1 = (1/2)*k*x**2 
            Ep.append(Ep1)
            Et.append(Ek1 + Ep1)
        
        return Fx, ax, w, f, T, Ek, Ep, Et
    
    #Define the values you want to use for calculation
    m = [0.2, 0.3, 0.4, 0.5]
    k = 200
    x = 0.015
    v = 0.40
    
    #Call the function
    out = SHM(k,x,m,v)
    
    #disaply the results
    print(out)
    

    输出:

    ([-3.0, -3.0, -3.0, -3.0], [-15.0, -10.0, -7.5, -6.0], [31.622776601683793, 25.819888974716115, 22.360679774997898, 20.0], [49.6729413289805, 40.55778675973612, 35.12407365520363, 31.41592653589793], [0.020131684841794818, 0.024656177762459992, 0.02847050173668708, 0.03183098861837907], [0.016000000000000004, 0.024000000000000004, 0.03200000000000001, 0.04000000000000001], [0.0225, 0.0225, 0.0225, 0.0225], [0.038500000000000006, 0.0465, 0.05450000000000001, 0.0625])
    

    【讨论】:

      【解决方案2】:

      除了@cnp 的回答,您还可以在每次迭代时存储值,以便在每次 m 迭代时了解每个变量的状态。

      #import numpy library
      import numpy as np
      
      #define the function to compute SHM main quantities for sevral masses
      def SHM(k,x,m,v):
          iters = [] #create empty list
          for i in range(0,len(m)):
              Fx = -k*x 
              ax = -(k/m[i])*x 
              w  = np.sqrt(k/m[i]) 
              f  = w/2*(np.pi) 
              T  = 1/f 
              Ek = (1/2)*m[i]*v**2 
              Ep = (1/2)*k*x**2 
              Et = Ek + Ep 
              iter = [Fx, ax, w, f, T, Ek, Ep, Et]
              iters.append(iter)
          
          return iters
      
      #Define the values you want to use for calculation
      m = [0.2, 0.3, 0.4, 0.5]
      k = 200
      x = 0.015
      v = 0.40
      
      #Call the function
      out = SHM(k,x,m,v)
      
      #display the results
      display(out)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多