标签: sympy

求多项式函数的根 Python Sympy

我尝试找到多项式函数的根,并使用以下代码:

import sympy
from sympy import Poly, roots
g=sympy.var("x")
p = Poly(x**25-96*x**12-4*x**3+2, gen=g)
print(roots(p))
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它不起作用。如果我使用像 x**2-1 这样更简单的多项式函数,它就可以工作

python sympy polynomials

0
推荐指数
1
解决办法
3570
查看次数

为什么我得到 f(x) = x**2(其中 x = 2)的导数为 0 而不是 4?

  • 我得到 f(x) = x**2 的正确导数为 2*x

  • 但是,当我用 2 替换 x 的值时,它给出的结果是 0 而不是 4

  • 无论我给 x 赋予什么值,它的结果都是 0

Google Colab 笔记本的快照

我试过这个:

from sympy import *

x = symbols('x')
f = x**2

diff(f.subs(x,2), x)
Run Code Online (Sandbox Code Playgroud)

我本来期望结果是 4 但结果是 0

math sympy derivative

0
推荐指数
1
解决办法
60
查看次数

检查我的代码.. 为什么 Python 的 Sympy 集成需要这么长时间?

我一直致力于绘制一个函数并朝 y 轴和 x 轴旋转。然后使用 SymPy 获取表面积。

我尝试从终端和运行.py文件,两者都花费太长时间来计算积分以获得表面积。

这是我的代码:

import numpy as np
import sympy as sy

x = sy.Symbol("x")

def f(x):
    return ((x**6) + 2)/ (8*x ** 2)

def fd(x):
    return sy.simplify(sy.diff(f(x), x))

def vx(x):
    return 2*np.pi*(f(x)*((1 + (fd(x) ** 2))**(1/2)))

vx = sy.integrate(vx(x), (x, 1, 3))
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 为什么sy.integrate花了这么长时间?差不多30分钟..这个函数很难计算吗?

从终端来看,直到我在 SoF 提出这个问题之前,它甚至还没有完成积分计算:

1

  1. 我的代码中是否存在错误或改进我的代码的方法?
  1. [编辑]

这是来自 的答案sy.integrate

0.392699081698724*Integral(2*(x**2 + 1)**1.0*Abs(x**4 - x**2 + 1)**1.0/x**5.0, (x, 1, 3)) + 0.392699081698724*Integral(x**1.0*(x**2 + 1)**1.0*Abs(x**4 - x**2 + …
Run Code Online (Sandbox Code Playgroud)

python numpy sympy

0
推荐指数
1
解决办法
207
查看次数

使用 Sympy 求解埃尔米特矩阵的特征值探针

我正在尝试使用 Sympy 找到 Hermitian 矩阵的特征值。从线性代数中我们知道特征值应该是实数,但 Sympy 的输出总是包含无穷小的虚部。我知道乍一看这可能不是一个严重的问题,但是当我们尝试象征性地求解特征值时,它会带来很多麻烦。

from sympy import *
from sympy import init_printing
init_printing(use_latex=True) 
t12=symbols('t12')
t13=symbols('t13')
t16=symbols('t16')
t34=symbols('t34')
x=symbols('x')
y=symbols('y')
kx=symbols('kx')
ky=symbols('ky')
H0=Matrix([[0 for i in range(6)] for j in range(6)])

H0[0,1]=-t12
H0[0,2]=-t13
H0[0,5]=-t16*exp(-4*pi*I/3)
H0[1,3]=-t13
H0[1,4]=-t16*exp(4*pi*I/3)
H0[2,3]=-t34*exp(-4*pi*I/3)
H0[2,4]=-t13
H0[3,5]=-t13
H0[4,5]=-t12

H0[1,0]=-t12
H0[2,0]=-t13
H0[3,1]=-t13
H0[3,2]=-t34*exp(4*pi*I/3)
H0[4,1]=-t16*exp(-4*pi*I/3)
H0[4,2]=-t13
H0[5,0]=-t16*exp(4*pi*I/3)
H0[5,3]=-t13
H0[5,4]=-t12


eig=H0.evalf(5).eigenvals()
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

python sympy

0
推荐指数
1
解决办法
127
查看次数

Python 中涉及分数和浮点数的计算精度损失

import sympy as sp
from fractions import Fraction

new_matrix_aux = [['X',   'B', 'X1', 'X2', 'X3', 'X4', 'X5', 'U1', 'U2'], 
                  ['X2', 10/3,    0,    1,  2/3,  1/3, -2/3, -1/3,  2/3],  
                  ['X1',  4/3,    1,    0,  2/3, -2/3,  1/3,  2/3, -1/3]]

z_function = "Z = 1 * X1 + 2 * X2 + 3 * X3 + 0 * X4 + 0 * X5 + M * U1 + M * U2"


lista_de_operaciones_zj = []

for j in range(1, len(new_matrix_aux[0])):
    z = z_function
    for …
Run Code Online (Sandbox Code Playgroud)

python math sympy fractions python-3.x

0
推荐指数
1
解决办法
62
查看次数

创建与半径为 r [几何] 的两条线相切的圆

我想在两条线之间放置一个圆但是,我只想使用一条线来创建圆。所以我的方法是选择第 1 行上的点。对于第 1 行上的每个点:我想创建半径增加的圆,这些圆与线上的点 1 相切。增加半径,直到圆也与另一条线相交。之后以较小的步长减小半径,直到圆与两条线相切。继续第 1 行的下一个点。

不知何故,我无法找到一个干净清晰的代码来做到这一点。线上的点可以使用 line.arbitrary_point 来完成。如何创建一个半径为 R 的圆到点 p1 以便它以最佳方式相切?

谢谢!

geometry lines sympy

-1
推荐指数
1
解决办法
1628
查看次数

用sympy或matlab解决PDE

我想知道如何用sympy或matlab解决以下PDE

提前致谢。在此处输入图片说明

python matlab equation sympy pde

-5
推荐指数
1
解决办法
787
查看次数