【问题标题】:Empty list for variable when I use solve() in sympy?当我在 sympy 中使用solve()时变量的空列表?
【发布时间】:2019-07-19 16:50:50
【问题描述】:

我尝试阅读其他提到此问题的帖子,但我不明白如何将它们应用于我的情况。这也是我第一次使用堆栈溢出,所以对于任何格式错误,我深表歉意。

from sympy import *
from math import sqrt
x = symbols('x')
a = symbols('a',positive=True)
f = 1 / ((x**4)*((x**2)-(a**2))**.5)
#Part A
g = f.subs(4*a,x)
h = f.subs(2*a,x)
area=g-h
#Part B
answ = solve(area-5,a)
print ('part a:' , str(area))
print ('part b:' , str(answ[0].evalf()))

我正在尝试获取要打印的值。

我在这个代码块中也有同样的问题

from sympy import *
x = symbols('x')
# Part A
f = (x**3-4*x+3) / (((x-5)**2)*(x**2+3)*(x**2+5))
print("The partial fraction decomposition of f is :", apart(f), "\n")

# Part B
a = symbols('a', positive=True, constant=True)
g = (x**2+2*x+a) / (x-1)**3*(x**2+1)
print("The partial fraction decomposition of g is :", apart(g, x), "\n")

# Part C
g = apart(g, x)
G1 = integrate(x, (x, 2, 4))
G2 = integrate(2*(a + 3)/(x - 1)**3, (x, 2, 4))
G3 = integrate(2 * (a + 7) / (x - 1)**2, (x, 2, 4))
G4 = integrate((a + 13)/(x - 1), (x, 2, 4))
G5 = integrate(5, (x, 2, 4))
print(G1, G2, G3, G4, G5)
value = solve((G1 + G2 + G3 + G4 + G5 - 1), a)

print((value))

由于有几个人看起来很困惑,here 是我试图用 python 解决的问题。

【问题讨论】:

  • 你在哪里给出xa 的值?
  • @bigbounty 我不完全明白你的意思,这是我试图用 Python 解决的问题,但如果有帮助的话! calclab.math.tamu.edu/Python/Math152Lab4a.pdf
  • 但我认为我在第 7 行和第 8 行所做的替换处理了这一点
  • 如果您检查 f、g、h 的值,您会发现它们都是相等的。您的替换与 f 中的任何内容都不匹配,因此 g 和 h 只是设置为等于 f。然后当你做 g-h 时,结果是 0。
  • 那么我应该怎么做而不是@J.Taylor?这是我第一次使用 sympy。

标签: python sympy calculus calc


【解决方案1】:

所以我在和我的 TA 聊了一会儿后想通了,如果有人好奇,我会在这里发布解决方案和解释。

from sympy import *
from sympy.plotting import (plot, plot_parametric,plot3d_parametric_surface, plot3d_parametric_line, plot3d)

问题的一部分是为 sqrt() 函数导入数学,因为它与 sympy 冲突,因此无法解决任何问题。

# Insert code for problem #1 here.
x = symbols('x')
a = symbols('a', positive=True)
f = 1 / ((x**4)*(sqrt((x**2)-(a**2))))
#Part A
F = integrate(f, x)
g = F.subs(x, 4*a)
h = F.subs(x, 2*a)
area = g - h
#Part B
# print(area.evalf())
answ = solve(area-5, a)
print ('part a:', area)
print ('part b:', answ[0].evalf())

下一组问题是我误用了 subs() 函数,将我想要求解的变量放在了错误的一侧。我还预先集成了函数,以便实际求解曲线下的面积。为了获得 answ 的值,我使用了与 evalf() 一起创建的向量的第一个值来近似它。

# Insert code for problem #3 here.
x = symbols('x')
# Part A
f = (x**3-4*x+3) / (((x-5)**2)*(x**2+3)*(x**2+5))
print("The partial fraction decomposition of f is :", apart(f), "\n")
# Part B
a = symbols('a', positive=True)
g = (x**2+2*x+a) / ((x-1)**3*(x**2+1))
print("The partial fraction decomposition of g is :", apart(g, x), "\n")
# Part C
g = apart(g, x)
# print(g)
# G = integrate(g, (x,2,4))
G1 = integrate((a - 3)/(4*(x - 1)), (x, 2, 4))
G2 = integrate((a - 1)/(2*(x - 1)**2), (x, 2, 4))
G3 = integrate((a + 3)/(2*(x - 1)**3), (x, 2, 4))
G4 = integrate((a*x-3*x)/(4*(x**2 + 1)) , (x, 2, 4))
G5 = integrate((-a-1)/(4*(x**2 + 1)), (x, 2, 4))
value = solve((G1- G2 + G3 - G4- G5 - 1), a)
print("\n", "The answer for part C is:",(value[0].evalf()))

下一组代码的问题是 g(x) 函数上的一些简单语法错误。我还必须删除常量 = True,这是因为它使解决问题变得不可能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 2013-04-12
    • 1970-01-01
    • 2014-12-26
    相关资源
    最近更新 更多