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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2010, 22:56   #1
serj-07
Пользователь
 
Аватар для serj-07
 
Регистрация: 07.03.2009
Сообщений: 68
По умолчанию

Всем здравствуйте!!!

Помогите разобраться пожалуйста.
Задача:
Разработать ПО для реализации метода простой итерации решения нелинейного уравнения
х+ln x = a;
ИСПОЛЬЗОВАТЬ программу для расчета корня уравнения.

Программа работать не хочет понимаю что нужно избавиться от логарифла, а как не пойму
Код:
function f(x,a:real):real;
  begin
     f:=x+ln(x)-a;
  end;

procedure TForm1.Button1Click(Sender: TObject);
  var a,x,xn,x0,e,step:real;

    begin
      try
       a:=StrToFloat(Edit1.text);
       e:=StrToFloat(Edit6.text);
         Except
         MessageDlg ('Íåâåðíûå äàííûå.', mtError, [mbOk],0);
         exit
      end;

       repeat
         xn:=x;
         x:=x-f(x,a);
        until
         abs(xn-x)>=e;
       Label7.Caption:= FloatToStrF((x),ffFixed,8,3);
         

       Label8.Caption:=Edit1.Text;
       Label12.Caption:= FloatToStrF((x),ffFixed,8,3);
       Label15.Caption:= FloatToStrF((x),ffFixed,8,3);
       Label17.Caption:=Edit2.Text;
       Label11.Visible:= True;
       Label13.Visible:= True;
       Label14.Visible:= True;
       Label16.Visible:= True;
       Label18.Visible:= True;
       Label10.Caption:=FloatToStrF ((f(x,a)),ffFixed,8,10);

      begin
       Chart1.SeriesList[0].Clear;

        try
          x0:=StrToFloat(Edit3.text);
          xn:=StrToFloat(Edit4.text);
         Except
         MessageDlg ('Íåâåðíûå äàííûå.', mtError, [mbOk],0);
         exit
      end;

       step := 0.001;
       x := x0;
         while x <= xn+1 do
           begin
             Chart1.SeriesList[0].AddXY(x, f(x,a));
             x := x + step;
          end;
      end;
   end;
end.
кто знает как найти Х (корень) другим способом но простой итерацией
Код:
	    
procedure TForm1.Button1Click(Sender: TObject);
  var a,x,xne:real;
 
    begin
     
       a:=StrToFloat(Edit1.text);
       e:=StrToFloat(Edit6.text); // точность 0,001
       x:=0;
       repeat
         xn:=x;
         x:=x-(x+ln(x)-a);
        until
         abs(xn-x)>=e;
     
  Label7.Caption:= FloatToStrF((x),ffFixed,8,3);      
   end,     
end.
Мы все учились понемногу
Чему-нибудь и как-нибудь!!!

Последний раз редактировалось Stilet; 24.06.2010 в 13:10.
serj-07 вне форума Ответить с цитированием
Старый 24.06.2010, 12:56   #2
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

у тебя по-моему неправильное представление от методе простой итерации. В этом методе всегда полагают x=f(x), и пляшут от этого уравнения, а не от f(x)=0.
И определенно в цикле выполняется что-то еще кроме
Код:
repeat
         xn:=x;
         x:=x-f(x,a);
        until
         abs(xn-x)>=e;
Как минимум поиск касательной.

Твой алгоритм не сходится, видимо - поэтому ничего и не работает
Snejnaya вне форума Ответить с цитированием
Старый 26.06.2010, 19:46   #3
serj-07
Пользователь
 
Аватар для serj-07
 
Регистрация: 07.03.2009
Сообщений: 68
По умолчанию

Спасибо я уже понял что не то делаю.
кто может помочь тождественно преобразовать чтобы получить сходящийся итерационный процесс: x+ln(x)-a=0.
у меня получилось x= e^(a-x) но это не подходит.
Мы все учились понемногу
Чему-нибудь и как-нибудь!!!
serj-07 вне форума Ответить с цитированием
Старый 27.06.2010, 19:34   #4
serj-07
Пользователь
 
Аватар для serj-07
 
Регистрация: 07.03.2009
Сообщений: 68
По умолчанию

Я понимаю, что не по профилю вопрос.
Помогите кто может с математикой у меня с ней не очень
x+ln(x)-a=0
это уравнение путем тождественных преобразований преобразовать к эквивалентному виду x=φ(x):
у меня ума хватило только но это не подходит
x=a-ln(x);
x=e^a-x.
программа не сходиться. Помогите преобразовать еще.
Спасибо заранее.
Мы все учились понемногу
Чему-нибудь и как-нибудь!!!
serj-07 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение СЛАУ. Метод простой итерации Alexander886 Помощь студентам 5 24.03.2010 18:43
Решение СЛАУ методом простой итерации (Delphi) giga_person Помощь студентам 8 06.03.2010 21:11
Метод простой итерации Nikolai17 Помощь студентам 4 17.11.2009 09:39
Метод простой итерации. (ЧМ) Rise Помощь студентам 2 05.11.2009 18:00
Метод простой итерации Artemm Общие вопросы C/C++ 17 31.05.2009 14:06