小编Jav*_*cia的帖子

使用 Numpy 获取多项式的系数

numpy.polynomial.polynomial.Polynomial我试图获取通过以下方法获得的系数fit

import numpy.polynomial as poly

x = [1, 2, 3, 4, 5]
y = [16, 42.25, 81, 132.25, 196]

c = poly.Polynomial.fit(x, y, deg = 2)
print(c(5))
print(c)
Run Code Online (Sandbox Code Playgroud)

这个小程序打印

196.00000000000006
poly([81. 90. 25.])
Run Code Online (Sandbox Code Playgroud)

c(5)这是多项式系数(即2.257.5和 )的正确值,但不是正确值6.25。如何获得实际系数?

numpy polynomials coefficients

9
推荐指数
1
解决办法
5783
查看次数

使用新的 gfortran 版本具有不同种类参数的 iand

我目前正在使用旧代码,该代码iand使用不同类型的整数作为参数调用函数。下面是代码包含的一个小例子:

program test
    integer*1 i
    integer j, k 

    i = 1
    j = 8 

    k = iand(i, j)
    print *, k
end program test
Run Code Online (Sandbox Code Playgroud)

gfortran 8 及更早版本作为扩展能够使用不同类型的整数调用 iand(例如,请参阅此处),而此选项在 gfortran 9 中已删除(请参阅此站点)。例如,使用 gfortran 7.5.0:

gfortran-7 -o test test.f90 && ./test
       0
Run Code Online (Sandbox Code Playgroud)

但是当用 gfortran 9.2.0 编译时,我得到:

gfortran -o test test.f90
...
Error: Arguments of ‘iand’ have different kind type parameters at (1)
Run Code Online (Sandbox Code Playgroud)

是否有新版本的选项gfortran可以让我按原样使用此代码?

fortran gfortran type-kinds

7
推荐指数
1
解决办法
515
查看次数

Numpy元素阶矩阵的阶乘

我想知道如何逐元素计算矩阵的阶乘。例如,

import numpy as np
mat = np.array([[1,2,3],[2,3,4]])

np.the_function_i_want(mat)
Run Code Online (Sandbox Code Playgroud)

会给一个矩阵mat2,使得mat2[i,j] = mat[i,j]!。我已经尝试过类似

np.fromfunction(lambda i,j: np.math.factorial(mat[i,j]))
Run Code Online (Sandbox Code Playgroud)

但它会将整个矩阵作为参数传递np.math.factorial。我也尝试过使用,scipy.vectorize但是对于大于10x10的矩阵,我得到一个错误。这是我写的代码:

import scipy as sp
javi = sp.fromfunction(lambda i,j: i+j, (15,15))
fact = sp.vectorize(sp.math.factorial)
fact(javi)

OverflowError: Python int too large to convert to C long
Run Code Online (Sandbox Code Playgroud)

这样的整数将大于2e9,所以我不明白这意味着什么。

python numpy matrix vectorization factorial

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

从函数句柄创建矩阵(MATLAB)

我打算做的很简单,但我找不到合适的方法.我有一个函数句柄,它依赖于两个变量,例如:

f = @(i,j) i+j
Run Code Online (Sandbox Code Playgroud)

(但我的情况要复杂得多)

我想做的是创建一个矩阵M

M(i,j) = f(i,j)
Run Code Online (Sandbox Code Playgroud)

当然我可以使用嵌套循环,但我试图避免这些.我已经设法以一种非常简单的方式在Maple中做到了这一点:

f:=(i,j)->i+j;
M:=Matrix(N,f);
Run Code Online (Sandbox Code Playgroud)

(其中N是矩阵的维数)但我需要使用MATLAB.现在我坚持使用嵌套循环,但我非常感谢你的帮助!

matlab function matrix handle

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