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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2009, 22:35   #1
Nikolai17
Пользователь
 
Регистрация: 17.10.2009
Сообщений: 20
Вопрос Метод простой итерации

Решение нелинейных и трансцендентных уравнений
Для заданного уравнения f(x)=0 вычислить интервал изоляции одного из корней.
Составить программу вычисления корня с погрешностью ε=0,0001 в соответствии с указанным методом.

функция 2ln(x)-1/x=0

Моя наработочка.......

Код:
program r;
uses crt;
var x,y,e,x0:real;
begin 
  e:=0.0001;
  writeln('Enter x ' );
  readln(x);
  repeat
  x0:=x;
  x:=1/(2*ln(x0));
  until abs(x0-x)<e;
  writeln(x);
  readkey;
 end.
Изменил поставил ввод x програ вылетает на 3 повторенийй


Прога вылетает с ошибкой

Последний раз редактировалось Nikolai17; 16.11.2009 в 10:01. Причина: sоrry
Nikolai17 вне форума Ответить с цитированием
Старый 16.11.2009, 00:13   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Не инициализирована переменная x, соответственно в строке
Код:
x0:=x;
в x0 записывается неизвестно что, после чего Вы пытаетесь взять логарифм от этого неизвестно чего, вот и вылетает ошибка
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 16.11.2009, 13:24   #3
Orakul89
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

Код:
var x,e,x0:real;
begin
  e:=0.0001;
  writeln('Enter x ' );
  readln(x);
  repeat
  x0:=x;
  x:=2*ln(x0)-1/x0+x0;
  until abs((x0-x)/x0)<e;
  writeln(x);
  readkey;
 end.
попробуй этот код...
Твой не работает потому, что: при переходе на 4 итерацию х отрицательный, потому и вылетает.
Orakul89 вне форума Ответить с цитированием
Старый 16.11.2009, 20:56   #4
Nikolai17
Пользователь
 
Регистрация: 17.10.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Orakul89 Посмотреть сообщение
Код:
var x,e,x0:real;
begin
  e:=0.0001;
  writeln('Enter x ' );
  readln(x);
  repeat
  x0:=x;
  x:=2*ln(x0)-1/x0+x0;
  until abs((x0-x)/x0)<e;
  writeln(x);
  readkey;
 end.
попробуй этот код...
Твой не работает потому, что: при переходе на 4 итерацию х отрицательный, потому и вылетает.
x:=2*ln(x0)-1/x0+x0; зачем тут x0 ? это ведь изменение формулы
until abs((x0-x)/x0)<e; а это как понять ? деление на x0?
Nikolai17 вне форума Ответить с цитированием
Старый 17.11.2009, 09:39   #5
Orakul89
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

x:=2*ln(x)-1/x+x - это твоя же формула 2*ln(x)-1/x=0, только и разницы, что добавлены х с левой и правой части уравнения.
abs((x-x0)/x0)<eps - это понимать как точность изменения x
Orakul89 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод простой итерации. (ЧМ) Rise Помощь студентам 2 05.11.2009 18:00
Метод простых итерации для нелинейных уравнений. Подскажите где ошибка DuHbka Помощь студентам 15 31.05.2009 22:46
Метод простой итерации Artemm Общие вопросы C/C++ 17 31.05.2009 14:06
Метод итерации для уравнений Hellgrom Паскаль, Turbo Pascal, PascalABC.NET 0 10.05.2009 18:38