IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на модуль
сообщение
Сообщение #1


Гость






Здравствуйте! У меня простенькая на первый взгляд задача, но... Слишком мутное условие :
Цитата
Нужно написать модуль, содержащий подпрограмму нахождения корня уравнения f(x)=0 на заданном отрезке [a, b] методом половинного деления, который заключается в следующем. Отрезок [a, b] делится пополам x=(a+b)/2, и определяется значение функции f(x) на концах отрезков [x, b] и [a, x]. Корень находится в той половине [a, b], на концах которой f(x) имеет разные знаки. Если f(a) и f(x) имеют разные знаки, то далее в качестве отрезка, содержащего корень, рассматриваем [a, x], иначе [x, b]. Новый отрезок делится пополам, и такой процесс продолжается до тех пор, пока отрезок не станет меньше заданной погрешности Эпсилон.

Использовать модуль для решения уравнения 5x-8Ln(x)=8 на интервале [4.1, 4.8] с точностью Эпсилон=10^-6

Мой код
Const e=1E-6;
Var a,b,x:Real;
Begin
a:=4.1;
b:=4.8;
Repeat
x:=(a+b)/2;
If ((a>0) AND (x<0)) Or ((a<0) AND (x>0)) Then b:=x Else a:=x;
Until ABS(Abs(a)-Abs(b))<e;
Writeln(x);
Readln
End.

Но я так понимаю, что модуль должен возвращать какое-то значение, как функция например? И как его использовать для решения уравнения? Помогите, пожалуйста.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 55
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


я долго пытался понять в чем проблема... построил график f(x)=5x-8Ln(x)-8, ... это меня несколько смутило, ведь ответ выходит где-т около 3.68824 , но потом дошло ... странно так но вы нигде не указываете функцию от которой считаете, пройдитесь пару раз по своему алгоритму и поймете что a у вас все время отдаляется от 0...

ошибка в этой строчке

Цитата
x:=(a+b)/2;


а нужно

Цитата
x:=(f(a)+f(b))/2;

{аналогично и с IF'ом}
If ((f(a)>0) AND (x<0)) Or ((f(a)<0) AND (x>0))

{f(a)- эт уравнение функции}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(zZz @ 23.05.2006 21:27)
ошибка в этой строчке

Цитата
x:=(a+b)/2;

а нужно

Цитата
x:=(f(a)+f(b))/2;

Да что ты? Х как раз считается правильно, это же деление ОТРЕЗКА пополам. А вот потом - надо действительно использовать F(...)

Короче, я понял, что поиск здесь никому на фиг не нужен dry.gif
FAQ: Численные методы решения уравнений -> Метод дихотомии
Есть же решение, но никого не интересует, изобретают велосипед заново...

Олег, зачем мы вообще FAQ составляем (или составляли? уже давно не обновляется)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 55
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


2volvo извиняюсь, за допущенную ошибку, просто голова как-то другим занята была, вот решил отвлечься... не получилось... надеюсь, меня простят... x действитеьно считается правильно...
тогда просто надо поменять строчку
Цитата
If ((f(a)>0) AND (f(x)<0)) Or ((f(a)<0) AND (f(x)>0))


насчет FAQ - порою бывает куда интереснее самому решить задачу

Сообщение отредактировано: zZz -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Долго инета не было.... Спасибо всем, разбираюсь.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 22.10.2017 13:23
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"