求解线性系统的Kaczmarz算法的变体。

kaczmarz-algorithms的Python项目详细描述


Kaczmarz算法

PyPI VersionSupported Python VersionsBuild StatusDocumentation StatusCode CoverageCode style: black

DOI

在Python中求解线性系统的Kaczmarz算法的变体。在


安装

要安装Kaczmarz算法,请在终端中运行以下命令:

$ pip install -U kaczmarz-algorithms

这是安装Kaczmarz算法的首选方法,因为它总是安装最新的稳定版本。在

如果您没有安装pip,这些installation instructions可以作为指导 你完成了整个过程。在

使用

首先,导入kaczmarz包。在

^{pr2}$ 求解方程组

要使用带有循环选择规则的Kaczmarz算法求解方程组3 * x0 + x1 = 9和{},请使用kaczmarz.Cyclic.solve()函数。在

>>>A=[[3,1],...[1,2]]>>>b=[9,8]>>>x=kaczmarz.Cyclic.solve(A,b)>>>xarray([2.,3.])

检查Kaczmarz迭代

要使用循环选择规则访问Kaczmarz算法的迭代,请使用kaczmarz.Cyclic.iterates()函数。在

>>>A=[[1,0,0],...[0,1,0],...[0,0,1]]>>>b=[1,1,1]>>>x0=[0,0,0]# Initial iterate>>>forxkinkaczmarz.Cyclic.iterates(A,b,x0):...xkarray([0.,0.,0.])array([1.,0.,0.])array([1.,1.,0.])array([1.,1.,1.])

检查所使用的行/方程式

要访问Kaczmarz算法每次迭代时使用的行索引,请使用iterates的ik属性。例如

>>>iterates=kaczmarz.Cyclic.iterates(A,b,x0)>>>forxkiniterates:...print("Row used:",iterates.ik)Rowused:-1Rowused:0Rowused:1Rowused:2

iterates.ik的初始值是-1,因为在算法开始时还没有执行任何投影。在

可选参数

solve()iterates()函数采用可选参数maxiter和{} 指定对迭代次数的限制 以及解的期望精度。在

创建自己的选择策略

要实现自己的选择策略,请从kaczmarz.Base继承并实现_select_row_index()方法。 例如,要实施一种以逆循环顺序使用系统方程的策略:

>>>classReverseCyclic(kaczmarz.Base):...def__init__(self,A,*args,**kwargs):...super().__init__(A,*args,**kwargs)...self.n_rows=len(A)...self.row_index=None......def_select_row_index(self,xk):...ifself.row_indexisNone:...self.row_index=self.n_rows...self.row_index=(self.row_index-1)%self.n_rows...returnself.row_index

新类将继承solve()iterates()类方法,它们的工作方式与上面描述的kaczmarz.Cyclic.solve()和{}相同。在

>>>iterates=ReverseCyclic.iterates(A,b,x0)>>>forxkiniterates:...print("Row used:",iterates.ik)...print("Iterate:",xk)Rowused:-1Iterate:[0.0.0.]Rowused:2Iterate:[0.0.1.]Rowused:1Iterate:[0.1.1.]Rowused:0Iterate:[1.1.1.]

有关solve()iterates()的可选参数以及Cyclic以外的其他选择策略的信息,请参见readthedocs.io。在

引用

如果您在学术场合使用我们的代码,请考虑引用我们的代码。 无论您在zenodo.org上使用哪个版本,都可以找到相应的DOI。在

发展

有关开发代码的信息,请参见CONTRIBUTING.md。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Jsonify使用Jackson来定义嵌套对象   在Swing中禁用java图形调试   java Selenium Webdriver拖放在Jenkins上不起作用   java我对一个显示器的问题有一个非常不切实际的询问   java增强的“for”循环导致ArrayIndexOutOfBoundsException   ArrayAdapter适用于Java中的安卓编程,字符串数组   linux在Ubuntu上通过PulseAudio播放Java音频文件时出错   java在Spring应用程序中加载内部(类路径)和外部属性文件   java使用Maven连接到mySQL   Java应用程序的设计   websocket在电报api java中与dc的连接   java XMLStreamException,因为xml中的(&N)   java从控制台输出到JTextArea   Java导出文本文件   java实现parseInt方法   java为什么servlet容器会同步对特定资源/servlet的多个请求的访问?   循环中的Java“while”变量   用Java编程一个国际象棋游戏,gameOver布尔不起作用   java如何获得真正的JPanel大小?