Задание: Cоставить программу для вычисления значения функции при заданных значениях аргумента. Ввод аргументов осуществить через Const.
y=ln(pi*x^2)/ln3+arccos(7*x)^(1/8) при x=10,05
Вот, что я сделал:
Program Task3;
Const
x=10.05;
Var
y: Real;
Begin
y:=Ln(pi*Sqr(x))/Ln(3)+pi/2-Arctan(Sqrt(Sqrt(Sqrt(7*x)))/Sqrt(1-Sqrt(Sqrt(7*x))));
Writeln(y)
End.
Неработет. Программа нормально работает, только если удалить "1-". Что делать?
1. (7*10.05)^(1/8) == 1.7. К слову, данная точка не входит в область определения арккосинуса, а поэтому в формуле для арктангенса получаем корень квадратный из отрицательного числа. В этом и ошибка.
Кстати arccos можно считать через arctg и без pi/2: arccos(x)=arctg((1-x^2)^(1/2)/x).
Вместо pi/2-Arctan(Sqrt(Sqrt(Sqrt(7*x)))/Sqrt(1-Sqrt(Sqrt(7*x)))) поставил Arctan(Sqrt(1-Sqrt(Sqrt(7*x)))/Sqrt(Sqrt(Sqrt(7*x)))). И всё равно ничего не получается. И опять если убрать "1-", то получается!
Не будет у Вас работать программа, потому что значние данной функции (которую Вы программируете) при х=10.05 будет выражаться комплексным числом, а Paskal комплексные числа по-моему не понимает.
И что мне так и написать в контрольной?
От нас Вы что хотите?
Спросите у препода, нет ли ошибки в задании?
Если нет, то добейтесь, чтобы программа выдавала результат в комплексных числах. Для этого нужно открывать справочник по математике и искать соответствующие формулы.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)