假設我想構造一個矩陣A
,使得A[[i,i]]=f[x_,y_]+d[i]
,A[[i,i+1]]=u[i]
,A[[i+1,i]]=l[i], i=1,N
。說,f[x_,y_]=x^2+y^2
。在Mathematica中構造一個非零元素包含函數和變量的三對角矩陣
如何在Mathematica中對此進行編碼?
另外,如果我想的A
第一對角線元素,即A[[1,1]]
超過x
和y
,從0都運行到1,我該怎麼做整合?
假設我想構造一個矩陣A
,使得A[[i,i]]=f[x_,y_]+d[i]
,A[[i,i+1]]=u[i]
,A[[i+1,i]]=l[i], i=1,N
。說,f[x_,y_]=x^2+y^2
。在Mathematica中構造一個非零元素包含函數和變量的三對角矩陣
如何在Mathematica中對此進行編碼?
另外,如果我想的A
第一對角線元素,即A[[1,1]]
超過x
和y
,從0都運行到1,我該怎麼做整合?
In[1]:= n = 4;
f[x_, y_] := x^2 + y^2;
A = Normal[SparseArray[{
{i_,i_}/;i>1 -> f[x,y]+ d[i],
{i_,j_}/;j-i==1 -> u[i],
{i_,j_}/;i-j==1 -> l[i-1],
{1, 1} -> Integrate[f[x,y]+d[1], {x,0,1}, {y,0,1}]},
{n, n}]]
Out[3]= {{2/3+d[1], l[1], 0, 0},
{u[1], x^2+y^2+ d[2], l[2], 0},
{0, u[2], x^2+y^2+d[3], l[3]},
{0, 0, u[3], x^2+y^2+d[4]}}
Band
爲這個專門定製:
[email protected]_Integer?Positive :=
SparseArray[
{ [email protected]{1, 1} -> f[x, y] + Array[d, n]
, [email protected]{1, 2} -> Array[u, n - 1]
, [email protected]{2, 1} -> Array[l, n - 1]}
, {n, n}]
檢查出來(無需定義f
,d
,u
,l
):
[email protected] // MatrixForm
注意MatrixForm
不應該成爲定義的一部分。例如,設置A = (something) // MatrixForm
是個不錯的主意。你將得到一個MatrixForm
對象而不是一個表格(=數組數組)或一個稀疏數組,它的唯一目的是在FrontEnd中打印出來。在計算中嘗試使用MatrixForm
會產生錯誤,並會導致不必要的混淆。
整合元件的{1, 1}
:
[email protected]_Integer?Positive :=
MapAt[
Integrate[#, {x, 0, 1}, {y, 0, 1}]&
, [email protected]
, {1, 1}]
你可以檢查出來,而不定義f
或d
,以及:
[email protected]
後者的操作,但是,看起來很可疑。例如,它不會離開您的矩陣(或其對應的線性系統)不變w.r.t.合理的轉變。 (這個操作甚至不保存矩陣的線性。)你可能不想這樣做。
上述評論評論:沒有必要定義A[x_, y_] := …
至Integrate[A[[1,1]], {x,0,1}, {y,0,1}]
。請注意,A[[1,1]]
與A[1, 1]
完全不同:前者是Part[A, 1, 1]
,它是表A
的某個元素。 A[1, 1]
是一個不同的表達式:如果A
是某個表,那麼A[1, 1]
是(that table)[1, 1]
,這是一個有效的表達式,但通常被認爲是無意義的。
謝謝。我認爲,這工作正常。 但是,我該怎麼做整合?不應該''A需要參數'x'和'y'? – hbaromega
除非我誤解了這個問題,否則它會進行積分,矩陣的左上角是結果2/3 + d [i] oops,應該是2/3 + d [1],編輯和校正現在。我不明白你爲什麼認爲A需要論證,它只是一個矩陣。你可以用A [[2,3]]提取元素,但這是我猜測你可能會想到的唯一的東西。如果你的意思不止於此,那麼你需要解釋你在想什麼。 Mathematica不是一種正常的編程語言,如果這是你的背景和你來自哪裏。許多事情是不同的。 – Bill
對不起,我上次可能錯過了集成,或者它不在那裏。 假設我在一個時間點構造矩陣,然後在一個時間點,我想做整合。爲此,我不需要在LHS上定義'A'作爲函數:'A [x_,y_]',然後積分[A [[1,1]],{x,0, 1},{y,0,1}]'? 讓我知道如果我仍然聽起來很模糊。 Btw什麼'普通'做什麼? – hbaromega