Здравствуйте, не могли бы помочь по такой темке? все что находил(включая этот форум) - только нахождение точки пересечеия с осью координат, а тут даны 2 функции, отрезок [a,b], и естественно эпсилон, к-е передаются в функцию, где находится абсциса пересечения. есть работающая процедура комбинированного метода(касательных и хорд) где с обоих сторон ищется точка, но как ни пытался - переделать под Ньютона не могу. в FAQ был, там с одной кривой и осью
вот небольшой контекст к программе:
type TFunc=function(x:real):real;
................
{процедура root}
................
Root(f1,f2,f1p,f2p,3.500,4.000,eps1,x1);
{f1,f2 - функции введенные в отдельной поцедуре вручную; f1p,f2p - первые производные, тоже в отдельной
процедуре вручную;a и b подбираются под примерное пересечение, eps1=0.0001, x - искомый корень}
procedure Root(f,g,f1,g1:TFunc;a,b,eps:real;var x:real);
{ funkciya IsT1 vozvrashaet TRUE, esli f'(x) i f''(x) odinakovogo znaka i FALSE v obratnom slu4ae}
function IsT1:boolean;
var x:real;
begin
x:=(a+b)/2;
IsT1:=(f1(x)-g1(x)>0) = (f((a+b)/2)-g((a+b)/2)<(f(a)-g(a)+f(b)-g(b))/2)
end;
var c:real;
Type1:boolean;
i:integer;
begin
Type1:=IsT1;
if (f(a)-g(a))*(f(b)-g(b))>0 then writeln('Neverno zadany a,b') else
begin
i:=0;
while (b-a)>eps do begin
c:=(a*(f(b)-g(b)) - b*(f(a)-g(a)))/(f(b)-g(b)-f(a)+g(a));
if Type1 then begin a:=c; c:=b end else begin b:=c;c:=a end;
c:=c-(f(С)-g(С))/(f1(С)-g1(С));
if Type1 then b:=c else a:=c;
i:=i+1;
end;
end;
x:=(a+b)/2;
end;
http://eco.sutd.ru/Study/Informat/Newton.html Поможет?
не, я там был уже.. это ж матрицы, а у меня даны две функции типа y=2^x-1, y=(1-x)/3, y=x^5. если и переделывать, то думаю то, что в FAQ - ближе к моему заданию..
я вроде бы и сам принцип метода понимаю, а реализовать че-то никак