Русскоязычный форум закрыт из-за отсутствия активности (доступен только для чтения).
Пожалуйста, пользуйтесь англоязычной его версией. Приносим извинения за неудобства
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Вход


Опции
К последнему сообщению К первому непрочитанному
Offline XroM  
#1 Оставлено : 19 ноября 2008 г. 17:22:35(UTC)
XroM


Статус: Member

Группы: Registered
Зарегистрирован: 19.11.2008(UTC)
Сообщений: 19
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 2 раз
У меня возник вопрос по использованию циклов в программе,
Вот я пытаюсь более менее автоматизировать решение СЛАУ методом Ж.Г. и подобные действия
Допустим есть матрица Z:=mat(1;-1;-3;2;1;0;0;0;-1;2;0;-1;0;1;0;0;2;-4;1;1;0;0;1;0;-1;-2;9;-1;0;0;0;1;4;8)
Выполняем цикл:
for(i:=2;i<5;i:=i+1;Q:=row(Z;i)+row(Z;1)*(-el(Z;i;1)))
И при вводе после цикла Q= видим
Q=mat(0;1;-3;1;1;1;0;0;1;8) т.е. результат выполненных действий над первой строкой,
а как получить другие результаты?
Или вообще может кто сможет подсказать более простой вариант решения))

P.S. На форуме не правильно отображается i<5 (а отображается как i/\lt;5)

Ой а еще вопрос, можно ли как-нибудь с помощью цикла заполнять поэлементно или построчно матрицы?

Отредактировано модератором 20 ноября 2008 г. 1:54:35(UTC)  | Причина: Исправление ошибок)

Wanna join the discussion?! Login to your Форум проекта SMath forum account. Новые регистрации запрещены.

Offline smath  
#2 Оставлено : 19 ноября 2008 г. 17:41:36(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Если говорить именно про "решение СЛАУ методом Ж.Г.", то можно просто использовать A^{-1}*B, например так:
A←mat(1;-1;-3;2;-1;2;0;-1;2;-4;1;1;-1;-2;9;-1;4;4) B←mat(0;1;2;3;4;1)
A^{-1}*B=mat(79;49;22;18;4;1)
Offline XroM  
#3 Оставлено : 19 ноября 2008 г. 17:49:30(UTC)
XroM


Статус: Member

Группы: Registered
Зарегистрирован: 19.11.2008(UTC)
Сообщений: 19
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 2 раз
Спасибо за ответ, это в принципе и так понятно, я же хотел расписать все действия. Лан, бум по старинке, на бумажке))
Offline smath  
#4 Оставлено : 19 ноября 2008 г. 21:54:25(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
И так, по случаю, всвязи с множеством найденных критических ошибок, пришлось выпусть новую версию программы SMath Studio 0.68 (уже доступна для загрузки). Одно из изменений - это исправление работы с циклами. Теперь могу ответить на Ваш вопрос:
Цитата:
Ой а еще вопрос, можно ли как-нибудь с помощью цикла заполнять поэлементно или построчно матрицы?

Теперь можно Biggrin. Вот пример:
A←matrix(6;6)
for(j←1;j≤rows(A);j←j+1;for(k←1;k≤cols(A);k←k+1;el(A;j;k)←(j-1)*rows(A)+k))
A=mat(1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;6;6)
(скачать файл сохранения с примером - только с версии 0.68)
Offline smath  
#5 Оставлено : 20 ноября 2008 г. 1:56:08(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
XroM написал:
P.S. На форуме не правильно отображается i<5 (а отображается как i/\lt;5)

Исправил, теперь спец. символы обрабатываются корректно.
Offline XroM  
#6 Оставлено : 20 ноября 2008 г. 16:28:03(UTC)
XroM


Статус: Member

Группы: Registered
Зарегистрирован: 19.11.2008(UTC)
Сообщений: 19
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 2 раз
Еще есть вопросы, например есть матрица:
Z←mat(1;2;3;4;5;6;7;8;9;3;3)
Я, например, хочу из первой строки, если она не равна 1, вычесть 5:
A←matrix(3;3)
for(j←1;j≤rows(A);j←j+1;for(k←1;k≤cols(A);k←k+1;if(el(Z;1;1)≠1;el(A;1;k)←el(Z;1;k)-5;el(A;1;k)←el(Z;1;k)+5)))
И получаем:
A=mat(-4;-3;-2;0;0;0;0;0;0;3;3)
т.е. программа считает что 1 ≠ 1 Good
И опять же если в матрице Z первый элемент, например, равен 5:
Z←mat(5;2;3;4;5;6;7;8;9;3;3)
То
A=mat(10;7;8;0;0;0;0;0;0;3;3)
Я так понимаю просто не правлиьно обрабатывается условие, она делает все наоборот))
Offline smath  
#7 Оставлено : 20 ноября 2008 г. 17:54:53(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Ох... Вы правы. Очень странно. Что ж, займусь полной проверкой функций программирования программы. О результатах сообщу здесь. Спасибо за подробный отчёт.
Offline smath  
#8 Оставлено : 23 ноября 2008 г. 6:28:27(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Как и обещал, протестировал все "программные" функции SMath Studio и выявил множество ошибок. Все найденные мной и Вами недочёты исправил. Итого: SMath Studio 0.69

Специально для этой темы накидал алгоритм преобразования матрицы на листе программы: прямой ход по методу Гаусса (вычисление занимает 77 мс. на Desktop версии) :
A←mat(1;3;2;-1;1;0;0;0;0;2;1;1;0;1;0;0;-2;1;0;2;0;0;1;0;0;1;1;-1;0;0;0;1;4;8)
B←matrix(rows(A);cols(A))
for(s←1;s<rows(A);s←s+1;line(for(j←s;j≤rows(A);j←j+1;for(k←s;k≤cols(A);k←k+1;if((j>s)&(el(A;j;s)≠0);el(B;j;k)←(el(A;s;s))*(el(A;j;k))-(el(A;j;s))*(el(A;s;k));el(B;j;k)←el(A;j;k))));A←B;2;1))
B=mat(1;3;2;-1;1;0;0;0;0;2;1;1;0;1;0;0;0;0;1;-7;4;-7;2;0;0;0;0;4;-4;6;-2;2;4;8)
(скачать листинг)
Надеюсь это поможет в Ваших задачах.
Пользователи, просматривающие эту тему
Similar Topics
Использование циклов (Примеры использования)
по smath 11.07.2008 20:33:41(UTC)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.