2014 dxdy logo

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

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




 
 Комбинированный метод Ньютона
Сообщение10.05.2010, 21:42 
Добрый вечер! Требуется решить трансцендентное уравнение 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 
Какое-то q:=q+1 я вижу, а как у вас в цикле while меняется значение k?

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

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

Код:
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 
Код:
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 

(Оффтоп)

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

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

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group