[英]100x100 Matrix MATLAB coding
我想生成一個與此類似的100x100矩陣,其中第一行和最后一行是不同的,而中間的行都相同,但移動了1。
這是我對10x10矩陣的要求:
>> A=[0.8 -0.2 0 0 0 0 0 0 0 0;
-0.3 0.5 -0.2 0 0 0 0 0 0 0;
0 -0.3 0.5 -0.2 0 0 0 0 0 0;
0 0 -0.3 0.5 -0.2 0 0 0 0 0;
0 0 0 -0.3 0.5 -0.2 0 0 0 0;
0 0 0 0 -0.3 0.5 -0.2 0 0 0;
0 0 0 0 0 -0.3 0.5 -0.2 0 0;
0 0 0 0 0 -0.3 0.5 -0.2 0;
0 0 0 0 0 0 0 -0.3 0.5 -0.2;
0 0 0 0 0 0 0 0 -0.3 0.7;]
B= [62; 0; 0; 0; 0; 0; 0; 0; 0; 82]
>> solution=inv(A)*B
任何幫助深表感謝。
非常感謝。
創建A的代碼是:
A = zeros(100);
A(1,1:2) = [0.8 -0.2];
for i = 2:99
A(i,i-1:i+1) = [-0.3 0.5 -0.2];
end
A(100,99:100) = [-0.3 0.7];
然后,您可以使用相同的模板進行B操作。
方法1:
%%// Only this part would change when you go from your sample size of 10 to 100
N = 100;
A = zeros(N); %%// Initialize
A(1:size(A,1)+1:end) = 0.5; %%// Diagonal values
A(2:size(A,1)+1:end) = -0.3;%%// Left-to-diagonal values
A(size(A,1)+1:size(A,1)+1:end) = -0.2;%%// Right-to-diagonal values
A([1 end]) = [0.8 0.7]; %% Different scalars at the top and end
方法二:
N = 100; %%// Size of matrix
L = -0.3; %%// Left to diagonal values
D = 0.5; %%// Diagonal values
R = -0.2; %%// Right to diagonal values
A = D*diag(ones(N,1)) + R*diag(ones(N-1,1),1) + L*diag(ones(N-1,1),-1);
A([1 end]) = [0.8 0.7]; %% Different scalars at the top and end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.