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
4522
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, Супермодераторы



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

Сейчас этот форум просматривают: Bing [bot]


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

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