06.05.2013, 13:28 | #1 (permalink) |
Member
Регистрация: 22.10.2012
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Pascal
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. |
06.05.2013, 13:28 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Когда то на форуме уже создавались подобные топики Pascal ABC Pascal Pascal Pascal Pascal ABC Pascal |
06.05.2013, 17:13 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да уж. Написали Вы, прямо скажем, нечто невразумительное. И откуда Вы такое взяли? Между прочим в Вашем выражении при х=1 внутренний логарифм равен нулю, а при x>1 он - положительная величина и, таким образом, результат его умножения на -0.5 отрицателен. И что же делать бедному компьютеру, если Вы пытаетесь заставить его считать логарифм от нулевой и отрицательной величины, что математика категорически запрещает? Да только и остается, что выдавать сообщения об ошибке.
Между тем, записать функцию - проще простого. По сути, как она написана, так и надо ее программировать, а не мудрить: f = Ln(Sqr(x)) + 1.0/(2*Exp(x)) Это один из вариантов, так сказать, "лобовой". Можно и иначе, например, так: f = 2.0*Ln(x) + Exp(-x)/2 ну и т.п. К сожалению, помочь с отладкой программы не возьмусь: у Вас там половинное деление, а я терпеть не могу этот метод, ибо считаю его устаревшим недоразумением. Извините. |
13.05.2013, 13:18 | #4 (permalink) |
Member
Регистрация: 22.10.2012
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо, сейчас попробую все исправить.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|