Какой используется Паскаль в сценариях?

Обсуждение программы Айрен и общих вопросов тестирования
Ответить
Евгений Чуев

Какой используется Паскаль в сценариях?

Сообщение Евгений Чуев »

Добрый день. Много лет работаю с вашей программой. Преподаю в школе физику. Пишу простые сценарии. Не могу найти угол в градусах (радианах) по синусу угла? Функция arcsin(x) выдает ошибку? Помогите разобраться.
sergey_o
Администратор
Сообщения: 728
Зарегистрирован: 21 дек 2008, 20:06
Контактная информация:

Re: Какой используется Паскаль в сценариях?

Сообщение sergey_o »

Вычисление арксинуса, увы, сейчас не реализовано:
sergey_o: 12 янв 2021, 15:39 Встроенных обратных тригонометрических функций сейчас нет, к сожалению. Написать собственную реализацию прямо в сценарии, конечно, можно, но надо иметь в виду, что у "простых" решений, вероятно, будут проблемы с точностью и/или производительностью.
Гость

Re: Какой используется Паскаль в сценариях?

Сообщение Гость »

Физика. Определить угол преломления y в среде с показателем n=2, если угол падения х= 50 градусов.
Решение. Формула n= sinx/siny. Следовательно siny=sinx/n. Синус х без проблем, а как вернуть значение угла по sin Y? Ответ до целых.
Как выкрутится? по ссылке я что-то не нашел решения?
sergey_o
Администратор
Сообщения: 728
Зарегистрирован: 21 дек 2008, 20:06
Контактная информация:

Re: Какой используется Паскаль в сценариях?

Сообщение sergey_o »

Если требуются только значения углов, округленные до целых градусов, то в сценарии можно воспользоваться поиском по таблице Брадиса :) значений синуса с шагом в один градус. Если применяются обычные правила округления, то таблица будет иметь такой вид:

Код: Выделить всё

 x,°          sin x
---------------------------
 0.5   0.008726535498373935
 1.5   0.02617694830787315
 2.5   0.043619387365336
...
88.5   0.9996573249755573
89.5   0.9999619230641713
Пусть нужно найти угол, синус которого равен 0.03. Ищем во втором столбце таблицы интервал, в который попадает это значение, - это интервал от 0.02617694830787315 до 0.043619387365336, соответствующий углам от 1.5° до 2.5° (насчет граничных значений см. ниже). Такие углы при округлении до целых градусов дадут - это и есть результат для данного значения синуса.

Таблицу можно построить как буквально (записав ее в массив), так и "виртуально", вычисляя значения по мере необходимости.

Важно иметь в виду, что если при вычислении правильного ответа в сценарии появится значение, очень близкое к "порогу" округления (в случае, когда тестируемый должен ввести округленный ответ), то из-за погрешностей вычислений результат округления может оказаться не таким, как ожидалось. Так, при использовании "настоящего" арксинуса имеем (пример на Python):

Код: Выделить всё

>>> degrees(asin(sin(radians(31.5))))
31.499999999999993
После округления до целого получится уже не 32, а 31. (На самом деле такое может произойти даже при простом переводе градусов в радианы и обратно.) Поэтому следует либо писать сценарий так, чтобы в нем гарантированно не появлялись подобные значения, либо предусматривать корректную обработку таких ситуаций (например, с помощью поля Допустимая погрешность в эталоне ответа).
Гость

Re: Какой используется Паскаль в сценариях?

Сообщение Гость »

Как это реализовать на практике. Я с таблицами не работал. Меня устроить точность до 2 градусов, дадим в допуске.
Если можно напишите образец.
sergey_o
Администратор
Сообщения: 728
Зарегистрирован: 21 дек 2008, 20:06
Контактная информация:

Re: Какой используется Паскаль в сценариях?

Сообщение sergey_o »

Можете предложить такое задание кому-нибудь из учеников или искусственному интеллекту :)
Ответить