Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2010, 16:20   #1
MaxMad
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 10
Восклицание Ошибка в программе вычисляющей корни уравнения Методом Ньютона

Пишу лабораторную по решение нелинейных уравнений, по методу ньютона. При запуске и введении переменных прога вылетает, где может быть ошибка?
Пишу в консольке Делфи так как старушка которая у нас ведет этот предмет не любит делфи.

program Lab2;
{$APPTYPE CONSOLE}
uses
SysUtils,Math;
var
X,A,B,E,F,F1,F2,H:Extended;
SW:int64;
function FX(X:Extended):Extended;
begin
Result:=ARCCOS(X)-SQRT(1-(0.3*Power(X,3)));
end;
function FiX(X:Extended):Extended;
begin
Result:=-1/SQRT(1-SQR(X)) + 0.45*SQR(X)/SQRT(1-0.3*Power(X,3));
end;
function FiiX(X:Extended):Extended;
begin
Result:=-X/Power((1-SQR(X)),1.5)+0.2025*Power(X,4)/Power((1-0.3*Power(X,3)),1.5)+0.9*X/SQRT(1-0.3*Power(X,3));
end;
begin
SW:=0;
writeln('Enter A:');
Readln(A);
writeln('Enter B:');
Readln(B);
writeln('Enter E:');
Readln(E);
F:=FX(B);
F2:=FiiX(B);
If F*F2>0 then X:=B else X:=A;
repeat
F:=FX(X);
F1:=FiX(X);
H:=F/F1;
X:=X-H;
Inc(SW);
until ABS(H)<=E;
Writeln('X = ',floattostr(X),' F = ',floattostr(FX(x)),' Operatoins: ',inttostr(SW));
readln;
end.

Заранее благодарен.

Вот блок схема по которой строилась программа.

MaxMad вне форума Ответить с цитированием
Старый 25.09.2010, 18:12   #2
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию

вот работающая версия. только функции замени
Код:
var b,x1,x2,e:real;

function f(x0:real):real;
Var g:real;
begin g:=x0*x0*x0+3*x0*x0-3;
      F:=g
end;
function f1(x0:real):real;
var  g1:real;
begin g1:=3*x0*x0*+6*x0;
      f1:=g1;
end;

function f11(x0:real):real;
var  g11:real;
begin g11:=3*x0*x0*+6*x0;
      f11:=g11;
end;
begin Write('Введите первое приближение '); read(x1);
      write('Введите неподвижную точку '); read(b);
      write('введите точность '); read (e);
      if F(x1)*F11(X1)>0 then begin
      repeat
            x2:=x1;
            X1:=x1-F(x1)/F1(x1);
            writeln (x1);
      until abs(x1-x2)<e;
      writeln (X1);end
end.
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.

Последний раз редактировалось Cannibal; 25.09.2010 в 18:17.
Cannibal вне форума Ответить с цитированием
Старый 25.09.2010, 19:57   #3
MaxMad
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 10
По умолчанию

Спасибо огромное
MaxMad вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решение уравнения методом хорд и методом Ньютона Маргоша)) Общие вопросы Delphi 1 21.04.2010 20:40
Решение уравнения F(x)=0 методом Ньютона BGR71 Помощь студентам 2 13.04.2010 15:26
Найти корни заданного уравнения методом Золотого сечения, Фибоначи и деления отрезка пополам. Сравнить эф Nik0919 Помощь студентам 2 16.02.2010 19:14
Определить корень уравнения методом Ньютона VNS Помощь студентам 0 02.12.2009 14:35
Решение нелинейного уравнения методом Ньютона Tina Общие вопросы C/C++ 2 04.06.2008 21:48