gpt4 book ai didi

python - 使用 Sympy,计算其项交替符号的序列的限制

转载 作者:行者123 更新时间:2023-11-28 18:15:57 24 4
gpt4 key购买 nike

我正在尝试通过 Sympy 找到这个序列的极限

               ((-1)**(n))*(2**(-n))

使用 PyCharm 调试器和 IPython 控制台。

python 模块是:

import numpy as np
from plotly.graph_objs import Scatter, Figure
from sympy import Symbol, srepr, limit_seq, oo
from sympy.abc import n

import plotly.plotly as py

py.sign_in('****', '****************')



sym_func = 1 + ((-1)**(n))*(2**(-n))

def rng_func(i):

try:
return 1 + np.power(-1, i)/(np.power(2,i))
except ZeroDivisionError as e:
raise ValueError('Invalid inputs') from e


class Sequence(object):

def __init__(self, i):

self.sum = 0
self.dom = np.arange(1, i + 1, 1)
self.rng = np.array([])
self.is_positive = True
self.is_alternating = True

for i in self.dom:
rng_val = rng_func(i)
self.rng = np.append(self.rng, [rng_val])
self.sum += rng_val

sign_array = np.sign(self.rng)

for i in self.dom:

if self.rng[i - 1] <= 0:
self.is_positive = False
break

for i in self.dom:

if sign_array[0] == -1:
alt_sign = np.power(-1, i)
else:
alt_sign = np.power(-1, i-1)

if alt_sign != sign_array[i-1]:
self.is_alternating = False
break


seq = Sequence(10)

data = [Scatter(x=seq.dom, y=seq.rng)]
fig = Figure(data=data)

py.image.save_as(fig, filename='plots/I3.png')

IPython 控制台:

Connected to pydev debugger (build 171.4424.56)
Backend Qt5Agg is interactive backend. Turning interactive mode on.
import sys; print('Python %s on %s' % (sys.version, sys.platform))
Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul 2 2016, 17:53:06)
Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- An enhanced Interactive Python.

In[1]: limit_seq(((-1)**(n))*(2**(-n)), n)
In[2]: limit_seq((1**(n))*(2**(-n)), n)
Out[3]:
0

我的问题是,为什么 Sympy 不为 In[1]: 的限制返回一个值,而为 In[2]: 返回一个值?不同之处在于分子中的 1 与 -1。在 Sympy 中是否有不同的方法来创建交替符号?

最佳答案

截至目前(SymPy 1.1.1),limit_seq 不支持带有 (-1)**n 的振荡序列。它的documentation以一种有点技术性的方式说这个:

The terms should be built from rational functions, indefinite sums, and indefinite products over an indeterminate n. A term is admissible if the scope of all product quantifiers are asymptotically positive. Every admissible term is asymptotically monotonous.

作为解决方法,您可以使用此方法:

def mylimit_seq(seq, n):
n_ = Dummy("n", integer=True, positive=True)
L1 = limit_seq(seq.subs(n, 2*n_), n_)
L2 = limit_seq(seq.subs(n, 2*n_ + 1), n_)
if L1 == L2:
return L1

然后 mylimit_seq((-1)**n * 2**(-n), n) 返回 0。


在未来的版本中,limit_seq 将适用于此类序列。您现在还可以通过从 GitHub 克隆 SymPy 来获得此功能。 .

关于python - 使用 Sympy,计算其项交替符号的序列的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com