Маткад 2001 VS Маткад 15

Форум пользователей пакета Mathcad

Модератор: Admin

Opsas
Сообщения: 21
Зарегистрирован: Чт апр 07, 2011 4:12 pm

Маткад 2001 VS Маткад 15

Сообщение Opsas » Пт ноя 20, 2015 10:32 am

Добрый день. Сталкивался кто-нибудь с таким фактом, что одна и та же программа, написанная на Маткаде 2001 и работающая в ХР, будучи запущенной в Маткаде-15 и под Вин-7, дает разные результаты? Причем, содержание прогги простое: открыть текстовые файлы (небольшие) и провести с его элементами простые математические операции (*, /, +)

Vladimir__
Сообщения: 1658
Зарегистрирован: Вс дек 21, 2003 8:52 am

Сообщение Vladimir__ » Пт ноя 20, 2015 10:48 am

А вы могли бы прикрепить архив с этими файлами?

Opsas
Сообщения: 21
Зарегистрирован: Чт апр 07, 2011 4:12 pm

Сообщение Opsas » Пт ноя 20, 2015 8:39 pm

Уважаемый Владимир. Подготовлю файлы (данные, описание) и выложу. Хочу четко объяснить суть и проблему.

Opsas
Сообщения: 21
Зарегистрирован: Чт апр 07, 2011 4:12 pm

Сообщение Opsas » Сб ноя 21, 2015 6:06 pm

Вначале хочу объяснить некоторые моменты. Маткадом я пользуюсь очень активно, на некотором этапе обработки данных он весьма удобен. Исходные файлы обрабатываю на Фортране, он создает текстовые файлы с результатами своей работы, а анализ с прямой и непосредственной визуализацией, с возможностью непрерывно менять условия обработки и видеть тут же результат – в Маткаде. Маткады-11, 12 и 15 меня не удовлетворяют. Например, в 15-м есть непонятная "приблуда": если где-то выше в файле Маткада поменял (да хотя бы имя открываемого файла данных в ТХТ-формате), как сразу по всему файлу Маткада выводимые на показ графики и таблицы, связанные с вычислениями этих данных, исчезают, хотя команда "пересчитать" подана не была, и опция "автоматический пересчет" выключена. И напротив, часто 15-й не обновляет выведенные на экран графики и таблицы, хотя была дана команда "пересчитать все". (Но при этом, если есть вывод результата в файл, выводит.)
Поэтому работаю в 2001 несмотря на заполонившие новшества – наиболее удобная программа: безотказная, некапризная, четкая.
Объем вычислений у меня огромен (по много часов прогга работает над одним программным блоком в Маткаде). Многоядерный комп, конечно, ускорил бы дело. Но на многоядерную машину не ставится ХР. А Маткад 2001 не ставится на 7-ку или 8-ку. Впрочем, все равно пришла пора менять комп на современный.

Opsas
Сообщения: 21
Зарегистрирован: Чт апр 07, 2011 4:12 pm

Сообщение Opsas » Сб ноя 21, 2015 6:07 pm

У меня сделано так. 8-миядерный комп, стоит на нем 7-ка, в ней виртуальная машина с ХР, а в ней крутятся программы, которые не дружат с 7-кой. Таких немало, между прочим. В ХР стоит Маткад 2001, в 7-ке - Маткад 15. Пишу и обкатываю прогги в Маткаде 2001 на ХР, а обрабатывать массив данных – копирую проггу в пространство 7-ки и запускаю через Маткад 15. Открывает он файлы Маткада 2001-го без проблем, работают они хорошо и быстро, т.к. распределяют задачу по ядрам. Обычно под ХР и в Маткаде 2001 прогги на обработку данных не запускаю – медленно работают, это же виртуальная машина. Но сомнения в доверии к 15, появившись раз, не развеивались. Я обязательно провел эксперимент: запустил Маткад 2001 на обработку, хоть это и долго. В итоге у меня получилось два файла с результатами работы одной и той же прогги в двух разных средах. И они различались, хотя содержание прогги в Маткаде 15 не менялось ни на букву, она была запущена на исполнение сразу.
Провел новые эксперименты, чтобы понять причину. Поначалу грешил на Маткад 2001. Ну мало ли... виртуальная машина, взятие данных как бы с другого компа (физически один диск, но системы разные, ХР видит 7-ку как чужую машину) и т.д. Запускал Маткад 2001 на других компах с теми же файлами обрабатываемыми, где есть ХР, – результат везде один и тот же. Так что ни машина, ни виртуальность ни при чем. А Маткад 15 выдает другой результат.
Еще одна особенность. В прогге я использую Мега-цикл, т.е. не в программном блоке задается "for i=0…N-1", а прямо на странице в начале файла стоит "J = N1….N2", а все операции и блоки ниже имеют индекс J. Вынужден так поступать, потому что внутри программного блока команда READPRN не действует, а мне нужно открыть массу файлов в цикле. Так вот, если этот Мега-цикл у меня всего из одного значения состоит (т.е. "J = N1….N1"), то результаты работы Маткада 2001 и Маткада 15 совпадают. Но стоит сделать хотя бы "J = N1….N1+1", как результаты разные. В целом ясно, что где-то не происходит обнуления каких-то уже использованных переменных, которые должны обнуляться. Но Маткад не Фортран и не Си, просматривать буквально ячейки ОЗУ и контролировать пошагово выполнение прогги не могу.
Подозреваю, что корень проблемы не выявить. Точно, как прошлый раз с большими файлами: ну вот такая особенность программы (Маткада) – молча резать большие массивы по своему усмотрению. Вышел сюда на форум просто чтобы народ имел в виду.
Я сократил свою проггу, выкинув все несущественные операции, и снова погонял по двум Маткадам. Расхождения между Маткадом 2001 и 15 остались те же самые. В архивном файле все необходимое.
Последний раз редактировалось Opsas Сб ноя 21, 2015 6:27 pm, всего редактировалось 1 раз.

Opsas
Сообщения: 21
Зарегистрирован: Чт апр 07, 2011 4:12 pm

Сообщение Opsas » Сб ноя 21, 2015 6:14 pm

Вот файлы в комплекте.

Увы, не получилось. Архив весит 4 М, форум столько не пускает. Что делать? Открываемые файлы данных я уменьшить не могу.

Opsas
Сообщения: 21
Зарегистрирован: Чт апр 07, 2011 4:12 pm

Сообщение Opsas » Сб ноя 21, 2015 6:19 pm

ничего не получается.

Opsas
Сообщения: 21
Зарегистрирован: Чт апр 07, 2011 4:12 pm

Сообщение Opsas » Сб ноя 21, 2015 6:26 pm

Ну саму проггу могу, а файлы данных весят в архиве 4 м.

Opsas
Сообщения: 21
Зарегистрирован: Чт апр 07, 2011 4:12 pm

Сообщение Opsas » Сб ноя 21, 2015 6:38 pm


Леночка
Сообщения: 3
Зарегистрирован: Сб ноя 21, 2015 5:51 pm

Сообщение Леночка » Сб ноя 21, 2015 7:52 pm

Помогите, пожалуйста. Составила полиномиальное уравнение по полученному графику (файл приложила), получила формулу. Надо решить это уравнение в Mathcad, но я не понимаю какие значения нужно прописать под x.
Получается будем использовать функцию polyint(X,Y,x)? Но как тогда преобразовать функцию и что взять за данные для X,Y,x?
Объясните кто-нибудь... По книжке так легко все решалось, а когда вот так, то стало вообще не понятно...

Opsas
Сообщения: 21
Зарегистрирован: Чт апр 07, 2011 4:12 pm

Сообщение Opsas » Вс ноя 22, 2015 7:02 pm

Дорогая Лена. Я вам помочь ничем не могу. Я не эксперт в Маткаде, знаю его очень однобоко. Занимаясь чистой наукой, а не инженерией, в своей непосредственной работе очень редко сталкиваюсь с операциями сложнее деления/умножения. Тем более, с разными полиномиальными аппроксимациями, решениями ДУ и пр.
Я не паясничаю. Ну, иронизирую разве что. Сам поразился как-то, взглянув на программу, написанную мной на Фортране. 4 файла по 10-12 кБайт (обычных, текстовых, содержат собственно набор команд), куча подпрограмм, перекрестно ссылающихся. Я в ней уже до конца сам не разбираюсь и боюсь трогать. С этой программой получено несколько важных и внушительных результатов по физике Солнца и космическим лучам. И при этом во всех тысячах строк всего раз стоит вычисление экспоненты, все прочее - сложить, сравнить, нормировать, линейно аппроксимировать. Маткад я в том же ключе использую.

Vladimir__
Сообщения: 1658
Зарегистрирован: Вс дек 21, 2003 8:52 am

Сообщение Vladimir__ » Пн ноя 23, 2015 4:14 pm

Покажите на скриншотах на каких вычислениях происходит разница между MC2001 и MC15. Какой сервис релиз версии Mathcad 15 вы используете (в главном меню программы переходим: "Справка" --> "О программе Mathcad")?

Opsas
Сообщения: 21
Зарегистрирован: Чт апр 07, 2011 4:12 pm

Сообщение Opsas » Пн ноя 23, 2015 6:06 pm

Картинки на http://my-files.ru/22eco5
Начало файла приведено и окончание с выводом в каждой из программ

Nub
Сообщения: 35
Зарегистрирован: Пн май 06, 2013 11:46 am

Сообщение Nub » Пт ноя 27, 2015 9:51 pm

Opsas писал(а):И при этом во всех тысячах строк всего раз стоит вычисление экспоненты, все прочее - сложить, сравнить, нормировать, линейно аппроксимировать.

так вот как ученые получают свои результаты! я это и подозревал

Vladimir__
Сообщения: 1658
Зарегистрирован: Вс дек 21, 2003 8:52 am

Сообщение Vladimir__ » Пт дек 04, 2015 4:03 pm

Opsas,

Ваша программа работает не правильно в версиях с Mathcad 12 по Mathcad 15 включительно (это неисправленный "баг" программы остается в среде с версии 12), но после некоторых преобразований в документе можно прийти к результату, полученному в Mathcad 2001. Также, программа нормально работает без изменений в рабочем документе в версии Mathcad Prime 3.1. Так что если вы используете лицензионный Mathcad, то от одного лицензионного файла будут вместе работать и Mathcad 15 и Mathcad Prime 3.1. Ссылка на архив с исправленным файлом Mathcad 15 и сконвертированным файлом (без каких-либо изменений исходного файла, созданного в версии Mathcad 2001) для версии Mathcad Prime 3.1: http://my-files.ru/po1u4e