具有“可变”系数的solve_bvp

时间:2019-05-19 02:48:41

标签: python-3.x

您好,对我的英语感到抱歉。我的问题很简单。我有下面的四阶BVP,它描述了梁在给定载荷和拉力作用下的挠度。但是,该梁的惯性矩在某个位置发生变化,即:梁的横截面在梁的整个长度上都不均匀。

# Constants definition:
L = (1203*3.281)
d = 60
OD_straked = 18.44
ID = 12.7
ID_sj = 12.75
OD_tubo = 14
OD_sj = 16.62
w = 322E3 / L

T = 525E3
E = 2.9E7
I1 = (np.pi/4)*(pow(OD_tubo/2,4) - pow(ID/2,4))
I2 = (np.pi/4)*(pow(OD_sj/2,4) - pow(ID_sj/2,4))

def model(x,y):

    F = 5000
    dydx = y[1]
    d2dx2 = y[2]
    d3dx3 = y[3]


    d4dx4 = (F/(E*I)) + (1/(E*I))*(w*(x-L) + T)*d2dx2 + (w/(E*I))*dydx
    return np.vstack((dydx,d2dx2,d3dx3,d4dx4))

def bc(ya,yb):
    return np.array([ya[0],yb[0]-d,ya[1],yb[2]])

x = np.linspace(0,L,10000)
y_a = np.zeros((4,x.size))

sol = solve_bvp(model,bc,x,y_a)

我想根据x内的值更改I的值。例如:如果x中的值小于43英尺,我想设为I = I2。如果值大于43,则I = I1

是否有一种方法可以更改I值,例如,使用类似这样的方法:

if value_of_x < 43:
        I = I2
    else:
        I = I1

0 个答案:

没有答案