2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Maple - численное решение диф. уравнений
Сообщение24.07.2010, 19:37 
Аватара пользователя


24/06/10
19
Здравствуйте, вопрос состоит в следующем:
Нужно решать численно дифференциальные уравнения разными методами заданным шагом, точностью, желательно использование длинной арифметики...
Но сначала по порядку о вещах первой необходимости...
Решил для примера оттестировать на простом примере, но сразу же появилась проблема с заданием шага
dsolve({ode,ics},type=numeric,method=classical[rk4],stepsize=.001);
При увеличении stepsize более чем 10^-3 выдаются неверные решения...
Еще остается вопрос о работе с длинной арифметикой...

 Профиль  
                  
 
 Re: Maple - численное решение диф. уравнений
Сообщение26.07.2010, 13:23 
Заслуженный участник


12/07/07
4530
rk4 — это схема Рунге — Кутта четвертого порядка с постоянным шагом. Шаг должен выбираться настолько малым, чтобы обеспечить заданную точность. Даже, если функции имеют непрерывные производные четвертого порядка, они могут меняться настолько быстро, что для решения с приемлемой точностью потребуется чрезвычайно малый шаг.

Мне кажется, термин длинная арифметика в данном случае неуместен. Число десятичных знаков после запятой, учитываемых в вычислениях, определяется значением переменной Digits. Для изменения её значения (по умолчанию 10, во всех известных мне версиях, от 5-ой до 12-ой включительно) достаточно присвоить этой переменной новое значение, например,
Код:
Digits := 16

Добавлено вечером 27.07.10

Уточнение. Из справки Maple: «Когда Digits<=evalhf(Digits), численное решение подсчитывается с двойной точностью (FPU числа). Задание Digits>evalhf(Digits) заставляет dsolve подсчитывать численное решение с использованием плавающей арифметике Maple вместо плавающей арифметики FPU».

 Профиль  
                  
 
 Re: Maple - численное решение диф. уравнений
Сообщение28.07.2010, 00:10 
Аватара пользователя


24/06/10
19
Спасибо... Digits очень кстати... а в данном примере я привел лишь пример с РК4... именно для сравнения резултатов я планирую применить методы Адамса, Гира и другие из стандартного пакета... Уже на основе сравнения результатов буду решать что делать с задачей далее...
Насчет же точности, то я раньше работал с самодельным классом на с++, но писать и отлаживать все методы, если они уже готовы, не вижу смысла... так что насчет шага и точности имею представление и вручную считал для очень мелкого разбиения(расчет длился порядком нескольких часов), однако в Maple не могу найти флаг который позволит считать с требуемым шагом...(решение становится неверным)...

 Профиль  
                  
 
 Re: Maple - численное решение диф. уравнений
Сообщение28.07.2010, 04:27 
Аватара пользователя


24/06/10
19
Тема закрыта, всем спасибо.. невнимательно прочитал справку из maple...
На всякий случай привожу решение проблемы и источник... Суть заключалась, как и предполагал, в неверно отстроенных для моего случая флагах... sln:=dsolve({ode,ics},type=numeric,method=rkf45,stepsize=1.10E-8,maxfun = 0);
вполне решило проблему... максимальное колличество точек, ограничение по шагу и прочие параметры можно узнать если внимательно прочитать раздел dsolve,Error_Control... остальные вопросы сразу же отпали...

 Профиль  
                  
 
 Re: Maple - численное решение диф. уравнений
Сообщение03.08.2010, 17:10 
Аватара пользователя


24/06/10
19
Однако по ходу возник еще один вопрос.
RK4:=dsolve({SYS, ICS}, type=numeric, method=rkf45, stepsize=1.10E-10, maxfun = 0, output=listprocedure):
RK8:=dsolve({SYS, ICS}, type=numeric, method=dverk78, stepsize=1.10E-10, maxfun = 0, output=listprocedure);
Почему-то методы РУнге 7-8 порядков не хотят работать с заданным шагом, хотя методы Гира, Розенброка и Адамса вполне нормально воспринимают такую запись... Остается лишь регуляция заданием погрешностей dsolve(dsys, numeric, output = listprocedure, method = dverk78, abserr = 1.*10^(-8), relerr = 1.*10^(-8))...
может я что-то упустил в описании методов(хотя англ читаю более или менее свободно мог что-нибудь случайно не заметить)... если производится автовыбор шага, то из каких соображений лучше выбирать абсолютную и относительные погрешности вычислений?

 Профиль  
                  
 
 Re: Maple - численное решение диф. уравнений
Сообщение03.08.2010, 18:29 


29/03/10
25
Днепр
CornPlane
электротехническая система уравнений???

 Профиль  
                  
 
 Re: Maple - численное решение диф. уравнений
Сообщение03.08.2010, 18:59 
Аватара пользователя


24/06/10
19
Нет, но по сути это здесь не имеет значения... Maple ругается даже если заставить его так элементарные дифуры...проблема в тонкостях работы с пакетом...

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group