2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Неявный метод Рунге Кутта для решения жесткой системы ДУ
Сообщение10.08.2020, 15:24 
Заслуженный участник
Аватара пользователя


23/07/05
17977
Москва

(Snegovik)

Snegovik в сообщении #1478220 писал(а):
Почему то отступы в коде удваиваются, становятся шире чем в среде разработки.
Они не удваиваются, по прежнему одинарные. Просто шрифты другие, с более широкими пробелами.

 Профиль  
                  
 
 Re: Неявный метод Рунге Кутта для решения жесткой системы ДУ
Сообщение10.08.2020, 16:43 
Заслуженный участник


09/05/12
25179

(Оффтоп)

Snegovik в сообщении #1478220 писал(а):
ps Почему то отступы в коде удваиваются, становятся шире чем в среде разработки.
Разные настройки показа табуляции. в среде - 4 пробела, тут - стандартные 8.

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

 Профиль  
                  
 
 Re: Неявный метод Рунге Кутта для решения жесткой системы ДУ
Сообщение17.11.2020, 15:07 
Аватара пользователя


30/04/19
235
В коде ошибка, столкнулся в вопросом решения уравнения с одного из форумов:

$\dfrac{dy}{dx} = -1000\cdot y^2$

при $y(0)=10\quad$ на промежутке $x=\left\lbrace0\dots 1\right\rbrace$


Программа отказалась его решать с небольшим числом шагов. Анализ кода выявил ошибку (странно, что ранее программа вообще решала, правда менее жесткие уравнения, при этом с небольим числом шагов).

Вот этот блок кода

код: [ скачать ] [ спрятать ]
Используется синтаксис Fortran
  error = 0
  ytemp1 = y0
  i=0
       
    do while (abs(g(y, h, x, ytemp2)) > eps)
           dg = (g(y, h, x, ytemp1+dy) - g(y, h, x, ytemp1-dy)) / (dy+dy)
           ytemp2 = y - g(y, h, x, ytemp1) / dg
           ytemp1 = ytemp2
           i = i + 1
              if (i > 10000) then
                 error = 1
                 exit
              end if
    end do

  y2 = ytemp2
 


Нужно заменить вот этим блоком кода

код: [ скачать ] [ спрятать ]
Используется синтаксис Fortran
  error = 0
  ytemp1 = y    !Начальное приближение на основе найденного на предыдущем шаге
  !ytemp1 = y0  !При другом начальном приближении
  ytemp2 = 7.33 !Любое значение, далее оно будет определено
  i=0
       
    do while (abs(g(y, h, x, ytemp2)) > eps)
               
      dg = (g(y, h, x, ytemp1+dy) - g(y, h, x, ytemp1-dy)) / (dy+dy)
      ytemp2 = ytemp1 - g(y, h, x, ytemp1) / dg
      ytemp1 = ytemp2
      i = i + 1
                       
        if (i > 500) then
           error = 1
           exit
        end if
                                                               
    end do
       
  y2 = ytemp2  
 


В коде самой строчки метода вместо $y$ должно было быть $ytemp_1$, как сразу это проглядел непонятно. Плюсом перед циклом сделаны небольшие изменения, назначение ошибки при $500$ итерациях достаточно вместо $10000$. Дополнительно введено определение максимального числа итераций метода Ньютона по любому из обращений к модулю, но это здесь не показано.

ps Теперь вышеприведенное уравнение решается даже с количеством шагов $n=1$ ! правда точность при $n=1$ не достаточно высокая, нужно больше шагов, но не для устойчивости, а для точности.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

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