小编uho*_*hoh的帖子

需要更好地了解 rtol、atol 在 scipy.integrate.odeint 中如何工作

这里scipy.integrate.odeint用六个不同的标准颂歌问题来调用rtol= atolfrom 1E-06to 1E-13。我查看了所有较大公差的结果之间的最大差异减去最小公差的结果,以获得某种“错误”的表示。我很好奇为什么对于给定的容差,一个问题 (D5) 给出的错误比另一个问题 (C1) 严重一百万倍,即使步数范围相当窄(在 10 倍之内)。

脚本中给出了颂歌问题的引用。所有问题都相当正常化,所以我正在进行rtol类似的治疗atol

重申一下 - 我的问题是,为什么不同问题之间的误差几乎相差一个因子1E+06,尽管误差随容差而变化。当然,C1 是“最柔和的”,D5 在“近日点”处具有戏剧性的峰值,但我认为例程会在内部调整步长,以便误差相似。

编辑:我添加了“错误”的时间演变,这可能会带来一些启发。

屏幕截图问题

屏幕截图差异

屏幕截图结果

# FROM: "Comparing Numerical Methods for Ordinary Differential Equations"
# T.E. Hull, W.H. Enright, B.M. Fellen and A.E. Sedgwidh
# SIAM J. Numer. Anal. vol 9, no 4, December 1972, pp: 603-637

def deriv_B1(y, x):
    return [2.*(y[0]-y[0]*y[1]), -(y[1]-y[0]*y[1])] # "growth of two conflicting populations"

def deriv_B4(y, x):
    A = …
Run Code Online (Sandbox Code Playgroud)

python scipy ode

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

计算 Skyfield 中两个物体的表观角距的更好方法?

更新: Skyfield 刚刚进行了重大修订,包括扩展文档和角度分离方法 - 请参阅已接受的答案。

我正在使用Skyfield计算两个物体之间的表观角距。我没有在包中找到方法,所以我“发明”了一种通过计算两个视位置向量之间的点积的方法。

这是目前最好的方法吗?在Skyfield的范围内,它本质上是正确的吗?

def separation(seconds, lat, lon):

    lat, lon, seconds = float(lat), float(lon), float(seconds) # necessary it seems

    place = earth.topos(lat, lon)

    jd = JulianDate(utc=(2016, 3, 9, 0, 0, seconds))

    mpos = place.at(jd).observe(moon).apparent().position.km
    spos = place.at(jd).observe(sun).apparent().position.km

    mlen = np.sqrt((mpos**2).sum())
    slen = np.sqrt((spos**2).sum())

    sepa = ((3600.*180./np.pi) *
            np.arccos(np.dot(mpos, spos)/(mlen*slen)))

    return sepa


from skyfield.api import load, now, JulianDate
import numpy as np
from scipy.optimize import minimize

data = load('de421.bsp')

sun   = data['sun']
earth = data['earth']
moon  = …
Run Code Online (Sandbox Code Playgroud)

python skyfield

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

python threading.Lock() 是否锁定所有需要锁定的东西?

下面的脚本是抽象的。我的问题是关于使用threading.Lock()

锁定限制了对“共享资源”的访问,但我对这能走多远感到紧张。我有对象属性,它们是在这个例子中具有数组属性的对象列表。在某些情况下,依赖会走得更远。

是否Lock()“知道”需要锁定的所有内容?

还显示了下面脚本的输出。脚本的目的主要是为了讨论 - 它不会失败,但我不相信它会锁定它需要的一切。

start:   [array([0, 1]), array([0, 1, 2]), array([0, 1, 2, 3])]
append an object
done!
finish:  [array([505, 605]), array([10, 11, 12]), array([10, 11, 12, 13]), array([5])]


import time
from threading import Thread, Lock
import numpy as np

class Bucket(object):
    def __init__(self, objects):
        self.objects = objects

class Object(object):
    def __init__(self, array):
        self.array = array

class A(Thread):
    def __init__(self, bucket):
        Thread.__init__(self)
        self.bucket      = bucket
    def run(self):
        nloop            = 0
        locker …
Run Code Online (Sandbox Code Playgroud)

python python-multithreading python-2.7

5
推荐指数
2
解决办法
8165
查看次数

通过“类别”查看文章时,Pelican 图像链接断开

我确定我遗漏了一些明显的东西。我通过内容文件夹内的文件夹名称定义类别。如果我content在查看页面时单击,我会看到文件夹名称(例如,categ1、categ2)加上“misc”,这很好。当我单击 categ1 时,我会看到一篇完整的文章,但图像链接现在都已损坏。

localhost:8000/category/categ1.html
Run Code Online (Sandbox Code Playgroud)

我希望看到的只是该类别中可点击的文章列表。或者至少,没有断开的链接。

(如果我尝试使用标签,我有类似的行为,但一次只做一件事......)

.rst文件中没有类别行。

除了名称、时区等。我在我的配置中使用这些。

更新:图像位于内容的图像文件夹中。我还在categ1 中放了一个Images 文件夹的副本,但没有帮助。

THEME = 'nmnlist' 

PATH = 'content'

# ARTICLE_PATHS = ['articles']    # have tried this also

STATIC_PATHS = ['images', 'pdfs']

RELATIVE_URLS = True  # have tried False also

PLUGINS = ["render_math"]
Run Code Online (Sandbox Code Playgroud)

python pelican

4
推荐指数
1
解决办法
351
查看次数

为什么scipy.optimize.minimize(默认)在不使用Skyfield的情况下报告成功?

scipy.optimize.minimize使用默认方法将返回初始值作为结果,而不会出现任何错误或警告消息。在使用此答案建议的Nelder-Mead方法解决问题时,我想了解:

为什么默认方法会在不警告起点的情况下返回错误答案作为答案-并且 在这种情况下,有什么方法可以防止“没有警告就错误回答”避免这种情况?

请注意,该函数separation使用python软件包Skyfield生成无法保证平滑的最小化值,这可能就是为什么Simplex在此处更好的原因。

结果:

测试结果:[ 2.14159739 ]'正确': 2.14159265359初始值:0.0

默认结果:[ 10000。 ]“正确”:13054初始值: 10000

Nelder-Mead结果:[ 13053.81011963 ]'正确': 13054初始值:10000

FULL OUTPUT using DEFAULT METHOD:
   status: 0
  success: True
     njev: 1
     nfev: 3
 hess_inv: array([[1]])
      fun: 1694.98753895812
        x: array([ 10000.])
  message: 'Optimization terminated successfully.'
      jac: array([ 0.])
      nit: 0

FULL OUTPUT using Nelder-Mead METHOD:
  status: 0
    nfev: 63
 success: True
     fun: 3.2179306044608054
       x: array([ 13053.81011963])
 message: 'Optimization terminated …
Run Code Online (Sandbox Code Playgroud)

python minimize scipy skyfield

4
推荐指数
1
解决办法
2636
查看次数

numpy.zeros_like() 中 subok 选项的目的和用途是什么?

使用 numpy\'s Zeros_like和相关函数,有一个选项

\n
\n

subok:布尔值,可选。

\n

numpy.zeros_like(a, dtype=None, order=\'K\', subok=True)

\n

如果为True,则新创建的数组将使用\xe2\x80\x98a\xe2\x80\x99的子类类型,否则为基类数组。默认为 True。

\n
\n

我假设所有 numpy 数组都是类ndarray,并且我从来不需要详细查看数组的子类。在什么情况下我可能想选择不使用相同的子类,而指定使用基类?

\n

python numpy class subclass

4
推荐指数
1
解决办法
3143
查看次数

对于 PIL.ImageFilter.GaussianBlur 如何使用内核以及半径参数与标准偏差有关吗?

使用 PIL 读取图像后,我通常使用 scipy.ndimage 执行高斯滤波器,如下所示

import PIL
from scipy import ndimage

PIL_image = PIL.Image.open(filename)
data = PIL_image.getdata()
array = np.array(list(data)).reshape(data.size[::-1]+(-1,))
img = array.astype(float)
fimg = ndimage.gaussian_filter(img, sigma=sigma, mode='mirror', order=0)
Run Code Online (Sandbox Code Playgroud)

PIL 中有如下高斯模糊函数(来自这个答案),但我不知道它究竟是如何工作的,也不知道它使用的是什么内核:

from PIL import ImageFilter
fimgPIL = PIL_image.filter(ImageFilter.GaussianBlur(radius=r)
Run Code Online (Sandbox Code Playgroud)

本文档不提供详细信息

关于的问题PIL.ImageFilter.GaussianBlur

  1. 半径参数到底是什么;是等价于标准差吗??
  2. 对于给定的半径,它计算内核有多远?2?? 3?? 6??

Gaussian Blur - 标准偏差、半径和内核大小的回答的评论如下,但我还没有找到 PIL 的信息。

OpenCV使用内核半径,(sigma * 3)scipy.ndimage.gaussian_filter使用内核半径 int(4 * sigma + 0.5)

python python-imaging-library python-3.x

4
推荐指数
1
解决办法
1287
查看次数

引擎盖下的PyEphem - 它如何计算行星的位置?

在太空SE中,有人建议我使用PyEphem来计算两线元素的轨道.现在我很好奇它如何计算"内置"太阳系对象,如行星及其卫星.它是否使用标准JPL星历表(也在这里)或其他东西?

到目前为止,我无法找到PyEphemXEphem网站.

例如,通过在有限的时间段内对轨道进行积分来生成(松散地说)JPL星历表,同时与大量的观测数据进行比较以得到一组轨道参数.然后将它整合到未来和过去,结果按固定时间制表.这个位置表(和其他东西)可以称为星历表.

然后通过在时间段之间插值来使用星历表 - 在这种情况下使用表中给出的切比雪夫多项式的系数.

例如,可以使用python模块de405读取JPL DE405星历

@Mattexx在下面指出XEphem正在使用一个被调用的例程libastro,并且PyEphem可能也在做同样的事情.所以我想知道它用于计算位置 - 算法和观察数据集.

python pyephem

3
推荐指数
1
解决办法
325
查看次数

如何从PyEphem获得物体的地球惯性或地心坐标?

我想获得各种XYZ坐标中的物体坐标,而不是它们出现在天空中的位置.我对......感兴趣:

  1. 欧洲经委会:" 以地球为中心的惯性 "(不与地球一起旋转)

  2. ECEF:" 以地球为中心的地球固定 "(非惯性,也称为"以地球为中心的旋转")

  3. 和某种太阳系或黄道坐标(以太阳或重心为中心).

我已经安装了PyEphem,跑了几个例子,并已开始了解什么是引擎盖下,但到目前为止,我已经找到了例子似乎专注于事情是如何出现在天空.

指向有用的"如何"或简单示例的链接会有所帮助.现在我看不出去哪里有标准选项:

In [55]: mars.
mars.a_dec              mars.g_dec              mars.radius
mars.a_epoch            mars.g_ra               mars.rise_az
mars.a_ra               mars.hlat               mars.rise_time
mars.alt                mars.hlon               mars.set_az
mars.az                 mars.hlong              mars.set_time
mars.circumpolar        mars.mag                mars.size
mars.compute            mars.name               mars.sun_distance
mars.copy               mars.neverup            mars.transit_alt
mars.dec                mars.parallactic_angle  mars.transit_time
mars.earth_distance     mars.phase              mars.writedb
mars.elong              mars.ra

In [55]: mars.
Run Code Online (Sandbox Code Playgroud)

python pyephem

3
推荐指数
1
解决办法
576
查看次数

使用 PIL 绘制多语言文本并保存为 1 位和 8 位位图

我从这个不错的答案中的脚本开始。它适用于“RGB”,但 8 位灰度“L”和 1 位黑/白“1”PIL 图像模式只是显示为黑色。我究竟做错了什么?

from PIL import Image, ImageDraw, ImageFont
import numpy as np

w_disp   = 128
h_disp   =  64
fontsize =  32
text     =  u"??!"

for imtype in "1", "L", "RGB":
    image = Image.new(imtype, (w_disp, h_disp))
    draw  = ImageDraw.Draw(image)
    font  = ImageFont.truetype("/Library/Fonts/Arial Unicode.ttf", fontsize)
    w, h  = draw.textsize(text, font=font)
    draw.text(((w_disp - w)/2, (h_disp - h)/2), text, font=font)
    image.save("NiHao! 2 " + imtype + ".bmp")
    data = np.array(list(image.getdata()))
    print data.shape, data.dtype, "min=", data.min(), "max=", data.max()
Run Code Online (Sandbox Code Playgroud)

输出: …

fonts python-imaging-library python-2.7

3
推荐指数
1
解决办法
1627
查看次数