Показать сообщение отдельно
Старый 07.10.2012, 22:11   #1 (permalink)
ayPinki
Member
 
Регистрация: 27.11.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Половинное деление, метод ньютона, Pascal

Исправьте ошибки пожалуйста, сами формулы записаны правильно. точность e=0.00001

Половинное деление...
Код:
program mdp;
function f(x: real): real;
begin
f:=exp(ln(0.5)*x)+1-exp(ln(x-2)*2);
end;
var  a, b, e, c, x: real;
begin
a:=-7;
b:=-5;
write ('e=');
read(e);
c:=(a+b)/2;
while abs(b-a)>e do
begin
if f(a)*f(c)<0 then
b:=c
else
a:=c;
c:=(a+b)/2;
end;
x:=(a+b)/2;
writeln ('x=',x:3:3,' f(x)=',f(x):4:4);
end.
Метод Ньютона
Код:
uses Crt;
var  x,a,b,e,x_old: real;
function f1(z: real): real; {Основная функция}
begin
f1:= x*x*x + x*x*2 + 2;
end;
function f2(z:real): real; {Производная от основной функции}
begin
f2:=3*x*x+4*x ;
end;
begin
Clrscr;
a:=-3;b:=1;
write('e=');readln(e);
clrscr;
if f1(a)*f2(a)>0 then x:=a
else x:=b;
while abs(f1(x))>e do //некорректно здесь, мне подсказывают...
   begin
     x:=x-f1(x)/f2(x);
   end;
Writeln (' В интервале от ',a:0:0,' до ',b:0:0,' с погрешностью ',e:0:5);
Writeln ('x=',x:0:5,' f(x)=',f1(x):0:5);
Readln
end.
ayPinki вне форума   Ответить с цитированием
Ads

Яндекс

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