Статус: 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?
Статус: Administration
Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Сказал «Спасибо»: 640 раз Поблагодарили: 262 раз в 102 постах
Здравствуйте. Честно говоря впервые слышу о такой конструкции. Можете пояснить, где её можно увидеть в действии, т.е. где её можно потестировать? И в каких ситуациях её целесообразно использовать? С уважением, Андрей Ивашов.
Статус: Advanced Member
Группы: Developers, Registered Зарегистрирован: 28.08.2009(UTC) Сообщений: 127
Сказал(а) «Спасибо»: 19 раз Поблагодарили: 4 раз в 4 постах
Статус: Member
Группы: Registered
Зарегистрирован: 13.09.2010(UTC) Сообщений: 28 Откуда: Solar System, Earth
Сказал(а) «Спасибо»: 7 раз Поблагодарили: 1 раз в 1 постах
smath где её можно потестировать? Ну это не сложно. Сделайте простейшую функцию, возвращающую матрицу или вектор. Затем создайте матрицу или вектор соответствующей размерности и вставьте туда какие-нибудь новые переменные. Присвойте функцию матрице (или вектору) с новыми переменными - вуаля, ошибка в выражении - можно тестировать
.
в каких ситуациях её целесообразно использовать? Почти в любых задачах с программированием (прог-блоками).
Не секрет, что подпрограмма берет и возвращает много (иногда очень много) значений (прикол из жизни: когда учился в институте, видел фрагмент старой DOS программы на Фортране для расчета ступени турбины, где аргументы подпрограммы занимали несколько строк
). Сейчас эта проблема решается структурами и классами. Но как быть с маткадоидами? Ведь в таких системах не то что классов, даже структур-то нет. Поэтому, в качестве workaround, применяются функции, берущие векторы и векторы векторов (или матрицы и матрицы матриц), и возвращающие результат также в подобном формате. Ну вот, я применяю эту классику в SMath и вижу, что конструкция такая не предусмотрена...
На чем конкретно всплыло: подготовка исходных данных для продувки топки котла. Там надо смешать испаренную влагу топлива (угля) с воздухом. Тупая функция-смеситель на несколько строк берет параметры двух газовых потоков и возвращает вектор результатов: расход G [кг/с], концентрации компонентов - это вектор - c[i] [кг/кг], и приближенную температуру t [*C]. Т.е. имеем вектор, включающий 2 скалара и 1 вектор. Функция должна задать значения новых переменных - вектора (G,c[],t), а оно не хотит...
Статус: Administration
Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Сказал «Спасибо»: 640 раз Поблагодарили: 262 раз в 102 постах
build_your_web , спасибо, теперь понял какая функциональность ожидается.
Antech написал: ...ошибка в выражении - можно тестировать
.
Тут уже скорее не тестировать, а отлаживать придётся. А учитывая, что я изначально просто не понял, как оно должно работать, я и отлаживать не понял бы что
Antech написал: ...а оно не хотит...
Займусь этим вопросом, спасибо!
С уважением, Андрей Ивашов.
1 пользователь поблагодарил smath за этот пост.
Antech оставлено 26.09.2010(UTC)
Быстрый переход
Форум проекта SMath
SMath Studio
- Скачать SMath Studio
--- Архив
--- Ночные сборки
- Примеры использования
- Вопросы по использованию
- Предложения
- Ошибки
Математика
- Документы
- Алгоритмы
- Математические задачи
Общение
- О проекте
- Общение
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.