python - 如何将函数与时间积分;即 'y' 是一个数组,time(t) 的值在 1 到 3000 之间变化

标签 python arrays pandas numpy integration

如何将函数 f(y) 与时间积分;即 'y' 是一个包含 3000 个值的数组,time(t) 的值在 1 到 3000 之间变化。因此,在积分 f 后我需要 3000 个值(y)。 积分将是不确定的,积分值必须不含 'x''C'(Constant)。 这是我的代码的一部分:

k12 = np.array([random.random() for _ in range(3000)])
I1 = np.array([random.random() for _ in range(3000)])
m12 = np.array([random.random() for _ in range(3000)])
_k12 = [-x for x in k12]
_m12 = [-x for x in m12]

k21 = np.array([random.random() for _ in range(3000)])
I2 = np.array([random.random() for _ in range(3000)])
m21 = np.array([random.random() for _ in range(3000)])
_k21 = [-x for x in k21]
_m21 = [-x for x in m21]

k12_I1 = [i / j for i, j in zip(k12, I1)]
m12_I1 = [i / j for i, j in zip(m12, I1)]
_k12_I1 = [i / j for i, j in zip(_k12, I1)]
_m12_I1 = [i / j for i, j in zip(_m12, I1)]

k21_I2 = [i / j for i, j in zip(k21, I2)]
m21_I2 = [i / j for i, j in zip(m21, I2)]
_k21_I2 = [i / j for i, j in zip(_k21, I2)]
_m21_I2 = [i / j for i, j in zip(_m21, I2)]

X1_x = np.array(pd.read_csv(r"C:/Users/Lenovo/Desktop/Temp/X1_x.csv"))
X2 = np.array(pd.read_csv(r"C:/Users/Lenovo/Desktop/Temp/X2.csv"))
X2_diff = np.array(pd.read_csv(r"C:/Users/Lenovo/Desktop/Temp/X2_diff.csv"))

X3_ = ((k12*X1_x)-(I1*X2_diff)+(m12*X2))/k12

我需要 X3_,但由于积分值的形式为常量*x,所以它会给出错误:

'TypeError: can't multiply sequence by non-int of type 'float''

最佳答案

有一些符号库完全适合您的任务,例如 SymPy - 非常先进的符号库。你可以使用它。

Numpy 库只进行数值计算,不进行符号计算,您必须在脑海中完成所有符号计算。

正如我在你的最终 X3 中所理解的,你有两项之和,其中一项 Val1 * x另一个是善良的Val2 ,即X3 = Val1 * x + Val2 。然后你可以分割你的X3分为两部分(这里 Val1 是 X3_x,Val2 是 X3_c):

X3_x = k12*X1/k12
X3_c = (-(I1*X2_diff)+(m12*X2))/k12

稍后针对某个给定的固定值 x 计算整个 X3你只需在Python中做X3 = X3_x * x + X3_c .

此外,您还必须以最终数组仅包含 float 、不包含符号的方式处理 CSV,*x到处删除,即:

X1_rd = np.array([e.strip().replace('[', '').replace(']', '').replace('*x', '') for e in pd.read_csv(r"X1_x.csv")]).astype(np.float64)
X2_rd = np.array(pd.read_csv(r"X2.csv")).astype(np.float64)
X2_diff_rd = np.array(pd.read_csv(r"X2_diff.csv")).astype(np.float64)

Full final corrected code

关于python - 如何将函数与时间积分;即 'y' 是一个数组,time(t) 的值在 1 到 3000 之间变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66900999/

相关文章:

python - 从 PdfFileWriter 创建 blobstore 文件

python - 如何在python中缩短浮点结果

python - 修复 pandas DataFrame 中的索引列

python - 通过使用 Beautiful Soup、Selenium 和 Pandas 提取 div 类中的值来抓取价格

python - 具有 “href” 的绘图 TreeMap 元素不适用于本地相对 html 路径

python - 如何提取*args

arrays - Shell 脚本形成动态数组并触发基于它的进程

java - 构造一个二维数组并赋值

python - 如何将绘图添加到子图 matplotlib

python - 如何使用levenshtein函数删除pandas中的相似值