タグ付けされた質問 「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^nは1であることに注意してください。他の値については、残りのすべての係数を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 …

8
マトリックス三角法
前書き 二つの最も一般的な三角関数、sine及びcosine(又はsinおよびcos短いため)は、行列値の関数であるように拡張することができます。マトリックス値のアナログを計算する1つの方法は次のとおりです。 次の2つの重要な三角関数を検討してください。 これらのIDを使用して、我々はのために以下の式を導くことができるsinとcos: 行列の指数はすべての正方行列に存在し、次式で与えられます。 ここで、A 0は恒等行列であり、Iと同じ寸法とA。行列指数を使用すると、これらの2つの三角関数(および他のすべての三角関数)は、行列の関数として評価できます。 チャレンジ 正方行列Aが与えられ、sin(A)との値を出力しますcos(A)。 ルール 入力および出力は、便利で合理的な形式(2D配列、言語のマトリックス形式など)になります。 1つのプログラム、2つの独立したプログラム、1つの関数、または2つの関数を作成できます。2つの関数を記述する場合、それらの間でコードを共有できます(インポート関数やヘルパー関数など)。 入力行列の値は常に整数です。 浮動小数点の不正確さの結果として、ソリューションに精度の問題がある場合があります。言語に魔法のような無限精度の値がある場合、ソリューションは完全に機能するはずです(無限の時間やメモリを必要とするという事実を無視して)。ただし、それらの魔法の無限精度の値は存在しないため、精度の制限に起因する不正確さは許容されます。この規則は、出力に特定の精度を要求することに起因する複雑さを回避するために設けられています。 マトリックス引数の三角関数(双曲線三角関数を含む)を計算する組み込み関数は使用できません。他の行列組み込み関数(乗算、べき乗、対角化、分解、行列指数など)が許可されています。 テストケース フォーマット: 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より大きい数を分解できます。この質問では、可能な最大の正のフィボナッチ数を繰り返し減算することでこれを行います。例えば: 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 2n行列の2n行列はA次のように定義されます。 ここで、S 2nはから1までの整数のすべての順列の集合2n、つまりを表し[1, 2n]ます。 ウィキペディアのリンクはまた、興味を引くかもしれない異なる見た目の数式を提供します(さらにWebを見ると、さらに高速な方法が存在します)。同じ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 my_sum …

3
自己参照多項式
与えられた次数ごとに、(で評価される)がallの多項式の項の係数になるように(n少なくとも1つ)積分多項式を構築することができます。それらを一意にするために、先頭の係数(の係数)が正で最小であることを要求します。pp(k)pkx^k0 <= k <= nx^n これらの多項式にはいくつかの興味深い特性があります。この挑戦をするように私を促したスレッドでいくつかの参照を見つけることができます。これらの多項式はhttps://oeis.org/A103423でも見つけることができます。 先験的な予期しないプロパティの1つは、次の条件に応じてルートがどのように動作するか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前に数字を付けることができます。 すべての方程式の結果は1つになります。 番号は、以下の手順で定義することができます。数値は、正規表現で定義できます-?(\d+(\.\d+)?|\.\d+)。 正規表現を話さない場合:数字は次のように定義されます 0-9 それがあるかもしれません -冒頭に負の意味 そして、そこにもいくつかの桁です。それらが数字でない場合、小数点があります 小数点が存在する場合、少なくとも1桁がそれに続きます 最大の数値/値は、言語の機能によって定義されます。 オペレータは、のいずれかであります:+-*/、彼らは常に数字、または括弧の間に表示されます これは(5)(5)、簡単にするために有効な入力ではないことを意味します。 カッコ内には、常に有効な式(数字や演算子の有効な組み合わせ)が含まれます。「バランスのとれた」括弧は、すべて(に関連する終了があるため定義されます) 評価 操作の順序に従う必要があり、優先順位は(最高から最低)です。 括弧(最も深くネストされた最初) 乗算と除算 加算と減算 同じ優先順位の2つの演算子が発生した場合は、左->右に進むことをお勧めします 出力 結果を何らかの方法で出力する必要があります。数値の結果だけを出力しない場合は、出力の出力方法を回答で明確にします。出力形式は一貫している必要があります。出力は小数でもかまいませんが、常に合理的であり、精度は言語の精度に制限されます。ご使用の言語が浮動小数点演算をサポートしていない場合にのみ、サポートする必要はありません。 ルール このタスクを単純化するビルトインは許可されますが、明確に追加する必要があります[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 …

4
担当者の再計算にご協力ください!
数か月前に、質問に対する賛成票で与えられる評判を高めることについて、メタについて議論しました。投票の現在の評判システムの基本は次のとおりです。1 質問に賛成票を投じるU価値は5つあります。 回答の賛成票uは10名の価値があります。 質問または回答のダウン票dは、-2評判に値します。 新しいシステムにはさまざまな提案がありましたが、現在最も人気のあるものは上記と同じですが、質問の賛成票が+10 repにスケーリングされています。この課題は、このシステムが導入された場合にどれだけ多くの担当者を獲得できるかを計算することです。 例を見てみましょう。投票アクティビティがの場合、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
パウリ行列の乗算
パウリ行列が量子物理学では非常に一般的に表示される2×2行列のセットです(いや、あなたはこの挑戦のための任意の量子物理学を知っている必要はありません)。セットにアイデンティティを含める場合、4つのマトリックスは次のとおりです。 σ0 = σ1 = σ2 = σ3 = [1 0] [0 1] [0 -i] [1 0] [0 1] [1 0] [i 0] [0 -1] 乗算それは複雑な相のいずれかを乗じてもよいが、常に、別のパウリ行列を与えるこれらのうちの2つを1、i、-1、-i。たとえば、。σ1σ3 = -iσ2 あなたの仕事は、多数のパウリ行列を乗算し、結果の行列と位相を返すことです。入力は、数字の非空の文字列として指定する0の3行列を表すします。出力は、結果のマトリックスの1桁の数字を含む文字列で、オプションで前に、または位相を示します(は)。σ0σ3i--i--1 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 パウリ行列に関連する組み込み(またはサードパーティ)機能を使用しないでください。 これはコードゴルフで、最短の回答(バイト単位)が勝ちです。 テストケース 1 => 1 13 => -i2 000 => 0 123 => i0 03022 => 3 02132230 => …

8
行列の固有値
正方行列が与えられた場合、行列の固有値を出力します。各固有値は、その代数多重度に等しい回数だけ繰り返される必要があります。 行列の固有値は、いくつかの列ベクトルに対して、などのAスカラー値です。これらは、次の特性多項式の解でもあります(は、と同じ次元の単位行列です)。λvA*v = λ*vAdet(A - λ*I) = 0IA 出力は、有効数字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
ヤコビ法による行列方程式の解法(改訂版)
数学的背景 AをN×Nの実数行列、Nの実数のbaベクトル、xaのベクトルNの未知の実数とします。行列方程式はAx = bです。 ヤコビの方法は次のとおりです。A= D + Rを分解します。ここで、Dは対角行列で、Rは残りのエントリです。 初期推測解x0を作成する場合、改善された解はx1 = inverse(D)*(b-Rx)です。ここで、すべての乗算は行列ベクトル乗算で、inverse(D)は逆行列です。 問題の仕様 入力:完全なプログラムは、次のデータを入力として受け入れる必要があります:行列A、ベクトルb、初期推測x0、および 'エラー'数e。 出力:プログラムは、最新のソリューションが実際のソリューションと最大でe異なるように、最小の反復回数を出力する必要があります。これは、絶対的な大きさのベクトルの各成分が最大でe異なることを意味します。反復にはJacobiの方法を使用する必要があります。 データの入力方法は選択できます。コマンドラインでの独自の構文である可能性があります。ファイルから入力を選択することができます。 データの出力方法は任意です。ファイルに書き込み、コマンドラインに表示、ASCIIアートなど、人間が読み取り可能なものであれば何でも記述できます。 詳細 真の解決策は与えられません。真の解決策の計算方法は完全にあなた次第です。たとえば、Cramerのルールによって解決することも、逆関数を直接計算することもできます。重要なのは、反復と比較できる真のソリューションがあることです。 精度が問題です。一部の人々の比較のための「正確な解決策」は異なる場合があります。このゴルフの目的のために、正確な解は小数点以下10桁まで正確でなければなりません。 明確にするために、現在の反復ソリューションの1つのコンポーネントでさえ、真のソリューションの対応するコンポーネントをeだけ超えている場合は、繰り返し続ける必要があります。 Nの上限は、使用しているハードウェアと、プログラムの実行に費やす時間によって異なります。このコードゴルフでは、最大N = 50を想定しています。 前提条件 プログラムが呼び出されたとき、次のことが常に成り立つと考えることができます。 N> 1およびN <51。つまり、スカラー方程式は与えられず、常に行列方程式が与えられます。 すべての入力は実数のフィールド上にあり、決して複雑になることはありません。 行列Aは常にメソッドが真の解に収束するようなものであるため、e以下のエラー(上記で定義)を最小化するための反復回数を常に見つけることができます。 Aはゼロ行列でも恒等行列でもありません。つまり、1つの解があります。 テストケース A = ((9, -2), (1, 3)), b = (3,4), x0 = (1,1), e = 0.04 真の解決策は(0.586、1.138)です。最初の反復では、x1 =(5/9、1)が得られます。これは、真の解と0.04以上、少なくとも1つのコンポーネントが異なります。別の反復を行うと、x2 …

7
クロネッカー積を計算する
関連するが、非常に異なる。 以下の例ではA、Bは2行2列の行列になり、行列は1インデックスになります。 クロネッカー積は、次のプロパティがあります。 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) 課題:与えられた2つの行列AとBを返しA⊗Bます。 行列のサイズは少なくとも1-by-1です。最大サイズは、お使いのコンピューター/言語がデフォルトで処理できるものですが、最小5-by-5入力です。 すべての入力値は非負の整数になります クロネッカー積またはテンソル / 外積を計算する組み込み関数は許可されていません 一般的に: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 | ... | ある行列が。多項式左側の評価さλは、特性多項式、2×2行列の場合には二次です。この特性方程式の解である固有値のA我々のように表すであろう、λ 1及びλ 2。 今固有ベクトルは V IのA満足を A vi = λi vi それぞれについてλ 私は、これは次の2つの未知数(のコンポーネントの2つの方程式系与えV 私は非常に簡単に解決することができます)、。システムは実際には指定不足であり、固有ベクトルの大きさは方程式によって決定されないことに気付くでしょう。通常、固有ベクトルは正規化されます。つまり、√(| x | 2 + | y | 2)= 1です。ここで、xとyはベクトル成分、| x |です。2はxに複素共役を掛けたものです。 注固有値が縮退であってもよいこと、すなわちλ 1 =λ 2。この場合、2つの線形独立な固有ベクトルを使用して、単一の連立方程式を満たすことができる場合とできない場合があります。 チャレンジ 複素数要素を含む2x2行列が与えられた場合、その2つの(おそらく同一の)固有値と、各固有値の正規化された固有ベクトルを決定します。結果の数値は、少なくとも3(10進数)有効数字まで正確でなければなりません。任意の行列要素の実数部と虚数部が[-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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.