矩阵仅产生预期数据的一半

时间:2019-04-17 16:07:55

标签: python-3.x matrix

我正在运行一个python代码来绘制力矩和剪力图,以给出力,长度,力的大小,约束和位置。当我创建矩阵时,只有101个值,而不是101个值,其余均为0。 V的第一个值也应该是0.75。 长度是10 C1是2 C2是2 FL是2.5 FM为1 FN为1 这些图表明值也以5结尾。

FL=[0]
FM=[0]
n=0

Length = float(input("What is the length? In FT \n"))
C1 = int(input("What is the left constraint?\n 1 for Fixed. \n 2 for Pinned \n"))
C2 = int(input("What is the right constraint?\n 1 for Fixed. \n 2 for Pinned \n"))
FN = int(input("How many forces are present? \n"))
while (n<FN):
    fl = float(input("What is the location of the force?\n"))
    FL.insert(n,fl)
    fm = float(input("What is the magnitude of the force?\n"))
    FM.insert(n,fm)
    n = n+1
#Code = str(input("What code is being used?\n"))


from Forces import forces
forces=forces(Length, C1, C2, FL, FM, FN)

def forces(Length, C1, C2, FL, FM, FN):

#graph plottting    
    k=1
    x=[0]
    x1=0
    while (k<101):
        x1=k*Length/(100)
        x.insert(k,x1)
        k= k+1
    import numpy as np    
    Mx=np.zeros(shape=(k,FN+1))
    Vx=np.zeros(shape=(k,FN+1))

    #NDS 2005
    #Figure 7,8,9,10 & 11, Simple Beam - Concentrated load at Any point
    if (C1==2 and C2==2):
        NF=1
        while (NF<=FN):

            #moment diagram
            np.put(Mx,(0,1),0, mode='clip')
            m=1
            m1=0
            while(m<k-1):
                if (float(FL[NF-1])< Length*(m/100)):
                    m1=m1-float(FM[NF-1])*float(FL[NF-1])/(100)
                else:
                    m1=float(FM[NF-1])*(Length-float(FL[NF-1]))*m/(100)
                np.put(Mx,(m,NF),m1,mode='clip')
                m= m+1
            np.put(Mx,(100,1),0,mode='clip')

            #shear diagram points
            v=0
            v1=0
            while(v<k):
                if ((float(FL[NF-1])< Length*(v/100)) and v!=0):
                    v1=-float(FM[NF-1])*float(FL[NF-1])/(Length)
                else:
                    v1=float(FM[NF-1])*(Length-float(FL[NF-1]))/(Length)
                np.put(Vx,(v,NF),v1,mode='clip')
                v= v+1
            NF=NF+1
        i=0
        while (i<k):
            NF=1
            while (NF<=FN):
                if (FN == 1):
                    Mx[i,0]=(Mx[i,NF])
                    Vx[i,0]=(Vx[i,NF])
                else:
                    Mx[i,0]=(Mx[i,NF]+Mx[i,0])
                    Vx[i,0]=(Vx[i,NF]+Vx[i,0])
                NF = NF + 1
            i=i+1


        import matplotlib.pyplot as plt
        plt.plot(x, Mx[:,0], color='g')
        plt.xlabel('Length ft')
        plt.ylabel('Kip ft')
        plt.title('Moment Diagram')
        plt.show()                                               
        import matplotlib.pyplot as plt
        plt.plot(x, Vx[:,0], color='g')
        plt.xlabel('Length ft')
        plt.ylabel('Kip')
        plt.title('Shear Diagram')
        plt.show()    
        print (Mx)
        print (Vx)



    return();
actual
[[0.    0.   ]
 [0.225 0.225]
 [0.375 0.375]
 [0.525 0.525]
 [0.675 0.675]
 [0.825 0.825]
 [0.975 0.975]
 [1.125 1.125]
 [1.275 1.275]
 [1.425 1.425]
 [1.575 1.575]
 [1.725 1.725]
 [1.875 1.875]
 [1.825 1.825]
 [1.775 1.775]
 [1.725 1.725]
 [1.675 1.675]
 [1.625 1.625]
 [1.575 1.575]
 [1.525 1.525]
 [1.475 1.475]
 [1.425 1.425]
 [1.375 1.375]
 [1.325 1.325]
 [1.275 1.275]
 [1.225 1.225]
 [1.175 1.175]
 [1.125 1.125]
 [1.075 1.075]
 [1.025 1.025]
 [0.975 0.975]
 [0.925 0.925]
 [0.875 0.875]
 [0.825 0.825]
 [0.775 0.775]
 [0.725 0.725]
 [0.675 0.675]
 [0.625 0.625]
 [0.575 0.575]
 [0.525 0.525]
 [0.475 0.475]
 [0.425 0.425]
 [0.375 0.375]
 [0.325 0.325]
 [0.275 0.275]
 [0.225 0.225]
 [0.175 0.175]
 [0.125 0.125]
 [0.075 0.075]
 [0.025 0.025]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]
 [0.    0.   ]]


[[-0.25 -0.25]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [ 0.75  0.75]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [-0.25 -0.25]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]
 [ 0.    0.  ]]

1 个答案:

答案 0 :(得分:0)

将所有put函数替换为=

例如: 替换np.put(Mx,(0,1),0,mode ='clip') 与Mx [0,1] = 0