Python Rbf给出奇异的矩阵错误,没有重复的坐标,为什么?

Python Rbf给出奇异的矩阵错误,没有重复的坐标,为什么?,第1张

概述非常类似于 RBF interpolation fails: LinAlgError: singular matrix,但我认为问题不同,因为我没有重复的坐标. 玩具示例: import numpy as npimport scipy.interpolate as interpcoords = (np.array([-1, 0, 1]), np.array([-2, 0, 2]), np.ar 非常类似于 RBF interpolation fails: LinAlgError: singular matrix,但我认为问题不同,因为我没有重复的坐标.

玩具示例:

import numpy as npimport scipy.interpolate as interpcoords = (np.array([-1,1]),np.array([-2,2]),np.array([-1,1]))coords_mesh = np.meshgrID(*coords,indexing="ij")fn_value = np.power(coords_mesh[0],2) + coords_mesh[1]*coords_mesh[2]  # F(x,y,z)coords_array = np.vstack([x.flatten() for x in coords_mesh]).T  # Columns are x,zunique_coords_array = np.vstack({tuple(row) for row in coords_array})unique_coords_array.shape == coords_array.shape  # True,i.e. no duplicate coordsmy_grID_interp = interp.RegularGrIDInterpolator(points=coords,values=fn_value)my_grID_interp(np.array([0,0]))  # Runs without errormy_rbf_interp = interp.Rbf(*[x.flatten() for x in coords_mesh],d=fn_value.flatten())## Error: numpy.linalg.linalg.linAlgError: singular matrix -- why?

我错过了什么?上面的示例使用函数F(x,z)= x ^ 2 y * z.我想使用Rbf来近似该函数.据我所知,没有重复的坐标:比较unique_coords_array和coords_array.

解决方法 我相信问题是你的意见:

my_rbf_interp = interp.Rbf(*[x.flatten() for x in coords_mesh],d=fn_value.flatten())

你应该改为:

x,z = [x.flatten() for x in coords_mesh]    my_rbf_interp = interp.Rbf(x,z,fn_value.flatten())

它应该工作.我认为你的原始公式是矩阵中的重复线,用于求解,因此具有与重复的非常相似的问题(即奇异矩阵).

如果你愿意的话:

d = fn_value.flatten()    my_rbf_interp = interp.Rbf(*(x,d))

它也应该工作.

总结

以上是内存溢出为你收集整理的Python Rbf给出奇异的矩阵错误,没有重复的坐标,为什么?全部内容,希望文章能够帮你解决Python Rbf给出奇异的矩阵错误,没有重复的坐标,为什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存