如何求解二阶微分方程?(How to solve second degree differential equation?)
对于微分方程mx'' + kx = 0 (其中x''是x相对于t双导数),如何解决这个问题对于x(t) ? 我的意思是如何得到这个等式:
x(t) = c1*cos(sqrt(k/m)*t) + c2*sin(sqrt(k/m)*t)我试过的:
t, g, k, m, w0, a_0, b_0, c1, c2 = symbols('t g k m w0 a_0 b_0 c1 c2') x = symbols('x', cls=Function) w0 = sqrt(k/m) diffeq = Eq(x(t).diff(t, t) + k*x, 0)但是声明diffeq = Eq(x(t).diff(t, t) + k*x, 0)会抛出一个错误:
TypeError: unbound method as_base_exp() must be called with x instance as first argument (got nothing instead)For the differential equation mx'' + kx = 0 (where x'' is double derivative of x with respect to t), how to solve this for x(t)? I mean how to get this equation:
x(t) = c1*cos(sqrt(k/m)*t) + c2*sin(sqrt(k/m)*t)What I tried:
t, g, k, m, w0, a_0, b_0, c1, c2 = symbols('t g k m w0 a_0 b_0 c1 c2') x = symbols('x', cls=Function) w0 = sqrt(k/m) diffeq = Eq(x(t).diff(t, t) + k*x, 0)but the statement diffeq = Eq(x(t).diff(t, t) + k*x, 0) throws an error:
TypeError: unbound method as_base_exp() must be called with x instance as first argument (got nothing instead)最满意答案
我让它工作并能够解出系数C1和C2的等式。 代码如下:
t, a0, b0, k, m, g = symbols('t a0 b0 k m g') x = Function('f') diffeq = m*Derivative(x(t), t, t) + k*x(t) + m*g # print(diffeq) x_sl30 = dsolve(diffeq, x(t)).rhs print(x_sl30) # Initial condition, x(0) = a0 and x'(0) = b0 c_0 = Eq(x_sl30.subs(t, 0), a0) c_1 = Eq(x_sl30.diff(t).subs(t, 0), b0) # print(c_0) # print(c_1) C1, C2 = symbols("C1, C2") C1C2_sl = solve([c_0, c_1], (C1, C2)) #Substitute the value of C1 and C2 in the original equation x_sl31 = x_sl30.subs(C1C2_sl) print(x_sl31)I made it work and able to solve the equation for coefficients C1 and C2. Here is the code:
t, a0, b0, k, m, g = symbols('t a0 b0 k m g') x = Function('f') diffeq = m*Derivative(x(t), t, t) + k*x(t) + m*g # print(diffeq) x_sl30 = dsolve(diffeq, x(t)).rhs print(x_sl30) # Initial condition, x(0) = a0 and x'(0) = b0 c_0 = Eq(x_sl30.subs(t, 0), a0) c_1 = Eq(x_sl30.diff(t).subs(t, 0), b0) # print(c_0) # print(c_1) C1, C2 = symbols("C1, C2") C1C2_sl = solve([c_0, c_1], (C1, C2)) #Substitute the value of C1 and C2 in the original equation x_sl31 = x_sl30.subs(C1C2_sl) print(x_sl31)更多推荐
发布评论