Показать сообщение отдельно
Старый 13.04.2014, 15:53   #8 (permalink)
Madara
Member
 
Регистрация: 29.11.2013
Сообщений: 50
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Может кому нибудь пригодится

Оказывается нужно было делать для 2 функций, с выводом количества интераций, с выводом функции от определённого аргумента, у меня F(0.83)...

Переписывал программу на паре в Делфи, не знаю правильно или нет, но препод принял, обозначив ошибку:
PHP код:
a:=0.8;
b:=1.5
"Эти переменные необходимо вводить вне процедуры"


PHP код:
type
TF1
=function(r:real):real;

Function 
F1(x:real):real;
begin
 F1
:=Sqr(Sin(x)+Cos(x))/Exp(Ln(33.5)*2/3)+Sqrt(3/7)-x;
end;
Function 
F2(x:real):real;
begin
 F2
:=Sqrt(ln(7.9)+(exp(-x))-((ln(x)*2)/11))-x;
end;

Procedure EQRoot(e:real; var R:Real; var Idx:integerf:TF1);
var
a,b,c:real;
begin
a
:=0.8;
b:=1.5;
idx:=0;
Repeat
c
:=(a+b)/2;
if 
F(a)*F(c)<0 then b:=c
else a:=cidx:=idx+1;
Until b-a<e;
R:=c;
end;

Var
idx1,idx2:integer;
Eps:Array[1..5of Real;
i:Integer;
Res:Real;
Begin
Eps
[1]:=0.1;
for 
i:=2 to 5 do Eps[i]:=Eps[i-1]/10;
for 
i:=1 to 5 do
begin
EQRoot
(Eps[i],Residx1,f1);
Writeln('tochnost =',eps[i]);
Writeln(' f1=',Res:0:i);
writeln('interacii 1 =',idx1);
EQRoot(Eps[i],Residx2,f2);
Writeln(' f2=',Res:0:i);
writeln('interacii 2 =',idx2);
Writeln;
end;

writeln(F1(0.83):0:4);
Readln;
End
Ещё раз большое спасибо!)
Madara вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070