Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 22:52   #11
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Ну да.. Но все же тут же еще и производную нужно считать.
Это да, я просто говорю, в целом =)
а производную.. она легко же там считается..
Uguu~

Последний раз редактировалось __STDC__; 03.06.2009 в 22:56.
__STDC__ вне форума Ответить с цитированием
Старый 03.06.2009, 22:56   #12
NoHeart
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 52
По умолчанию

Ошибка изменилась, теперь вместо "Ошибка: неверная вещественная операция" пишет "Ошибка: вещественное переполнение " =)
Зря математику в школе не учил=((
NoHeart вне форума Ответить с цитированием
Старый 03.06.2009, 22:58   #13
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от NoHeart Посмотреть сообщение
Ошибка изменилась, теперь вместо "Ошибка: неверная вещественная операция" пишет "Ошибка: вещественное переполнение " =)
Зря математику в школе не учил=((
может вы e возводите в большую степень?

Sazary, что-то я не помню метод до конца, зачем там x так выражать?
Нам же достаточно знать производную от функции (2/x-1/2) и две точки разгонных..
в качестве точек можем взять границу отрезка например и какую-нибудь к ней близкую..
Uguu~

Последний раз редактировалось __STDC__; 03.06.2009 в 23:03.
__STDC__ вне форума Ответить с цитированием
Старый 03.06.2009, 23:03   #14
NoHeart
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 52
По умолчанию

funct := exp(0.5*x-1)/2; неправильный вариант Funct:=2*Ln(x)-0.5*x+1;, на второй итерации уже вылетает...
NoHeart вне форума Ответить с цитированием
Старый 03.06.2009, 23:04   #15
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от NoHeart Посмотреть сообщение
funct := exp(0.5*x-1)/2; неправильный вариант Funct:=2*Ln(x)-0.5*x+1;, на второй итерации уже вылетает...
а x у вас как меняется?
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 03.06.2009, 23:05   #16
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от __STDC__
что-то я не помню метод до конца, зачем там x так выражать?
Там что-то со сходимостью.. Функция должна быть сжимающей..

Еще начальное приближение нужно выбрать. NoHeart какое вы берете?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.06.2009, 23:08   #17
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Там что-то со сходимостью.. Функция должна быть сжимающей..
ну это понятно... но там насколько я помню... как выше уже писал:
1. Производная ф-ции.
2. Две разгонных точки. //Одна в смысле, туплю опять =) Две это уже метод секущих
И все... а дальше просто реализуется проверка... там три условия окончания итераций:
- максимальное число итераций
- разность между найденными точками меньше погрешности
- значение функции в очередной точке меньше погрешности
(по абсолютной величине все)

Как раз начальным приближением может определяться сходимость метода.. если оно будет неверным, тогда вот возможны всякие ошибки.. переполнения типа, etc.
Uguu~

Последний раз редактировалось __STDC__; 03.06.2009 в 23:14.
__STDC__ вне форума Ответить с цитированием
Старый 03.06.2009, 23:10   #18
NoHeart
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 52
По умолчанию

Начальное приближение, это в смысле значения откуда докуда искать? Тогда от 10 до 15 (а,b) соответственно.
NoHeart вне форума Ответить с цитированием
Старый 03.06.2009, 23:25   #19
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Что-то такое:

Код:
uses crt;
var
a,b : real;
x,x1 : real;
eps : real;
cnt : integer;

function fun(x : real) : real;
begin
fun := (2*ln(x)-0.5*x+1)/(2/x - 0.5);
end;

begin
clrscr;
eps := 0.0001;
a := 10;
b := 15;
cnt :=0;

x1 := (a+b)/2;

repeat
x := x1;
x1 := x - fun(x);
inc(cnt);
until (abs(x)<eps) or (abs(x-x1)<eps) or (cnt>1000);

writeln(x1:10:7);

readln;
end.
Результат:
Код:
11.9092675
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.06.2009, 00:06   #20
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Ну для вашей функции
2*Ln(x)-0.5*x+1=0
как-то так, если не ошибся.
x = exp(0.5*x-1)/2

Ну да.. Но все же тут же еще и производную нужно считать.
У меня после упрощений получилось

x := 2 * x * (1 - 2 * ln(x)) / (4 - x);
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal, метод Ньютона, вычисление корня ф-ии. Qousio Помощь студентам 2 02.05.2009 19:47
Метод Ньютона Durak Помощь студентам 1 30.04.2008 21:55
Метод Ньютона Cubar Помощь студентам 12 09.02.2008 21:28