slvblk
概ブロック対角線形システムの解法
構文
x = slvblk(blokmat,b)
x = slvblk(blockmat,b,w)
説明
x = slvblk(blokmat,b)
は、線形システム Ax = b
の解がある場合は、それを返します。行列 A
はスプライン概ブロック対角型の blokmat
に格納されます。現在、典型的なエントリが特定のサイトの B スプラインの特定の導関数 (0 次導関数 (値) を含む) の値である行列について、このような説明を提供しているのはコマンド spcol
のみです。線形システムが過決定される (つまり、未知数より多くの式をもつがフル ランクである) 場合は、最小二乗解が返されます。
右側の b
にはいくつかの列が含まれる場合があり、blokmat
によって記述される行列内の行と同じ数の行が含まれると想定されます。
x = slvblk(blockmat,b,w)
は、"重み付き" 和 Σjw(j)((Ax – b)(j))2 を最小化するベクトル x
を返します。
例
sp=spmak(knots,slvblk(spcol(knots,k,x,1),y.'))
は、与えられたデータ (x,y)
に一致する、つまり、(x)
が y
に等しい場合に、節点シーケンス knots
で、次数 k
の B 型スプライン s を sp
に提供します。
アルゴリズム
コマンド bkbrk
を使用して、blokmat
によって (2 つの使用可能な型のいずれかで) 記述される係数行列の主要部分を取得します。
QR 分解は、前のブロックを因数分解するときに扱わなかった式によって拡張された後に、各対角ブロックで行われます。その後、得られた分解は後退代入によって線形システムを解くために使用されます。