Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python上实现一个永无止境的曲线拟合矩阵公式_Python_Recursion_Iteration_Curve Fitting - Fatal编程技术网

在python上实现一个永无止境的曲线拟合矩阵公式

在python上实现一个永无止境的曲线拟合矩阵公式,python,recursion,iteration,curve-fitting,Python,Recursion,Iteration,Curve Fitting,我正试图编写一个程序来解决一般的回归公式: ,是否可以这样做,例如让用户决定它可以有多大,而无需我设置越来越多的if条件(因此只有一段代码折叠成用户希望的矩阵)? 代码: 在该代码中,Phi_0对应于FL[i=1],FL[0]对应于y。您可以使算法独立于多项式的顺序。最简单的方法是对循环使用,尽管这会很慢(因为它们不会利用NumPy的矢量化)。 以下是随机数据的可再现示例: import numpy as np # Order of polynomial n = 5 # Random seed

我正试图编写一个程序来解决一般的回归公式: ,是否可以这样做,例如让用户决定它可以有多大,而无需我设置越来越多的if条件(因此只有一段代码折叠成用户希望的矩阵)? 代码:


在该代码中,Phi_0对应于FL[i=1],FL[0]对应于y。

您可以使算法独立于多项式的顺序。最简单的方法是对循环使用
,尽管这会很慢(因为它们不会利用NumPy的矢量化)。
以下是随机数据的可再现示例:

import numpy as np
# Order of polynomial
n = 5
# Random seed for reproducibility
np.random.seed(1)
# Input arrays
phi = np.random.random((100,n))
y = np.random.random(100)
# Output arrays
a = np.zeros((n,n))
b = np.zeros(n)
for i in range(n):
    b[i] = np.sum(y * phi[:,i])
    for j in range(i,n):
        # Exploit that matrix is diagonal
        a[i,j] = a[j,i] = np.sum(phi[:,i] * phi[:,j])
# Coefficients array
x = np.linalg.solve(a,b)

你好@艾萨姆,如果你觉得我下面的答案确实回答了你的疑虑,考虑把它标记出来,这样问题就可以关闭了:它确实回答了这个问题,尽管我最后对它进行了不同的方式,谢谢。顺便问一下,你可以回答你自己的问题。也许你的解决方案更好,可以为帖子增值!
import numpy as np
# Order of polynomial
n = 5
# Random seed for reproducibility
np.random.seed(1)
# Input arrays
phi = np.random.random((100,n))
y = np.random.random(100)
# Output arrays
a = np.zeros((n,n))
b = np.zeros(n)
for i in range(n):
    b[i] = np.sum(y * phi[:,i])
    for j in range(i,n):
        # Exploit that matrix is diagonal
        a[i,j] = a[j,i] = np.sum(phi[:,i] * phi[:,j])
# Coefficients array
x = np.linalg.solve(a,b)