Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Образовательный студенческий форум _ Информатика / Программирование _ Умножение матриц

Автор: Lutik 30.10.2009, 17:12

[attachmentid=1965]
Нужно написать программу для проверки: то есть умножить А(i,j) на X(i), чтобы получить вектор B(i).
Подскажите пожалуйста правильно ли я рассуждаю:
нужно написать в Real*4 S(10) (в самом начале)
далее после данной программы ввести S=A(i,j)*X(i), напечатать Write (*,*)S и Еnd

Автор: Vago 30.10.2009, 19:31

Цитата(Lutik @ 30.10.2009, 19:12) *

далее после данной программы ввести...

Если на месте красной линии, то Вы в это место при нормальном завершении стандартной п/п никогда не попадёте.
Цитата(Lutik) *

S=A(i,j)*X(i)

Нет. Тут два цикла, один в другом, явно, ручками, прописать надо.

Автор: Lutik 30.10.2009, 20:31

оки, значит нужно сделать цикл Do i=1,10 и do j=1,10 потом S=A(i,j)*X(i) и печать?

Автор: Vago 30.10.2009, 21:03

Нет. Во внешнем цикле ( который у Вас по I ) сперва нужно обнулить S(I), а потом, во внутреннем ( по J ), поприбавлять к этому S(I) попарные произведения A(I,J)*X(J).

Автор: Lutik 30.10.2009, 21:11

Do i=1,10
s(i)=0
do j=1,10
S(i)=s(i)+A(i,j)*X(i)
write(*,*)s(i)

Автор: Vago 30.10.2009, 21:30

Цитата(Lutik @ 30.10.2009, 23:11) *

S(i)=s(i)+A(i,j)*X(i)

x(j) . X йот'ое.

Ну и циклы позакрывать нужно...

Автор: Lutik 30.10.2009, 21:31

Do i=1,10
s(i)=0
do j=1,10
S(i)=s(i)+A(i,j)*X(j)
enddo
endoo
write(*,*)s(i)
при закрывании цикла не могу быть уверен может быть после Write

Автор: Vago 30.10.2009, 21:42

Цитата(Lutik @ 30.10.2009, 23:31) *

...
enddo
endoo
write(*,*)s(i)

...
enddo
write(*,*)s(i)
enddo

Красоты, конечно, никакой, но хотя бы не за циклом печатаем...


Автор: Lutik 30.10.2009, 21:43

Спасибо разобрался

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)