标签: differentiation

numpy.gradient 的非均匀间距

我不确定在使用 numpy.gradient 时如何指定非均匀间距。

这是 y = x**2 的一些示例代码。

import numpy as np
import matplotlib.pyplot as plt

x = [0.0, 2.0, 4.0, 8.0, 16.0]
y = [0.0, 4.0, 16.0, 64.0, 256.0]
dydx = [0.0, 4.0, 8.0, 16.0, 32.0] # analytical solution

spacing = [0.0, 2.0, 2.0, 4.0, 8.0] #added a zero at the start to get length matching up with y

m = np.gradient(y, spacing)

plt.plot(x, y, 'bo',
         x, dydx, 'r-', #analytical solution
         x, m, 'ro')    #calculated solution
plt.show()
Run Code Online (Sandbox Code Playgroud)

间距数组的长度总是比我想计算梯度的数组少一。添加零以使长度匹配(如在上面的示例代码中)给出了错误的答案,一个点的梯度是无限的。

我无法理解/遵循非均匀间距的 …

python numpy derivative differentiation

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

衍生计算器

我有兴趣构建衍生计算器.我已经绞尽脑汁解决问题,但我还没有找到合适的解决方案.你可以提示如何开始吗?谢谢

对不起!我显然想要进行象征性的区分.

假设你有函数f(x)= x ^ 3 + 2x ^ 2 + x

我想显示导数,在这种情况下f'(x)= 3x ^ 2 + 4x + 1

我想在iPhone的objective-c中实现它.

math calculator derivative differentiation

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

如何使用mathematica隐式求解单个变量的微分方程?

我试图强迫Mathematica隐式区分形式的椭圆方程:

x^2/a^2+y^2/b^2 == 100
Run Code Online (Sandbox Code Playgroud)

a = 8b = 6.

我正在使用的命令如下所示:

D[x^2/a^2 + y^2/b^2 == 100/. y -> 3/4*Sqrt[6400-x^2], x]
Run Code Online (Sandbox Code Playgroud)

其中,y->3/4*Sqrt[6400-x^2]来自解决y的方面x.

我按照这里的建议得到了这一点:http://www.hostsrv.com/webmaa/app1/MSP/webm1010/implicit

此脚本的输入是传统方式,即x和y之间的隐式关系在微积分教科书中表示.在Mathematica中,你需要使用y [x]代替y来明确这种关系.这是通过用y [x]替换y的所有出现在脚本中自动完成的.

但Mathematica提供的解决方案没有y'dy/dx在其中(就像我手工解决它).所以我认为它没有得到正确解决.任何关于什么命令会让程序解决隐式差异的想法?谢谢.

math wolfram-mathematica differentiation

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

寻找更好的方法来做Quaternion区分

我有一个四元数(4x1)和一个角速度矢量(3x1),我调用一个函数来计算微分四元数,如本网站所述.代码如下所示:

    float wx = w.at<float>(0);
float wy = w.at<float>(1);
float wz = w.at<float>(2);
float qw = q.at<float>(3); //scalar component 
float qx = q.at<float>(0);
float qy = q.at<float>(1);
float qz = q.at<float>(2);

q.at<float>(0) = 0.5f * (wx*qw + wy*qz - wz*qy);    // qdiffx
q.at<float>(1) = 0.5f * (wy*qw + wz*qx - wx*qz);    // qdiffy
q.at<float>(2) = 0.5f * (wz*qw + wx*qy - wy*qx);    // qdiffz
q.at<float>(3) = -0.5f * (wx*qx + wy*qy + wz*qz);   // qdiffw
Run Code Online (Sandbox Code Playgroud)

所以现在我将差分四元数存储在q中,然后通过简单地添加这个微分四元数来更新四元数. …

quaternions prediction differentiation

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

可用于矩阵形式的微分运算符,在 Python 模块 Sympy 中

我们需要微分算子的两个矩阵[B][C]如:

B = sympy.Matrix([[ D(x), D(y) ],
                  [ D(y), D(x) ]])

C = sympy.Matrix([[ D(x), D(y) ]])

ans = B * sympy.Matrix([[x*y**2],
                        [x**2*y]])
print ans
[x**2 + y**2]
[      4*x*y]

ans2 = ans * C
print ans2
[2*x, 2*y]
[4*y, 4*x]
Run Code Online (Sandbox Code Playgroud)

这也可以用于计算矢量场的卷曲,例如:

culr  = sympy.Matrix([[ D(x), D(y), D(z) ]])
field = sympy.Matrix([[ x**2*y, x*y*z, -x**2*y**2 ]])
Run Code Online (Sandbox Code Playgroud)

要使用 Sympy 解决这个问题,必须创建以下 Python 类:

import sympy

class D( sympy.Derivative ):
    def __init__( self, var ):
        super( D, self ).__init__() …
Run Code Online (Sandbox Code Playgroud)

python matrix sympy automatic-differentiation differentiation

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

隐微分符号

我一直在用 sympy 做导数,我不知道在语法上会如何写。我尝试查找它,但没有一个解决方案有意义。例如,如果我试图x**5 + y**2 + z**4 = 8xyz通过计算来区分,我该怎么做?z 是一个符号,还是一个像正则导数那样的函数?谢谢你。

python implicit sympy differentiation python-3.x

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

用python检测操作系统

我四处寻找我的问题的解决方案,我能找到的最好的是:

from sys import platform
if platform == "linux" or platform == "linux2":
    # linux
elif platform == "darwin":          
    # OS X
elif platform == "win32":             
    # Windows...
Run Code Online (Sandbox Code Playgroud)

有谁知道我如何将 Linux PC 与 android 区分开来,因为 android 是基于 Linux 的。如果这是可能的,我如何将 Mac OS 与 iOS 区分开来

operating-system differentiation python-3.x

4
推荐指数
2
解决办法
7677
查看次数

`numpy.diff`和`scipy.fftpack.diff`在区分时给出不同的结果

我试图计算一些数据的导数,我试图比较有限差分和光谱方法输出的输出.但结果却截然不同,我无法弄明白为什么.

请考虑下面的示例代码

import numpy as np
from scipy import fftpack as sp
from matplotlib import pyplot as plt
x = np.arange(-100,100,1)
y = np.sin(x)

plt.plot(np.diff(y)/np.diff(x))
plt.plot(sp.diff(y))

plt.show()
Run Code Online (Sandbox Code Playgroud)

这输出以下结果 在此输入图像描述

橙色输出是fftpack输出.没关系细微之处,这只是为了举个例子.

那么,为什么他们如此不同?他们不应该(大致)相同吗?

我很确定使用fftpack.diff句点关键字可以纠正不同的幅度,但我无法确定哪个是正确的句号(我认为它应该是period=1但不起作用).

此外,如何使用numpy进行自己的光谱差异化?

python numpy scipy derivative differentiation

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

使用 Autograd 偏导数

我有一个接受多变量参数 x 的函数。这里 x = [x1,x2,x3]。假设我的函数如下所示: f(x,T) = np.dot(x,T) + np.exp(np.dot(x,T) 其中 T 是一个常数。

我对查找 df/dx1、df/dx2 和 df/dx3 函数很感兴趣。

我使用 scipy diff 取得了一些成功,但我有点怀疑,因为它使用了数值差异。昨天,我的同事指给我 Autograd (github)。由于它似乎是一个流行的包,我希望这里有人知道如何使用这个包来获得偏微分。我对这个库的初步测试表明 grad 函数只对第一个参数进行微分。我不确定如何将其扩展到其他参数。任何帮助将不胜感激。

谢谢。

python automatic-differentiation differentiation python-2.7 autograd

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

在haskell中逼近导数时的令人困惑的行为

我已经定义了一个类型类Differentiable,它可以由任何可以对无穷小进行操作的类型来实现。下面是一个例子:

class Fractional a => Differentiable a where
    dif :: (a -> a) -> (a -> a)
    difs :: (a -> a) -> [a -> a]
    difs = iterate dif

instance Differentiable Double where
    dif f x = (f (x + dx) - f(x)) / dx
        where dx = 0.000001

func :: Double -> Double
func = exp
Run Code Online (Sandbox Code Playgroud)

我还定义了一个简单的Double -> Double函数来区分。

但是当我在ghc这种情况下进行测试时:

... $ ghci
GHCi, version 8.8.4: https://www.haskell.org/ghc/  :? for help
Prelude> :l …
Run Code Online (Sandbox Code Playgroud)

haskell differentiation

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