【问题标题】:SciPy. How i can solve differential equation?科学派。我如何解决微分方程?
【发布时间】:2020-05-21 03:05:52
【问题描述】:

我的系统是:

d2x/dt = -k/m * dx/dt, dx/dt(0) = v0_x, x(0) = 0

d2y/dt = -g - k/m * dy/dt, dy/dt(0) = v0_y, y(0) = 0

k、m、v0_x、v0_y 和 g 是常数。

我正在这样做,但我认为这是错误的,因为这是一个运动学方程,时间范围从 0 到 10,不能为负数。 graph

from scipy import integrate
from math import sin, cos
import numpy as np
import matplotlib.pyplot as plt

g = 9.81

class SolveSystemOfADifferentialEquations:
    def __init__(self, k, angle, v0, m):
        self.k = k
        self.angle = angle
        self.m = m
        self.v0 = v0
        self.v0_x = self.v0 * cos(self.angle)
        self.v0_y = self.v0 * sin(self.angle)
        self.kdivm = self.k / self.m
        self.time = np.arange(0, 10, 0.05)

    def xmodel(self, X, t):
        x = X[0]
        dx = X[1]
        zdot = [ [], [] ]
        zdot[0] = dx
        zdot[1] = -self.kdivm * x
        return zdot

    def ymodel(self, Y, t):
        y = Y[0]
        dy = Y[1]
        zdot = [ [], [] ]
        zdot[0] = dy
        zdot[1] = -g - self.kdivm * y
        return zdot

    def solveX(self):
        x = integrate.odeint(self.xmodel, [0, self.v0_x], self.time)
        return x

    def solveY(self):
        y = integrate.odeint(self.ymodel, [0, self.v0_y], self.time)
        return y

k, angle, v0, m = 0.001, 60, 5, 0.1
Solver = SolveSystemOfADifferentialEquations(k, angle, v0, m)
x = Solver.solveX()
y = Solver.solveY()
plt.plot(x, y)
plt.show()

【问题讨论】:

    标签: python scipy


    【解决方案1】:

    你给出了以下等式:

    d2x/dt = -k/m * dx/dt

    但是在你设置的代码中

    zdot[1] = -self.kdivm * x
    

    所以你要求的和你编程的不匹配

    会有问题吗?

    另外,如果您将 k 设置为更大的值,您将看到周期性振荡...所以我认为您的代码是正确的

    我认为你有一个负值,因为你使用度数而不是弧度来表示角度

    【讨论】:

    • 我试过这样做,但它也错了,我有负的 x 和 y
    • 哦,我明白了。你有角度而不是弧度。所以你有一个负速度作为观点。尝试将 60 改为 60/180 * 3.14
    • 哦,我忘了在 python 数学中使用弧度。我需要从 0 和 x lim 安装 y lim。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多