Странная прболема. Опять fsolve.

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

Модератор: Admin

sokolag
Сообщения: 4
Зарегистрирован: Вс апр 13, 2008 10:04 pm

Странная прболема. Опять fsolve.

Сообщение sokolag » Вс апр 20, 2008 1:41 am

Добрый день! Я первый раз пользуюсь маплом. Программа мне очень нравиться.
Для решения своей задачи я написал довольно простую программу (или worksheet - не пойму как правильно назвать). Но возникла одна проблема, которую я никак не могу решить. Описывать её здесь нет смысла, поэтому я прошу Вас посмотреть прикрепленный архив. У меня 11-ая версия, не знаю как с Maple, но обычно бывают проблемы с чтением файлов более старыми версиями. Я поэтому засунул в архив еще тхт файл (экспортированный из MAPLE). Там код какой-то корявый, так что не знаю полезен он будет или нет). И саму задачку впридачу(Zapiska12 называется). Почитайте кому интересно, но это необязательно, конечно. Спасибо заранее, кроме Вас не к кому обратиться даже.

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Пн апр 21, 2008 9:18 am

Здравствуйте!

К сожалению ничего не могу сказать про fsolve. Можно залезть поглубже, посмотреть в чем дело, но это требует времени. Могу подсказать, как избежать зависания программы. После каждого вызова процедуры mu вставьте проверку

if not m1::numeric then break end if;

Вместо break используйте next, если можно продолжить вычисления с другими значениями x.

sokolag
Сообщения: 4
Зарегистрирован: Вс апр 13, 2008 10:04 pm

Странная прболема. Опять fsolve.

Сообщение sokolag » Пн апр 21, 2008 12:04 pm

Спасибо. Я честно говоря уже написал простенькую программу для нахождения нуля функции. По-моему дихотомия называется. Смысл простой: диапазон делится каждый раз пополам и отбрасывается та половина, где функия не меняет знак. Считает идеально, правда, если есть только один корень в диапазоне. У меня есть такой вопрос: я нигде не могу найти как делать отступ от левого края строки (например, когда вводишь текст программы хочется визуально разделять циклы). И еще: как указать какие данные при выполнении программы я хочу видеть а какие нет? : и ; дают один результат. В хелпе я накопал что в цикле они равноценны.

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Вт апр 22, 2008 9:20 am

Отступ можно делать пробелами. В цикле использовать print:

Код: Выделить всё

for i to 10 do
   i;
   print(i^2);
end do:

Если после end do поставить ":", будут выведены только i^2.
Если -- ";", будут выведены i и i^2.