Жордан-Гаусс

Форум пользователей пакета Maple

Модератор: Admin

Кли
Сообщения: 107
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Жордан-Гаусс

Сообщение Кли » Вт сен 18, 2018 9:06 pm

Здравствуйте!!! Есть код, но мне вот непонятно чутка: есть i и p и оба они означает номер строки,Вопрос: эти индексы отличаются чем-то?

Код: Выделить всё

restart;
with(linalg);
n := 14; j := 1.5+.1*n; k := j; l := k-.1; m := 5;
A := matrix([[j, .5*j, 0, .2*l, 0], [.5*j, j, .3*j, 0, .1*l], [0, .3*j, 10, -.3*j, .5*l], [.2*k, 0, -.3*j, j, -.1*j], [0, .1*k, .5*k, -.1*j, j]]);
b := vector([-j+0.5e-1*j*j, -.8*j+.1*j*j-0.2e-1*l*j, -10+0.3e-1*j*j-.1*l*j, -.2*k+.3*j+0.2e-1*j*j, 0.1e-1*k*j-.5*k-.2*j*j])
for p to m do d := A[p, p];
for q from p to m do A[p, q] := A[p, q]/d end do;
b[p] := b[p]/d;
for i to m do d1 := A[i, p]/A[p, p];
if i <> p then
for q from p to m do A[i, q] := -d1*A[p, q]+A[i, q] end do;
b[i] := -d1*b[p]+b[i]:
end if: end do: end do;
print(A); print(b);

Kitonum
Сообщения: 2040
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: Жордан-Гаусс

Сообщение Kitonum » Ср сен 19, 2018 11:07 pm

Ваш код не работает, т.к. вы забыли разделитель (точка с запятой) когда вводили вектор b . Также я сделал несколько исправлений в коде, связанных в основном с тем, что пакет linalg давно устарел (впрочем в коде он и не нужен). Вместо matrix и vector следует использовать Matrix и Vector . Что означает каждая буковка в коде вы должны разобраться сами, иначе Вы ничему не научитесь.

Код: Выделить всё

restart;

n := 14; j := 1.5+.1*n; k := j; l := k-.1; m := 5;
A := Matrix([[j, .5*j, 0, .2*l, 0], [.5*j, j, .3*j, 0, .1*l], [0, .3*j, 10, -.3*j, .5*l], [.2*k, 0, -.3*j, j, -.1*j], [0, .1*k, .5*k, -.1*j, j]]);
b := Vector([-j+0.5e-1*j*j, -.8*j+.1*j*j-0.2e-1*l*j, -10+0.3e-1*j*j-.1*l*j, -.2*k+.3*j+0.2e-1*j*j, 0.1e-1*k*j-.5*k-.2*j*j]);
 
for p to m do d := A[p, p];
    for q from p to m do A[p, q] := A[p, q]/d end do;
    b[p] := b[p]/d;
       for i to m do d1 := A[i, p]/A[p, p];
       if i <> p then
       for q from p to m do A[i, q] := -d1*A[p, q]+A[i, q] end do;
       b[i] := -d1*b[p]+b[i] end if;
       end do:
end do:

A:=convert(A, Matrix):
b:=convert(b, Vector):
A;
b;

Кли
Сообщения: 107
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Re: Жордан-Гаусс

Сообщение Кли » Ср сен 19, 2018 11:31 pm

спасибо