我寫了下面的一段代碼時,永遠繼續:循環似乎繪製圖表
M = [3 0 0; 0 2 0; 0 0 0.5] % mass matrix
i_vals = 1:1000:60e06; % values of k_12 from 1 to 600 million in steps of 1000
modes = zeros(3, length(i_vals));
for n=1:length(i_vals)
i = i_vals(n) % i is the value of k_12
K = [i+8e06 -i -2e06; -i i+2e06 -1e06; -2e06 -1e06 5e06]; % stiffness matrix
[V,L]=eig(K,M);
V(:,I)=V;
A = V(:, [1])
transpose(A)
modes(:, n) = A
end
loglog(i_vals, modes')
但環似乎永遠繼續,現在我知道什麼是錯的。這個想法是從矩陣V獲得第一列,並且當k_12的值被改變時,看看在這列中的3個元素會發生什麼。
你確實意識到你必須循環60000次?什麼是'V(:, I)= V;'應該這樣做?這不會導致每個迭代都會增加「V」嗎?所有複製到越來越大的陣列可以真正減慢速度。當你讓i_vals小得多時,這是否工作? (比如說停在6001,所以只有6個循環)? – Floris
(嚴格來說,'60e6'是_60_0000,不是600)=) –
@ user2579288,請考慮接受下面的答案之一。就目前來看,這個問題似乎沒有答案。 –