Помощь - Поиск - Пользователи - Календарь
Полная версия: Метод Ньютона
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Merhaba
Добрый Вечер!!! Помогите Пожалуйста устранить ошибку!

program MetodNuytona;
const eps = 1e-6;
var x,x0: real;
Function f(x: real): real;
begin
f:=ln(exp(ln(2)*x)-5)/ln(3)+ln(exp(ln(2)*x)-7)/ln(3)-1;
end;
Function f1(x: real): real;
begin
f1:=exp(ln(2)*x)*ln(2)/((exp(ln(2)*x)-5)*ln(3)+exp(ln(2)*x)*ln(2))/((exp(ln(2)*x)-5)*ln(3));
end;
Begin
writeln;
writeln('Решение нелинейного уравнения f(x)=0');
writeln;
write('x0 = ');
read(x0);
writeln;
x:=x0;
repeat
x:=x-f(x)/f1(x);
until abs(f(x)/f1(x))<eps;
writeln('Метод Ньютона**:');
writeln;
writeln('x=',x:8:5);
End.



Free Pascal почему-то работает только с x0=3 (исключительно с ним)..
Выражение:

log_3(2^x-5)+log_3(2^x-7)=1

Где может быть ошибка?
IUnknown
Цитата
Где может быть ошибка?
Наверное, в основах математики, запрещающих брать логарифм от отрицательного числа?

program MetodNuytona;
uses math;
const
eps = 1e-6;


function f(x: real): real;
begin
writeln('x = ', x:10:5,
'| 2^x - 5 = ', (power(2, x) - 5):10 :5,
'| 2^x - 7 = ', (power(2, x) - 7):10 :5);
f := logn(3, power(2, x) - 5) +
logn(3, power(2, x) - 7) - 1;
end;
function f1(x: real): real;
begin
f1 := ( power(2, x + 1) * (power(2, x) - 6) * ln(2) ) /
( (power(2, x) - 7) * (power(2, x) - 5) * ln(3) );
end;

var
x, x0 : real;
begin
writeln;
writeln('Решение нелинейного уравнения f(x)=0');
writeln;
write('x0 = '); readln(x0);
writeln;
x:=x0;
repeat
x:=x-f(x)/f1(x);
until abs(f(x)/f1(x))<eps;
writeln('Метод Ньютона**:');
writeln;
writeln('x=',x:8:5);
end.

, и
Решение нелинейного уравнения f(x)=0

x0 = 5

x = 5.00000| 2^x - 5 = 27.00000| 2^x - 7 = 25.00000
x = 1.83035| 2^x - 5 = -1.44377| 2^x - 7 = -3.44377
An unhandled exception occurred at $0040FD20 :
EInvalidOp : Invalid floating point operation

ни на какие мысли не наводит?
Merhaba
Цитата(IUnknown @ 13.12.2011 23:20) *

Наверное, в основах математики, запрещающих брать логарифм от отрицательного числа?

program MetodNuytona;
uses math;
const
eps = 1e-6;
function f(x: real): real;
begin
writeln('x = ', x:10:5,
'| 2^x - 5 = ', (power(2, x) - 5):10 :5,
'| 2^x - 7 = ', (power(2, x) - 7):10 :5);
f := logn(3, power(2, x) - 5) +
logn(3, power(2, x) - 7) - 1;
end;
function f1(x: real): real;
begin
f1 := ( power(2, x + 1) * (power(2, x) - 6) * ln(2) ) /
( (power(2, x) - 7) * (power(2, x) - 5) * ln(3) );
end;

var
x, x0 : real;
begin
writeln;
writeln('Решение нелинейного уравнения f(x)=0');
writeln;
write('x0 = '); readln(x0);
writeln;
x:=x0;
repeat
x:=x-f(x)/f1(x);
until abs(f(x)/f1(x))<eps;
writeln('Метод Ньютона**:');
writeln;
writeln('x=',x:8:5);
end.

, и
Решение нелинейного уравнения f(x)=0

x0 = 5

x = 5.00000| 2^x - 5 = 27.00000| 2^x - 7 = 25.00000
x = 1.83035| 2^x - 5 = -1.44377| 2^x - 7 = -3.44377
An unhandled exception occurred at $0040FD20 :
EInvalidOp : Invalid floating point operation

ни на какие мысли не наводит?


нужно взять подлогарифное выражение по модулю?
IUnknown
Нет, просто нельзя брать логарифмы от отрицательных чисел. Начальное приближение должно быть таким, чтобы при вычислении функции не надо было делать запрещенных вещей. От 2.8 до 3.4 программа прекрасно отрабатывает.
Merhaba
Цитата(IUnknown @ 14.12.2011 11:32) *

Нет, просто нельзя брать логарифмы от отрицательных чисел. Начальное приближение должно быть таким, чтобы при вычислении функции не надо было делать запрещенных вещей. От 2.8 до 3.4 программа прекрасно отрабатывает.

У меня почему-то компилятор работает только при x0=3.. при других значениях, он выдаёт exited with exitcode = 207
IUnknown
Значит, проверяй, правильно ли вычисляется производная в твоей программе. Похоже, что нет...
Merhaba
Цитата(IUnknown @ 14.12.2011 13:46) *

Значит, проверяй, правильно ли вычисляется производная в твоей программе. Похоже, что нет...

производную я на листочке считал.. а что тут неправильно, подскажите Пожалуйста smile.gif
IUnknown
Ну, и чему производная "на листочке" равна? Вот этому:
Нажмите для просмотра прикрепленного файла
?
TarasBer
Так это вроде то же самое, только к общему знакменателю приведено.
buy stromectol online no prescri
Buy Brand Valtrex
prednisone over the counter walg
Buy Cheap Viagra Online
hydroxychloroquine and azithromy
Viagra Naturale Femminile
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.