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

Уведомление

Icon
Error

Вход


Опции
К последнему сообщению К первому непрочитанному
Offline Antech  
#1 Оставлено : 23 сентября 2010 г. 9:31:15(UTC)
Antech


Статус: Member

Группы: Registered
Зарегистрирован: 13.09.2010(UTC)
Сообщений: 28
Откуда: Solar System, Earth

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 1 раз в 1 постах
Здравствуйте.
В моих расчетах часто используется конструкция вида (A,B,C)=F(X,Y,Z). Здесь F - функция, которая возвращает матрицу-строку в формате (R1,R2,R3), а матрица (A,B,C) содержит новые переменные A, B и C, которые должны быть созданы (определены) программой в данной строке. Вот. Если я пишу M=F(X,Y,Z), то все нормально. А вот (A,B,C)=F(X,Y,Z) - "ошибка в выражении". Any workarounds?

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

Offline smath  
#2 Оставлено : 23 сентября 2010 г. 15:49:01(UTC)
smath


Статус: Administration

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

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Здравствуйте.

Честно говоря впервые слышу о такой конструкции. Можете пояснить, где её можно увидеть в действии, т.е. где её можно потестировать? И в каких ситуациях её целесообразно использовать?

С уважением, Андрей Ивашов.
Offline build_your_web  
#3 Оставлено : 25 сентября 2010 г. 17:16:04(UTC)
build_your_web


Статус: Advanced Member

Группы: Developers, Registered
Зарегистрирован: 28.08.2009(UTC)
Сообщений: 127

Сказал(а) «Спасибо»: 19 раз
Поблагодарили: 4 раз в 4 постах
Очень стандартная конструкция для функциональных языков (Erlang, например).
http://en.wikipedia.org/wiki/Pattern_matching

Пример из того же Erlang:

Цитата:
43> {X, Y} = {paris, {f, 28}}.
{paris,{f,28}}
44> X.
paris
45> Y.
{f,28}

Отредактировано пользователем 25 сентября 2010 г. 17:18:03(UTC)  | Причина: Не указана

Offline Antech  
#4 Оставлено : 25 сентября 2010 г. 20:15:58(UTC)
Antech


Статус: Member

Группы: Registered
Зарегистрирован: 13.09.2010(UTC)
Сообщений: 28
Откуда: Solar System, Earth

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 1 раз в 1 постах
smath
где её можно потестировать?
Ну это не сложно. Сделайте простейшую функцию, возвращающую матрицу или вектор. Затем создайте матрицу или вектор соответствующей размерности и вставьте туда какие-нибудь новые переменные. Присвойте функцию матрице (или вектору) с новыми переменными - вуаля, ошибка в выражении - можно тестировать Good.

в каких ситуациях её целесообразно использовать?
Почти в любых задачах с программированием (прог-блоками).
Не секрет, что подпрограмма берет и возвращает много (иногда очень много) значений (прикол из жизни: когда учился в институте, видел фрагмент старой DOS программы на Фортране для расчета ступени турбины, где аргументы подпрограммы занимали несколько строк Good). Сейчас эта проблема решается структурами и классами. Но как быть с маткадоидами? Ведь в таких системах не то что классов, даже структур-то нет. Поэтому, в качестве workaround, применяются функции, берущие векторы и векторы векторов (или матрицы и матрицы матриц), и возвращающие результат также в подобном формате. Ну вот, я применяю эту классику в SMath и вижу, что конструкция такая не предусмотрена...
На чем конкретно всплыло: подготовка исходных данных для продувки топки котла. Там надо смешать испаренную влагу топлива (угля) с воздухом. Тупая функция-смеситель на несколько строк берет параметры двух газовых потоков и возвращает вектор результатов: расход G [кг/с], концентрации компонентов - это вектор - c[i] [кг/кг], и приближенную температуру t [*C]. Т.е. имеем вектор, включающий 2 скалара и 1 вектор. Функция должна задать значения новых переменных - вектора (G,c[],t), а оно не хотит...
Offline smath  
#5 Оставлено : 25 сентября 2010 г. 20:49:51(UTC)
smath


Статус: Administration

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

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
build_your_web, спасибо, теперь понял какая функциональность ожидается.

Antech написал:
...ошибка в выражении - можно тестировать Good.

Тут уже скорее не тестировать, а отлаживать придётся. А учитывая, что я изначально просто не понял, как оно должно работать, я и отлаживать не понял бы что Good

Antech написал:
...а оно не хотит...

Займусь этим вопросом, спасибо!

С уважением, Андрей Ивашов.
thanks 1 пользователь поблагодарил smath за этот пост.
Antech оставлено 26.09.2010(UTC)
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.