2016-04-04 5 views
0

У меня есть эта система уравнений набор 1 ≤ n ≤ 30Как написать переменную матрицу в Matlab?

−(2 + α)x1 + x2 = b1, 
xj−1 − (2 + α)xj + xj+1 = bj , for 2 ≤ j ≤ 29, 
x29 − (2 + α)x30 = b30. 

а = 1 Мы предполагаем, что мембрана удерживается в конечных точках (т.е. x0 = 0 и x31 = 0). На мембране нет веса, так что все bj = 0 для j = 1. , , 30, за исключением j = 6, где применяется нагрузка: b6 = 2.

Я хочу рассчитать LU-факторизацию системы. Я не знаю, как реализовать левую часть системы в Matlab. Правая Я сделал это так:

b=[0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]'; 

Как сделать левую сторону?

Благодаря

+0

Есть ли опечатка в b выше? должен ли 6-й элемент быть 2 не 6? – mgilbert

ответ

0

Неясно, почему вы включили всю линейную систему, если вы заинтересованы только в LU факторизация? Несмотря на это, вот какой-то код, который генерирует вашу матрицу А, как описано выше, и решает линейную систему и показывает факторизацию LU.

% equation A*X = b 

b = zeros(30,1); 
b(6) = 2; 
alpha = 1; 

A = zeros(30, 30); 

A(1, 1) = -(2 + alpha); 
A(1, 2) = 1; 

for i = 2:29 
    A(i, i-1) = 1; 
    A(i, i) = -(2 + alpha); 
    A(i, i+1) = 1; 
end 

A(30, 29) = 1; 
A(30, 30) = -(2 + alpha); 

Вы можете получить LU факторизация, используя lu(A) или решить систему линейных уравнений с использованием linsolve(A,b).

+0

'A = - (2 + alpha) * eye (30) + diag (единицы (29,1), 1) + diag (единицы (29,1), - 1)' достаточны вместо цикла. – percusse

+0

Да благословит вас Бог ... спасибо всем за помощь братьям ... Теперь я понимаю намного лучше :) –

Смежные вопросы