Pascal
Вложений: 1
Помогите пожалуйста:tehnari_ru_837:, выдает ошибку, что на 0 делить нельзя, возможно я не правильно записал формулу, проверьте если не сложно...
program lab2; var x,g,h,x1,x2,f1,f2:real; begin g:=0.0001; h:=0.2; begin writeln('Исходная функция'); writeln('f=sqrt(ln(-1/2*ln(x))'); end; x1:=0.4; x2:=1.4; writeln('x f'); repeat x1:=(x1+x2)/2; f1:=sqrt(ln(-1/2*ln(x))); f2:=sqrt(ln(-1/2*ln(x))); if((f1*f2)>0) then x1:=x else x2:=x; if (f1<=g) then writeln(x:9:4,f1:9:4); until abs(f1)<g; end. |
f1:=sqrt(ln(-1/2*ln(x)));
f2:=sqrt(ln(-1/2*ln(x))); изначально x=0, комп не может просчитать ln(0) |
Цитата:
Между тем, записать функцию - проще простого. По сути, как она написана, так и надо ее программировать, а не мудрить: f = Ln(Sqr(x)) + 1.0/(2*Exp(x)) Это один из вариантов, так сказать, "лобовой". Можно и иначе, например, так: f = 2.0*Ln(x) + Exp(-x)/2 ну и т.п. К сожалению, помочь с отладкой программы не возьмусь: у Вас там половинное деление, а я терпеть не могу этот метод, ибо считаю его устаревшим недоразумением. Извините. |
Спасибо, сейчас попробую все исправить.
|
Часовой пояс GMT +4, время: 02:08. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.