![]() |
|
|
![]()
|
|
| FFFU |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 23.10.2010 Репутация: нет Всего: нет |
Здравствуйте!
Нам в институте дали задание написать программу для нахождения корней функции методом деления пополам.
надо найти точку пересечения функции u(i) с осью абсцисс, то есть ноль функции. Я почитал в википедии в чем суть этого метода и как его нужно примерно делать. Но я не понимаю, как это сделать с функцией u(i). По-моему, она как бы зависит он счетчика i. И как тогда задать начало и конец? u(1) и u(101)? Но ведь это всего два числа, как задать, что это именно отрезок? Как разделить его пополам? Я бы мог понять, если бы нужно было сделать один большой массив и найти в нем число, в котором функция ближе всего к нулю, но тут требуется вроде как что-то другое, а что я понять не могу. Помогите, пожалуйста. |
|||
|
||||
| FCM |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
Функцию надо вынести в отдельную фортран-функцию.
Упрощенно будет выглядеть примерно так.
PS/ Метод решения также можно вынести в отдельную фортран-функцию |
|||
|
||||
| FFFU |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 23.10.2010 Репутация: нет Всего: нет |
Простите, что не отвечал так долго, готовился к контрольной по химии.
Вот алгоритм, который я честно взял из википедии Пока без условия про крайние точки.
В программе, которая была в первом сообщении было видно, что 0 находится где-то между 0.62 и 0.63 икса. А нынешняя выдает
Первое число слишком маленькое, а второе это максимум функции на отрезке [0;1]. Подскажите, пожалуйста, где я ошибся. |
||||
|
|||||
| FCM |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
Приведу свой вариант
Результат на отрезке [0,1] x = 0.62384319 ; f(x) = -9.77516174E-06 |
|||
|
||||
| FFFU |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 23.10.2010 Репутация: нет Всего: нет |
Большое спасибо за помощь!
Все заработало. Ошибка оказалась в строке write(*,*) 'x= ',x, 'f(x)= ', f(x) у меня была переменная r, а я ее забыл подставить |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Fortran | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |