IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Метод Ньютона
Merhaba
сообщение 13.12.2011 20:56
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Мужской

Репутация: -  0  +


Добрый Вечер!!! Помогите Пожалуйста устранить ошибку!

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

Где может быть ошибка?

Сообщение отредактировано: Merhaba - 13.12.2011 21:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 13.12.2011 23:20
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


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

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 - 13.12.2011 23:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.06.2025 6:11
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"