2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Комбинированный метод Ньютона
Сообщение10.05.2010, 21:42 


24/12/09
21
Добрый вечер! Требуется решить трансцендентное уравнение f(x)=ln(x)-(x-1.9)^2 комбинированным методом Ньютона с среде Turbo Pascal, комбинируя метод ньютона и метод секущих

program al91l91_619;
const eps=0.0001; a=1; b=2;
type mass=array[0..19] of real;
var y,z:real; x:mass;
f:text;
k,i,q:integer;
function fi(x:real):real;
begin
fi:=x-(ln(x)-(x-1.9)*(x-1.9))/(1/x-(2*x-3.8));
end;
function fa(x:real):real;
begin
fa:=ln(x)-sqr(x-1.9);
end;
begin
assign(f,'oppp.txt');
rewrite(f);
x[0]:=a-fa(a)/(1/a-(2*a-3.8));
x[1]:=(a*fa(b)-b*fa(a))/(fa(b)-fa(a));
for i:=1 to 4 do begin
x[2*i]:=x[2*i-2]-(fa(x[2*i-2])/x[2*i-2]-fa(x[2*i-2])/(1/x[2*i-2]-(2*x[2*i-2]-3.8)));
x[2*i+1]:=(x[2*i-2]*fa(x[2*i-1])-x[2*i-1]*fa(x[2*i-2]))*(fa(x[2*i-1])-fa(x[2*i-2])); end;
k:=0;
q:=0;
while abs(x[k]-x[k+1])>eps do
begin{1}
x[k]:=x[k+1];
x[k+1]:=fi(x[k]); y:=fa(x[k]);
q:=q+1;
writeln(f,'koren raven:',x[k]:10:8, 'y=', y);
end{1};
writeln(f,'k=',k);
writeln(f,'eps=',eps:3:7);
close(f);
end.
я создаю вектор в котором хранятся начальные приближения, но затем затреваю на самом итерационном процессе. Помогите пожалуйста, заранее благодарен!

 Профиль  
                  
 
 Re: Комбинированный метод Ньютона
Сообщение11.05.2010, 06:43 
Заслуженный участник


26/07/09
1559
Алматы
Какое-то q:=q+1 я вижу, а как у вас в цикле while меняется значение k?

P.S.: Пишите покрасивше, пожалуйста. :) А то ничего не понятно...

 Профиль  
                  
 
 Re: Комбинированный метод Ньютона
Сообщение11.05.2010, 07:07 
Заслуженный участник


11/05/08
32166
Ну начнём с того, что оформлять надо так:

Код:
while abs(x[k]-x[k+1])>eps do
begin{1}
    x[k]:=x[k+1];
    x[k+1]:=fi(x[k]); y:=fa(x[k]);
    q:=q+1;
    writeln(f,'koren raven:',x[k]:10:8, 'y=', y);
end{1};

(окружить тегом "code" и понатыкать отступов, иначе невозможно читать). Далее: и где ж тут секущие? тут чистый Ньютон. Кроме того, совершенно нелепые обозначения: у Вас на протяжении всего цикла остаётся $k=0$, а $q$ и вовсе нигде не используется. Наконец: что значит "застреваю"?... -- хотя программа и выглядит нелепо, но в этом месте зацикливания произойти всё-таки не должно.

 Профиль  
                  
 
 Re: Комбинированный метод Ньютона
Сообщение11.05.2010, 12:47 


24/12/09
21
Код:
program al91l91_619;
uses crt;
const eps=0.000000000001; a=2; b=3;
type mass=array[0..19] of real;
var y,z:real; x:mass;
   f:text;
   k,i,q:integer;
             function F1(x:real):real;
             begin
             F1:=1/x-(2*x-3.8);
             end;
function fa(x:real):real;
       begin
       fa:=ln(x)-sqr(x-1.9);
end;
   begin
   assign(f,'oppp.txt');
   rewrite(f);
  x[0]:=b-fa(b)/(1/b-(2*b-3.8));
  x[1]:=(a*fa(b)-b*fa(a))/(fa(b)-fa(a));
  for i:=1 to 3 do begin
  x[2*i]:=x[2*i-2]-fa(x[2*i-2])/F1(x[2*i-2]);
  x[2*i+1]:=(x[2*i-2]*fa(x[2*i-1])-x[2*i-1]*fa(x[2*i-2]))/(fa(x[2*i-1])-fa(x[2*i-2])); end;
k:=0;
while abs(x[k]-x[k+1])>eps do
    begin{1}
y:=fa(x[k]); k:=k+1;
writeln(f,'koren raven:',x[k]:10:8, ' y=', y:4:12);
       end{1};
         writeln(f,'k=',k);
         close(f);
        end.

все уже работает, спасибо что откликнулись:)

 Профиль  
                  
 
 Re: Комбинированный метод Ньютона
Сообщение12.05.2010, 02:38 
Заслуженный участник


26/07/09
1559
Алматы

(Оффтоп)

2ewert
Цитата:
понатыкать отступов

Зря вы это сказали... :)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group