小编Pau*_*aul的帖子

numpy中高斯 - 勒让德正交的不同区间

我们如何numpy.polynomial.legendre.leggauss在除了[-1, 1]?之外的时间间隔内使用NumPy包?


以下示例与scipy.integrate.quad间隔中的Gauss-Legendre方法进行比较[-1, 1].

import numpy as np
from scipy import integrate

# Define function and interval
a = -1.
b =  1.
f = lambda x: np.cos(x)

# Gauss-Legendre (default interval is [-1, 1])
deg = 6
x, w = np.polynomial.legendre.leggauss(deg)
gauss = sum(w * f(x))

# For comparison
quad, quad_err = integrate.quad(f, a, b)

print 'The QUADPACK solution: {0:.12} with error: {1:.12}'.format(quad, quad_err)
print 'Gauss-Legendre solution: {0:.12}'.format(gauss)
print 'Difference between …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy numerical-integration

6
推荐指数
1
解决办法
3304
查看次数

使用SymPy矩阵查找根

编辑:我找到了一个可行的解决方案,但我仍然希望对这里发生的事情有更多的解释:

from scipy import optimize
from sympy import lambdify, DeferredVector

v = DeferredVector('v')
f_expr = (v[0] ** 2 + v[1] ** 2)
f = lambdify(v, f_expr, 'numpy')

zero = optimize.root(f, x0=[0, 0], method='krylov')
zero
Run Code Online (Sandbox Code Playgroud)

原始问题:

下面我们有M由表达式f1(x1, x2)和组成的矩阵f2(x1, x2)。我想知道x1以及x2什么时候的价值M = [f1, f2] = [0, 0]

下面的代码有效,去掉了被注释掉的根查找行。

import numpy as np
import sympy as sp
import matplotlib.pyplot as plt
from scipy import optimize
from sympy import init_printing, symbols, lambdify, …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib sympy scipy

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

Python/Cython:存储在numpy数组中的类的开销

这种慢速代码可以通过改变结构来改进,但有时难以解决.我认为,原因来自存储在数组中的类.我听说内存视图用于链接python和c数组,但我还是很新(只有一些python知识).

有没有办法有效地做到以下几点?

一个示例类:

cdef class ClassWithAdditionFunction:
    cdef double value

    def __init__(self, double value):
        self.value = value

    cpdef add_one(self):
        self.value += 1
Run Code Online (Sandbox Code Playgroud)

功能缓慢:

cdef unsigned long int i, ii
cdef unsigned long int loops = pow(10, 8)
cdef double value

addition_classes = np.array([None] * 10)

for i in range(len(addition_classes)):
    addition_classes[i] = ClassWithAdditionFunction(value=0)

for i in range(loops/10):
    for ii in range(10):
        addition_classes[ii].add_one()
Run Code Online (Sandbox Code Playgroud)

非常感谢您的任何建议!

python optimization performance function cython

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