2013-09-02 1 views
0

Прежде чем задать свой вопрос здесь, я просто хочу, чтобы все знали, что я использую Maple 7 (потому что, возможно, более новые версии Maple уже решили эту проблему). Общая проблема, с которой я сталкиваюсь в клене, заключается в том, что, если я загружаю рабочий лист, мне нужно повторно выполнить все (по крайней мере, так я научился делать вещи на клене), чтобы продолжить работу с моей работой. «Проблема» в том, что некоторые из моих промежуточных символических вычислений могут быть интенсивными во времени, и я предпочел бы сохранить уравнение результата на листе, чтобы, если я его загружу, тогда результат уже есть, и мне не нужно повторите мои символические вычисления. Один из способов я нашел в клена 7, использовать команду сохранить как:Maple 7 and partial saves

save var1, var2, "temp.m" 

К сожалению Maple 7 не поддерживает save temp.m, которая сохраняет все переменные. В этом смысле кленовые листы не совсем похожи на matlab (потому что как только вы загружаете рабочий лист Matlab, вы получаете всю вычисленную переменную уже на своем листе, и вы можете начать работать оттуда уже). Возможно, мой способ слишком примитивен (с помощью команды «сохранить», чтобы сохранить вычисленные результаты, а затем загружать их каждый раз, а не выполнять весь рабочий лист), поэтому, если у кого-то есть более чистый метод решения этой проблемы, я все уши :) Там это еще одна проблема с кленом 7. Если я сохраняю вектор v, используя команду hte save, векторные значения не всегда сохраняются. Если я загружу «файл переменной» из другого листа, v [1] больше не существует. v [1], v [2] .. и т.д. вычисляются с помощью процедуры, говорят f1 .. так что я

v[1] := f1(..some parameters...) 

Процедура f1 имеет out; в своей последней строке (и out является вектором или переменной вычисляется внутри функции у меня есть, в конце концов, потому что я хочу, чтобы f1 возвращал это). когда я пишу print(v); после загрузки переменной V, я только получить что-то вроде этого:

[out, out, out, out] 

, но если я print(v) в исходном листе (после того, как выполняется весь лист) я получить правильный вектор. Поэтому я здесь смущен, и я подумал, что, может быть, кто-то узнает, что происходит. Это происходит только с векторами. Если я сделаю это с помощью переменных, я не получу эту проблему. Поэтому на данный момент я собираюсь сохранить записи векторов один за другим, но это утомительно и грязно. Кто-нибудь с более яркими идеями?

Хосе

ответ

0

нормально .. Я думаю, что я нашел обходной путь к одному из моих вопросов! Что-то необычно с процедурами клена 7. Значения моего вектора ссылаются на другую переменную (out), и я предположил, что это потому, что я возвращаю значения в моей процедуре (вызывается переменная out), и поэтому клен ссылается на это значение. Я переписал мою процедуру, чтобы я не возвращал явно значения, но изменяю значение в параметре процедуры, работая над ссылкой на переменную. Теперь, когда я использую команду save, я действительно получаю вычисленное значение. Я не уверен, что этот вопрос также присутствует в новой версии Maple.

+0

Вы используете векторы с нижним регистром v или векторы с прописными буквами V? –

+0

оба имеют одинаковый эффект – Jose

0

Проблема с «выводом» заключается в том, что имена, назначенные таблицей или процедурой, остаются неоценимыми. В своей процедуре, которая возвращает «выход», вы должны вместо этого вернуть «eval (out, 1)». Как сейчас, процедура возвращает имя «out», которое, в свою очередь, содержит таблицу. Вы хотите, чтобы он сразу возвращал таблицу.

+0

, но почему они оцениваются при работе с этими значениями в том же файле, где они были сгенерированы? – Jose

+0

Не уверен, что я полностью понимаю ваш вопрос. Многие оценки контролируются контекстом. Таким образом, на верхнем уровне все, как правило, полностью оценивается. Кроме того, в контексте, таком как [index], «a» будет оцениваться в таблице. Исключения существуют, хотя некоторые команды нуждаются в контроле над оценкой (например, сохранение, которое требует имен). – DrC