Questions tagged «linear-algebra»

对于涉及线性代数的挑战,矢量空间的数学及其之间的线性映射。

12
构造伴随矩阵
您有许多个孤独的多项式,因此请让他们成为一些同伴(不会威胁您的攻击)! 对于度的多项式n,有一个n by n伴随的立方 矩阵。您需要创建一个函数,该函数以升序(a + bx +cx^2 + …)或降序(ax^n + bx^(n-1) + cx^(n-2)+…)的顺序接受多项式的系数列表(但不能同时接受)并输出伴随矩阵。 对于一个多项式c0 + c1x + c2x^2 + ... + cn-1x^(n-1) + x^n,其伴随矩阵为 (0, 0, 0, ..., -c0 ), (1, 0, 0, ..., -c1 ), (0, 1, 0, ..., -c2 ), (...................), (0, 0, ..., 1, -cn-1) 请注意,的系数为x^n1。对于其他任何值,请将所有其余系数除以x^n。此外,1从对角线偏移。 …


9
特征多项式
方阵A的特征多项式定义为多项式p A(x)= det(I x- A),其中I是单位矩阵,而det是行列式。请注意,此定义始终为我们提供单项多项式,以使解决方案唯一。 解决此难题的任务是为整数矩阵计算特征多项式的系数,为此,您可以使用内置函数,但是不建议使用。 规则 输入是任何方便格式的NxN(N≥1)个整数矩阵 您的程序/函数将以升序或降序输出/返回系数(请指定哪个) 对系数进行归一化,使得x N的系数为1(请参见测试用例) 您不需要处理无效的输入 测试用例 系数以降序给出(即x N,x N-1,...,x 2,x,1): [0] -> [1 0] [1] -> [1 -1] [1 1; 0 1] -> [1 -2 1] [80 80; 57 71] -> [1 -151 1120] [1 2 0; 2 -3 5; 0 1 1] …

8
矩阵三角法
介绍 两种最常见的三角函数,sine和cosine(或sin和cos的简称),可以扩展为矩阵值函数。计算矩阵值类似物的一种方法如下: 考虑以下两个重要的三角恒等式: 使用这些标识,我们可以为sin和导出以下方程式cos: 该矩阵指数存在于所有方阵和由下式给出: 其中A 0是单位矩阵I与A具有相同的维度。使用矩阵指数,可以将这两个三角函数(以及所有其他三角函数)评估为矩阵的函数。 挑战 给定一个正方形矩阵甲,的输出的值sin(A)和cos(A)。 规则 输入和输出可以采用任何方便且合理的格式(2D数组,您的语言的矩阵格式等)。 您可以编写一个程序,两个独立程序,一个功能或两个功能。如果选择编写两个函数,则可能会在它们之间共享代码(例如,导入和帮助函数)。 输入矩阵的值将始终为整数。 由于浮点不精确,您的解决方案可能会出现准确性问题。如果您的语言具有神奇的无限精度值,那么您的解决方案应该可以完美地工作(忽略它需要无限的时间和/或内存的事实)。但是,由于不存在那些不可思议的无限精度值,因此可以接受由有限精度引起的不准确性。制定该规则是为了避免由于要求输出达到特定精度而导致的复杂情况。 不允许为矩阵参数计算三角函数的内建函数(包括双曲三角函数)。允许使用其他矩阵内建函数(例如乘法,乘幂,对角化,分解和矩阵指数)。 测试用例 格式: A -> sin(A), cos(A) [[0]] -> [[0]], [[1]] [[0, 2], [3, 5]] -> [[-0.761177343863758, 0.160587281888277], [0.240880922832416, -0.359709139143065]], [[0.600283445979886, 0.119962280223493], [0.179943420335240, 0.900189146538619]] [[1, 0, 1], [0, 0, 0], [0, 1, 0]] -> [[0.841470984807897, -0.158529015192103, …

13
斐波那契产品
您可以将大于0的数字分解为正Fibonacci数字的唯一和。在这个问题中,我们通过重复减去最大可能的正斐波那契数来做到这一点。例如: 1 = 1 2 = 2 3 = 3 4 = 3 + 1 12 = 8 + 3 + 1 13 = 13 100 = 89 + 8 + 3 现在,我将斐波那契乘积称为与上面相同的列表,但加法运算被乘积代替。例如,f(100) = 89 * 8 * 3 = 2136。 编写一个给定正整数n的程序或函数,该函数将返回该数字的斐波那契乘积。 测试用例: 1: 1 2: 2 3: 3 4: …
13 code-golf  math  sequence  fibonacci  code-golf  word  code-golf  cipher  code-golf  string  math  subsequence  code-golf  regular-expression  code-golf  brainfuck  assembly  machine-code  x86-family  code-golf  math  factorial  code-golf  math  geometry  code-golf  math  arithmetic  array-manipulation  math  number  optimization  stack  metagolf  code-golf  tips  assembly  code-golf  tips  lisp  code-golf  number-theory  path-finding  code-golf  number  sequence  generation  code-golf  math  geometry  code-golf  grid  permutations  code-golf  code-golf  graphical-output  geometry  fractal  knot-theory  code-golf  math  arithmetic  code-golf  interpreter  balanced-string  stack  brain-flak  code-golf  math  set-theory  code-golf  math  array-manipulation  code-golf  code-golf  string  natural-language  code-golf  code-golf  math  linear-algebra  matrix  code-golf  string  encode 

8
尽快计算Hafnian
挑战在于编写可能最快的代码来计算矩阵的Hafnian。 对称2n按2n矩阵的Hafnian A定义为: 这里S 2n表示整数从1to 的所有置换的集合2n,即[1, 2n]。 Wikipedia链接还提供了一个可能引起您兴趣的不同外观公式(如果您在网络上进一步浏览,甚至可以使用更快的方法)。相同的Wiki页面讨论了邻接矩阵,但是您的代码也应适用于其他矩阵。您可以假设所有值都是整数,但不能假设它们都是正数。 还有一种更快的算法, 但似乎很难理解。而Christian Sievers是第一个实施它的人(在Haskell中)。 在这个问题上,矩阵都是正方形的,并且对称且偶数维。 参考实现(请注意,这是使用最慢的方法)。 这是Xcoder先生提供的一些示例python代码。 from itertools import permutations from math import factorial def hafnian(matrix): my_sum = 0 n = len(matrix) // 2 for sigma in permutations(range(n*2)): prod = 1 for j in range(n): prod *= matrix[sigma[2*j]][sigma[2*j+1]] my_sum += prod return …

3
自指代多项式
对于每个给定的度数n,都可以构造(至少一个)整数多项式p,使得p(k)(p对求值k)是x^k所有多项式中项的系数0 <= k <= n。为了使它们唯一,我们要求前导系数(的系数x^n)为正且最小。 这些多项式具有一些有趣的属性,您可以在线程中找到一些启发我进行此挑战的参考。您还可以在https://oeis.org/A103423中找到这些多项式 先验的意外属性之一是根的行为取决于n: 来源(通过/ u / zorngov和/ u / EpicSauceSc2) 任务 给定一个非负整数n输出,自相关积分多项式的度数n具有最小正超前系数。 细节 输出可以是任何人类可读的形式,可以是字符串x^2-x-1,也可以是系数列表[1,-1,-1]。(系数的顺序也可以相反,只需保持一致即可。) 前几个输出 n=0: 1 n=1: x n=2: x^2-x-1 n=3: 10*x^3-29*x^2-6*x+19 n=4: 57*x^4-325*x^3+287*x^2+423*x-19 n=5: 12813*x^5-120862*x^4+291323*x^3+44088*x^2-355855*x-227362

4
解线性方程
这个挑战,但具有更好的规格。 规格 您的程序将采用包含单个变量的线性方程式,x并输出的值x。 输入/解析 输入将仅包含数字,运算符,括号(())x,和一个=符号(这意味着没有空格)。 括号将始终保持平衡。 总会有至少1个x。一个x可以通过许多之前。 所有方程式都会精确地得到一个结果。 甲数可以通过以下步骤来定义。可以用正则表达式定义一个数字:-?(\d+(\.\d+)?|\.\d+)。 如果您不讲正则表达式:将数字定义为 0-9 它可能-在开始时有一个表示否定 然后可能会有一些数字。如果没有任何数字,将有一个小数点 如果存在小数点,则至少要跟一位数字 最大的数字/值将取决于您的语言能力。 一个运营商是任何的:+-*/,他们将永远数字之间出现,或括号 (5)(5)为了简单起见,这意味着不是有效的输入。 括号内始终始终包含有效的表达式(数字和/或运算符的有效组合)。“平衡”括号的定义是,每个括号(都会有一个关联的结尾) 评价 应该遵循操作顺序,并且优先级从高到低依次为: 括号(最深嵌套) 乘法与除法 加减法 如果出现两个具有相同优先级的运算符,则您应该选择向左->向右移动 输出量 您应该以某种方式输出结果。如果您不只是输出数字结果,请在答案中阐明输出的输出方式。您的输出格式应该一致。输出可能是十进制,但始终是有理数,精度受限于您语言的精度。仅当您的语言不支持浮点算术时,才不需要支持它。 规则 允许琐碎处理此任务的内置函数,但是您必须清楚[uses built-in]地在答案的标题中添加清楚。这使您的答案免于获胜 “使该任务变得琐碎的内置程序”是以下任何一种: 吸收方程式并输出a /变量值的东西 可以完全简化方程式的东西 使用eval或相关功能进行大量解析。eval如果函数和相关函数用于(只需对输入进行最少的修改)求解线性方程,则不允许使用和相关函数。 如有疑问,请在评论中提问。 允许解析方程式的内置程序 例子 3+4=x 7 4+x=5 1 3+3*3=x 12 3x-4=7+2x 11 3--1=x 4 3*(2+4x)=7x-4 -2 1.2+2.3x=5.8 …

4
帮助重新计算您的代表!
几个月前,我们在meta上进行了讨论,讨论如何提高因问题投票而获得的声誉。这是我们目前的投票信誉系统的基础:1 问题投票U值得5个声望。 回答投票u值得10个声誉。 问题或答案不满意d的人值得-2声望。 对于新系统,已经有许多不同的建议,但是当前最受欢迎的与上面的相同,但是问题投票的比例扩大到+10个代表。这项挑战是要计算出安装该系统后您将获得多少代表。 让我们来看一个例子。如果投票活动为UUUUuuuuUUUUUduuudUU,则在当前系统下,您的收入为121: U x 4 x 5 = 20 = 20 u x 4 x 10 = 40 = 60 U x 5 x 5 = 25 = 85 d x 1 x -2 = -2 = 83 u x 3 x 10 = 30 = …

4
乘以Pauli矩阵
该泡利矩阵是一组其在量子物理学非常普遍出现的2x2矩阵(不,你不需要知道这个挑战任何量子物理)。如果我们在集合中包括身份,则四个矩阵为: σ0 = σ1 = σ2 = σ3 = [1 0] [0 1] [0 -i] [1 0] [0 1] [1 0] [i 0] [0 -1] 乘以二这些将永远给另一个保利矩阵,尽管它可以通过复杂的阶段之一相乘1,i,-1,-i。例如,。σ1σ3 = -iσ2 您的任务是将多个Pauli矩阵相乘并返回结果矩阵和相位。输入将被给定为数字的非空字符串0到3表示矩阵来。输出应该含有单个数字迭代矩阵的字符串,任选地被前面,或者以指示相(是)。σ0σ3i--i--1 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 您不得使用任何与Pauli矩阵相关的内置(或第三方)功能。 这是代码高尔夫球,最短的答案(以字节为单位)获胜。 测试用例 1 => 1 13 => -i2 000 => 0 123 => i0 03022 => 3 02132230 => …

8
矩阵的特征值
给定一个正方形矩阵,输出矩阵的特征值。每个特征值应重复与其代数多重性相等的次数。 矩阵的特征值A是标量值λ,使得对于某些列向量v,A*v = λ*v。它们也是的特征多项式的解决方案A:(det(A - λ*I) = 0其中I与相同的维的单位矩阵A)。 输出必须精确到3个有效数字。对于您选择的语言,所有输入和输出都将在数值的可表示范围内。 可以使用内置函数,但是建议您包括不使用内置函数的解决方案。 测试用例 在这些测试用例中,I代表虚部。复数以形式书写a + b*I。所有输出的精度为3位有效数字。 [[42.0]] -> [42.0] [[1.0, 0.0], [0.0, 1.0]] -> [1.00, 1.00] [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]] -> [16.1, -1.12, -1.24e-15] [[1.2, 3.4, 5.6, 7.8], [6.3, 0.9, -5.4, -2.3], [-12.0, -9.7, 7.3, 5.9], [-2.5, …

4
用雅可比(Jacobi)方法求解矩阵方程(修订)
数学背景 设A为实数的N×N矩阵,N个实数的ba向量和xa个N个未知实数向量。矩阵方程为Ax = b。 Jacobi的方法如下:分解A = D + R,其中D是对角线矩阵,R是其余项。 如果您做出初始猜测解x0,则改进的解为x1 =逆(D)*(b-Rx),其中所有乘法都是矩阵矢量乘法,而逆(D)是矩阵逆。 问题规格 输入:完整的程序应接受以下数据作为输入:矩阵A,向量b,初始猜测x0和“错误”数e。 输出:程序必须输出最少的迭代次数,以使最新的解决方案与实际解决方案之间的差异最多为e。这意味着矢量的每个分量的绝对大小最多相差e。您必须使用Jacobi的方法进行迭代。 如何输入数据是您的选择 ; 它可以是您自己在命令行上的语法,也可以从文件中获取输入,无论您选择什么。 数据的输出方式是您的选择 ; 可以将其写入文件,在命令行中显示,以ASCII文字形式书写,并且只要人类可以阅读即可。 更多详情 您没有得到真正的解决方案:如何计算真正的解决方案完全取决于您自己。例如,您可以通过Cramer规则或直接计算逆来解决它。重要的是您拥有一个能够与迭代进行比较的真正解决方案。 精度是一个问题;有些人的“确切解决方案”可能会有所不同。出于该代码的目的,精确的解决方案必须为10个小数位。 绝对清楚地说,即使您当前迭代解决方案的一个组成部分比真实解决方案中的相应组成部分都增加了e,那么您需要保持迭代。 N的上限取决于您所使用的硬件以及您愿意花多少时间运行该程序。出于此代码高尔夫球的目的,假定最大值N = 50。 前提条件 调用程序时,您可以随时假设以下条件成立: N> 1且N <51,即您永远不会得到标量方程,而总是矩阵方程。 所有输入都在实数范围内,并且永远不会复杂。 矩阵A总是使方法收敛到真正的解,这样您总是可以找到许多迭代以最小化小于或等于e的误差(如上定义)。 A 永远不是零矩阵或恒等矩阵,即有一个解。 测试用例 A = ((9, -2), (1, 3)), b = (3,4), x0 = (1,1), e …

7
计算克罗内克积
相关,但有很大的不同。 在下面的例子中,A和B将是2×2矩阵,和矩阵是一个索引。 一个克罗内克产品具有以下特性: A⊗B = A(1,1)*B A(1,2)*B A(2,1)*B A(2,2)*B = A(1,1)*B(1,1) A(1,1)*B(1,2) A(1,2)*B(1,1) A(1,2)*B(1,2) A(1,1)*B(2,1) A(1,1)*B(2,2) A(1,2)*B(2,1) A(1,2)*B(2,2) A(2,1)*B(1,1) A(2,1)*B(1,2) A(2,2)*B(1,1) A(2,2)*B(1,2) A(2,2)*B(2,1) A(2,2)*B(1,2) A(2,2)*B(2,1) A(2,2)*B(2,2) 挑战:给定两个矩阵,A并且B,return A⊗B。 矩阵的大小至少为1-by-1。默认情况下,最大大小将是您的计算机/语言可以处理的大小,但最小5-by-5输入。 所有输入值均为非负整数 不允许使用用于计算Kronecker产品或Tensor / Outer产品的内置函数 一般而言:有关I / O格式,程序和功能,漏洞等的标准规则。 测试用例: A = 1 2 3 4 B = 5 6 7 8 A⊗B …

3
解决2x2特征系统
对于那些具有线性代数背景的人来说,挑战就这么简单:确定给定复数2x2矩阵的特征值和特征向量。您可能会跳过I / O详细信息等的挑战。对于那些需要对本征系统进行一些复习的人,请继续阅读。 背景 矩阵A的特征方程定义为 det| A - λI | = 0 其中λ是复数(标量)参数,I是单位矩阵,det | ... | 是决定因素。左侧求值为λ的多项式,即特征多项式,在2x2矩阵的情况下,该多项式是二次的。这个特征方程的解决方案是特征值的甲,我们将表示为λ 1和λ 2。 现在,特征向量 v 我的一个满足 A vi = λi vi 对于每一个λ 我,这给你两个方程的两个未知数的系统(的成分v 我),它可以很容易地解决。您会注意到系统实际上是未指定的,特征向量的大小不是由等式确定的。通常,我们将希望对特征向量进行归一化,即√(| x | 2 + | y | 2)= 1,其中x和y是向量分量,| x |。2是X乘以其复共轭。 注意,特征值可以是简并的,即,λ 1 =λ 2。在这种情况下,您可能无法满足具有两个线性独立特征向量的单一方程组。 挑战 给定具有复杂元素的2x2矩阵,请确定其两个(可能相同)特征值和每个特征值的归一化特征向量。结果数字必须精确到至少3个(十进制)有效数字。您可以假定任何矩阵元素的实部和虚部都在[-1,1]范围内。 您可以编写函数或程序,通过STDIN,命令行参数,提示或函数参数进行输入。您可以将结果输出到STDOUT,对话框或作为函数返回值。 您可以使用任何方便(但明确)的字符串或列表格式进行输入和输出。您还可以在成对的浮点数或复杂类型之间进行选择,以表示各个数字。 您不得使用内置函数来求解本征系统(如Mathematica …

13
对角线点积
这个挑战非常简单。您将得到一个以任何理性方式表示的方阵作为输入,并且您必须输出该矩阵对角线的点积。 具体而言,对角线是从左上角到右下角以及从右上角到左下角的对角线。 测试用例 [[-1, 1], [-2, 1]] -> -3 [[824, -65], [-814, -741]] -> 549614 [[-1, -8, 4], [4, 0, -5], [-3, 5, 2]] -> -10 [[0, -1, 0], [1, 0, 2], [1, 0, 1]] -> 1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.