我是python新手,我试图在曲面上找到黎曼度量的Christoffel symbols,但我遇到了以下错误:TypeError:无法将表达式转换为float。为简单起见,我编写了另一个错误完全相同的代码(我的基本代码很长,不可读,因此我尝试使用此示例代码来理解我的错误。下面是我的示例代码:
from sympy import *
import numpy as np
coor = symbols('x y')
x = [coor[0] ** 2, coor[1]]
christoffels = np.zeros((2,2))
for i in range(2):
for j in range(2):
christoffels[i][j] = x[i] * x[j]
print(christoffels)
你能告诉我出了什么问题吗
在
isympy
会话中(其中x
,y
已经定义)coor
是一个元组xx
是一个包含2个Symphy对象的列表如果我们制作一个对象数据类型数组,我们可以指定sympy元素:
或者一种创建相同内容的列表理解方式
作为嵌套列表,然后像以前一样排列:
对象数据类型数组经常出现在SO问题上,但通常是在创建“不规则”数组时。它们没有数字数据类型数组的速度和计算能力
只要元素本身实现了正确的方法(如加法),一些基本数学就可以处理对象数据类型数组
(没有人实现
exp
方法。)sympy
在python
中运行,因此元组和列表等基本python结构是自然的。与numpy
的交互是命中或未命中的,而且速度从来没有纯数字数组快sympy's
自己的矩阵/数组导入通常会给您更多的功能,但需要更多的研究另一个答案中给出的
sympy.Matrix
对象:也可以从嵌套列表中构造:
分配有多个问题:
右边是
symbols
,左边是NumPy floats数组单元格因此Python很难将
symbols
转换为浮点让我们通过将矩阵定义为^{} matrix 来修复它:
相关问题 更多 >
编程相关推荐