Делимся опытом Наступив на грабли - сообщи другим! Обмен опытом разработки и ремонта электронных устройств. |
02.08.2013, 09:09
|
|
Вид на жительство
Регистрация: 15.07.2007
Адрес: Одесса
Сообщений: 434
Сказал спасибо: 71
Сказали Спасибо 125 раз(а) в 78 сообщении(ях)
|
Новый метод расчёта arccos, cos, sin
Решил запостить эту тему здесь, т.к. соответствующего раздела нет (или не нашёл), и думаю, что она больше подходит, всё же для программных расчётов.
Дело в том, что два года назад 17 апреля 2011, я вывел новую формулу. Она позволяет довольно сносно рассчитать угол прямоугольного треугольника, без таблиц Брадиса, формул Тейлора, и т.п..
Я опубликовал фотку на форуме nkj.ru в разделе "Полигон". Отзывы от математиков, были: трое были "за" - только просил один увеличить точность до 8-й степени, один сначала против, потом воздержался ![Улыбка](images/smilies/icon_smile.gif) .
Сегодня хотел дать ссылку, на эту тему, но оказалось, что старого форума нет, а новом форуме нет старого.
осталось только это:
http://www.nkj.ru/search/?q=%ED%EE%E...0&where=&how=r
И больше ничего. Привожу оставшийся текст на всякий случай.
Цитата:
|
Новый метод нахождения острого угла прямоугольного треугольника.
Автор: Валентин Конон. Здравствуйте. Может метод и не новый, но я его разработал вчера. Хочу сказать, что в нескольких ... ... из-за одного задания и обстоятельств, вычислить угол Альфа любого прямоугольного треугольника, имея только катет и гипотенузу, без таблиц Брадиса,... ... формулу. Т.к. не смог её доказать, то привожу весь ход моего расчёта на прилагаемой фотографии. Формула достаточно проста, и ... ... гипотенуза. точность в радиан: самая грубая +\- 0,0048 точность угла: самая грубая +\- 0,2628 градуса. (это когда подкоренное ...
Изменен: 20.04.2011
Путь: НАУКА И ЖИЗНЬ / Форум журнала «НАУКА И ЖИЗНЬ»
|
Могу добавить, что "самая высокая точность" e-5. (такую точность можно оставить на всех углах от 0 до 90, если подобрать - exel это очень просто - третье слагаемое для каждых 10, например градусов и менять их по условию).
Собственно, фотка, которую сделал только что ещё раз, и выкладываю чуть ниже.
По сути - это alpha=arccos(x);
Если решить квадратное уравнение, то один из корней - это будет cos(alpha)=x. (возведёте обе части в квадрат и решите).
Думаю, что формула позволит выполнять вычисления углов, даже на pic16f84 и им подобных.
(формулу гонял в exel - вроде всё неплохо). Также она хороша тем, что позволяет непосредственно считать в абсолютных величинах, и применять на практике с достаточной точностью).
(Для египтологов скажу, что эта формула даже показывает, что египтяне могли и не знать числа pi - оно, как видите, сокращается до удобоваримого варианта формулы).
Ссылка на тот адрес на nkj.ru была также дана на форуме hatcha (по ассемблеру), в ответе на вопрос (кого-то) - Знает ли кто-то формулу полегче (побыстрее) из-за слабого микроконтроллера в проекте для заказчика.
Думаю, что они уже пользуются во всю, хотя бы в игрушках на микроконтроллерах, или роботах. (скорость обработки и соответственно реагирования, повышается на несколько порядков).
Хотя формула позволяет себя реализовать даже на аналоговых элементах.
Вообщем, вот фотка вывода формулы. Заметки, к сожалению, я писал на английском, но ведь математика и так понятна, я думаю. (Если кому-то пригодится - буду рад).
__________________
И если б не было Одессы, шоб я делал?!
|
|
|
|
02.08.2013, 09:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Новый метод расчёта arccos, cos, sin.
Так у вас там просто первые 2-3 члена разложения в ряд Тейлора используются что ли?
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
02.08.2013, 09:21
|
|
Вид на жительство
Регистрация: 15.07.2007
Адрес: Одесса
Сообщений: 434
Сказал спасибо: 71
Сказали Спасибо 125 раз(а) в 78 сообщении(ях)
|
Re: Новый метод расчёта arccos, cos, sin.
там нет "тейлора" вообще.
Там корень. И начало вывода из геометрии.
ps: один из математиков (на "науке и жизнь") тоже так сначала сказал, но потом "всмотрелся по внимательнее".
__________________
И если б не было Одессы, шоб я делал?!
Последний раз редактировалось val_ka; 02.08.2013 в 09:24.
Причина: ps:
|
|
|
|
02.08.2013, 09:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Новый метод расчёта arccos, cos, sin.
val_ka, батенька, точность у вас жутчайшая. Для проверки накатал быстренько в octave:
arc.m:
Код:
|
function d = arc(k, h)
Cos = k./h;
d = 120.*sqrt((0.559-0.111.*Cos).*(1-Cos));
endfunction |
проверяем:
Код:
|
H=1; % гипотенуза
K=[0:0.01:1]; % набор катетов
App=arc(K,H); % примерный арккосинус
Rea=acos(K)*180/pi; % настоящий арккосинус
D = Rea-App; % разность
plot(D); % график, если надо - выложу, но вы и сами повторить в силах
std(D) % среднеквадратичное отклонение
ans = 0.15108
max(abs(D)) % предельное абсолютное отклонение
ans = 0.28044 |
Т.е. предельная ошибка составляет почти 17'!!!
Такое грубое приближение годится лишь для указания угла наклона дороги на знаках!
// в общем, вы бы сначала точно все проверили, чтобы очередным Петриком не прослыть.
__________________
Союз Советских Социалистических Округов Северной Америки
Последний раз редактировалось eddy; 02.08.2013 в 09:32.
|
|
|
|
02.08.2013, 09:51
|
|
Вид на жительство
Регистрация: 15.07.2007
Адрес: Одесса
Сообщений: 434
Сказал спасибо: 71
Сказали Спасибо 125 раз(а) в 78 сообщении(ях)
|
Re: Новый метод расчёта arccos, cos, sin.
Проверьте сами (прежде чем быстренько). У меня всё точно. (вы ошиблись в своей быстренькой программе).
Лучше проверьте в exel.
Прекратите переходы на личность. Мы не на базаре. (так, рекомендация).
ps: точность такая, как было заявлено раньше. (тем более, что для повышения точности, надо создать табличку с третьим слагаемым, в зависимости от группы углов).
__________________
И если б не было Одессы, шоб я делал?!
Последний раз редактировалось val_ka; 02.08.2013 в 10:01.
|
|
|
|
02.08.2013, 10:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 613 раз(а) в 371 сообщении(ях)
|
Re: Новый метод расчёта arccos, cos, sin.
Сообщение от eddy
|
Т.е. предельная ошибка составляет почти 17'!!!
Такое грубое приближение годится лишь для указания угла наклона дороги на знаках!
// в общем, вы бы сначала точно все проверили, чтобы очередным Петриком не прослыть.
|
Ну так автор и написал: +\- 0,2628 градуса.
Какие могут быть претензии? Кому хватит этой точности, будут использовать.
|
|
|
|
02.08.2013, 10:19
|
|
Вид на жительство
Регистрация: 15.07.2007
Адрес: Одесса
Сообщений: 434
Сказал спасибо: 71
Сказали Спасибо 125 раз(а) в 78 сообщении(ях)
|
Re: Новый метод расчёта arccos, cos, sin.
Сообщение от pambaru
|
Ну так автор и написал: +\- 0,2628 градуса.
Какие могут быть претензии? Кому хватит этой точности, будут использовать.
|
Максимальная точность при расчётах близких к 30 градусам e-5
Минимальная при близких к 60: +/- 0,2628
Если менять третье слагаемое, в зависимости от угла, с интервалом в 10 градусов (или пять), то получится гораздо большая точность во всём диапазоне от 0 до 90. (десятые или точнее).
При этом таблица для третьего слагаемого (общий случай 0,559) будет состоять из девяти, или 18 чисел, соответственно.
__________________
И если б не было Одессы, шоб я делал?!
Последний раз редактировалось val_ka; 02.08.2013 в 10:22.
|
|
|
|
02.08.2013, 10:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Новый метод расчёта arccos, cos, sin.
Сообщение от val_ka
|
вы ошиблись в своей быстренькой программе
|
Где?
Сообщение от val_ka
|
Лучше проверьте в exel
|
Ага, проверять формулу на точность в "охфисной" программке. Ну и затейник вы, батенька!
Сообщение от pambaru
|
Ну так автор и написал: +\- 0,2628 градуса.
|
Черт, а я и не обратил на это внимания. В глаза попалось E-5.
Сообщение от val_ka
|
Максимальная точность при расчётах близких к 30 градусам e-5
|
Ага, при линейной интерполяции по таблицам Брадиса точность еще выше…
Но для МК сойдет, согласен: проще разбить интервал 0..1 на десяток-другой подынтервалов и задать на каждом простенькую квадратичную интерполяцию, нежели табулировать Брадиса.
Кстати, еще вариант: затабулировать штук 100 значений и вычислять арккосинус и арксинус интерполяцией B-сплайнами. Это легко и быстро. И точность выше будет.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
02.08.2013, 11:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 613 раз(а) в 371 сообщении(ях)
|
Re: Новый метод расчёта arccos, cos, sin.
Налобал наскоряк программку, тестирование в заданном диапазоне с шагом 0.01 градус.
Максимум получилось 0.2792 градуса
|
|
|
|
02.08.2013, 11:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Новый метод расчёта arccos, cos, sin.
pambaru, а чего бинарник-то выкладываете? Выкладывайте исходники, каждый сам себе соберет. Это проще, чем пытаться ваш вендовый бинарник запустить (да и мало ли: вдруг там вирье какое…).
Вот, кстати, обещанный график погрешностей.
__________________
Союз Советских Социалистических Округов Северной Америки
Последний раз редактировалось eddy; 02.08.2013 в 11:22.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:07.
|
|