eve-nts Опубликовано 11 февраля, 2019 Поделиться Опубликовано 11 февраля, 2019 Ничего себе,сколько новых формул @E.K. вывел, пока я отсутствовал Глаза разбегаются.. "Умный калькулятор": <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Касперский. Расчёт высоты серпа..</title> </head> <body> <?php echo "<font color=#228B22 face=Arial style='font-size:12px'><b>Касперский. Расчёт высоты серпа. Задача N2</font></b><br><br>"; $R2 = 2 + sqrt(2); echo "R2 = ".$R2."<br>"; // HL' = R2 - r - v2 * (( v ( (R2/2 + r/4) 2 - R2*r - r2/4 ) + R2/2 + r/4 + R2/2 + r/4 - v ( (R2/2 + r/4) 2 - R2*r - r2/4 ) ) /2 - r) $rx=0.1;// шаг изменения r $HL=0; // высота серпа for ($r=0; $r<=$R2; $r+=$rx) { echo "r=".$r; $HL = $R2 - $r - sqrt(2) * (( sqrt( pow(($R2/2 + $r/4), 2) - $R2*$r - $r*$r/4 ) + $R2/2 + $r/4 + $R2/2 + $r/4 - sqrt( pow(($R2/2 + $r/4), 2) - $R2*$r - $r*$r/4 ) ) /2 - $r); echo " HL'=".$HL; echo "<br>"; } ?> </body> </html> Вывод результатов: Касперский. Расчёт высоты серпа. Задача N2R2 = 3.4142135623731r=0 HL'=1r=0.1 HL'=1.006066017178r=0.2 HL'=1.012132034356r=0.3 HL'=1.0181980515339r=0.4 HL'=1.0242640687119r=0.5 HL'=1.0303300858899r=0.6 HL'=1.0363961030679r=0.7 HL'=1.0424621202459r=0.8 HL'=1.0485281374239r=0.9 HL'=1.0545941546018r=1 HL'=1.0606601717798r=1.1 HL'=NANr=1.2 HL'=NANr=1.3 HL'=NANr=1.4 HL'=NANr=1.5 HL'=NANr=1.6 HL'=NANr=1.7 HL'=NANr=1.8 HL'=NANr=1.9 HL'=NANr=2 HL'=NANr=2.1 HL'=NANr=2.2 HL'=NANr=2.3 HL'=NANr=2.4 HL'=NANr=2.5 HL'=NANr=2.6 HL'=NANr=2.7 HL'=NANr=2.8 HL'=NANr=2.9 HL'=NANr=3 HL'=NANr=3.1 HL'=NANr=3.2 HL'=NANr=3.3 HL'=NAN r=3.4 HL'=NAN Если r=1, то HL'=1.0606601717798 Если r>1, то результат не определён. Не знаю, во всяком случае, мне мой калькулятор выдал такие результаты. 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
E.K. Опубликовано 11 февраля, 2019 Автор Поделиться Опубликовано 11 февраля, 2019 Если r>1, то результат не определён. Не может быть... Или в формуле ошибки?? Но при r=0 она правильный результат даёт.. 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
eve-nts Опубликовано 11 февраля, 2019 Поделиться Опубликовано 11 февраля, 2019 Не может быть... Или в формуле ошибки?? Но при r=0 она правильный результат даёт.. Может в программе у меня где ошибка? Но я вроде бы несколько раз проверял, когда перекладывал эту формулу на язык php.. HL' = R2 - r - √2 * (( √ ( (R2/2 + r/4) 2 - R2*r - r2/4 ) + R2/2 + r/4 + R2/2 + r/4 - √ ( (R2/2 + r/4) 2 - R2*r - r2/4 ) ) /2 - r) $HL = $R2 - $r - sqrt(2) * (( sqrt( pow(($R2/2 + $r/4), 2) - $R2*$r - $r*$r/4 ) + $R2/2 + $r/4 + $R2/2 + $r/4 - sqrt( pow(($R2/2 + $r/4), 2) - $R2*$r - $r*$r/4 ) ) /2 - $r); sqrt(x) - это квадратный корень, а pow(x, 2) - это возведение во вторую степень. 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
iv65 Опубликовано 11 февраля, 2019 Поделиться Опубликовано 11 февраля, 2019 (изменено) Eve-nts, Что интересно, но Ваша программа дает приблизительно равный результат при : r=0.1 HL'=1.006066017178 и r=1 HL'=1.0606601717798 !!! Изменено 11 февраля, 2019 пользователем iv65 Ссылка на комментарий Поделиться на другие сайты Поделиться
E.K. Опубликовано 11 февраля, 2019 Автор Поделиться Опубликовано 11 февраля, 2019 Значит, это я в формулах окружностей где-то лажанулся.. А что, проверить числа и плюсы-минусы - все побаиваются? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
eve-nts Опубликовано 12 февраля, 2019 Поделиться Опубликовано 12 февраля, 2019 2*x2 - (2*R2 + r)*x + R2*r + r2/4 = 0 - простое квадратное уравнение. x = √ ( (R2/2 + r/4) 2 - R2*r - r2/4 ) + R2/2 + r/4 Для этих уравнений выдаются вроде бы как разные результаты: Первое Второе (Здесь R - это R2) 2*x2 - (2*R2 + r)*x + R2*r + r2/4 = 0 - простое квадратное уравнение. x = √ ( (R2/2 + r/4) 2 - R2*r - r2/4 ) + R2/2 + r/4 Для этих уравнений выдаются вроде бы как разные результаты: Первое Второе (Здесь R - это R2) Кнопку редактирования не вижу, поэтому исправляю пост таким образом. Я вторую формулу неправильно ввёл: Второе: 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
E.K. Опубликовано 12 февраля, 2019 Автор Поделиться Опубликовано 12 февраля, 2019 Привет и ой - я сегодня что-то подустал тут в Европейщинах.. Можно более конкретно - где ошибка? Я на неделе немного в жёстком графике, сесть и подумать некогда будет.. 1 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
eve-nts Опубликовано 13 февраля, 2019 Поделиться Опубликовано 13 февраля, 2019 2*x2 - (2*R2 + r)*x + R2*r + r2/4 = 0 - простое квадратное уравнение. Посмотрите - правильно ли всё? Я не совсем понял предложенный метод решения этого уравнения, поэтому не смог проверить правильность решения. Решил решить его с помощью дискриминанта Дискриминант D квадратного уравнения a*x2+bx+c=0 равен D=b2–4*a*c, а его корни x1,2 = (-b ± √D) / 2a D = (2*R2 + r)2 - 4 * 2 * (R2 * r + r2/4) = 4*R22 - 4*R2*r - r2 x1,2 = ( (2*R2 + r) ± √ (4*R22 - 4*R2*r - r2) ) / 2*2 x1 = (√ (4*R22 - 4*R2*r - r2) + 2*R2 + r) / 4 x2 = ( - √ (4*R22 - 4*R2*r - r2) + 2*R2 + r) / 4 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
E.K. Опубликовано 13 февраля, 2019 Автор Поделиться Опубликовано 13 февраля, 2019 Проверка по r=0 вроде сходится. Отлично! Теперь давайте просчитаем значения HL' в зависимости от r. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
eve-nts Опубликовано 13 февраля, 2019 Поделиться Опубликовано 13 февраля, 2019 Так а какой 'x' подставлять, с плюсом или с минусом перед корнем? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
E.K. Опубликовано 13 февраля, 2019 Автор Поделиться Опубликовано 13 февраля, 2019 Любой! Они же симметричны.. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
eve-nts Опубликовано 13 февраля, 2019 Поделиться Опубликовано 13 февраля, 2019 x = (√ (4*R22 - 4*R2*r - r2) + 2*R2 + r) / 4 y = R2 + r/2 - x = R2 + r/2 - (√ (4*R22 - 4*R2*r - r2) + 2*R2 + r) / 4 O1L' = √2 * ((x+y)/2 - r) HL' = R1 - O1L' = R2 - r - √2 * ((x+y)/2 - r) HL' = R2 - r - √2 * (( (√ (4*R22 - 4*R2*r - r2) + 2*R2 + r) / 4 + R2 + r/2 - (√ (4*R22 - 4*R2*r - r2) + 2*R2 + r) / 4 )/2 - r) Прогр: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Касперский. Расчёт высоты серпа..</title> </head> <body> <?php echo "<font color=#228B22 face=Arial style='font-size:12px'><b>Касперский. Расчёт высоты серпа. Задача N2</font></b><br><br>"; $R2 = 2 + sqrt(2); echo "R2 = ".$R2."<br>"; // HL' = R2 - r - v2 * (( (v (4*R2^2 - 4*R2*r - r^2) + 2*R2 + r) / 4 + R2 + r/2 - (v (4*R2^2 - 4*R2*r - r^2) + 2*R2 + r) / 4 )/2 - r) $rx=0.1;// шаг изменения r $HL=0; // высота серпа for ($r=0; $r<=$R2; $r+=$rx) { echo "r=".$r; $HL = $R2 - $r - sqrt(2) * (( (sqrt (4*$R2*$R2 - 4*$R2*$r - $r*$r) + 2*$R2 + $r) / 4 + $R2 + $r/2 - (sqrt (4*$R2*$R2 - 4*$R2*$r - $r*$r) + 2*$R2 + $r) / 4 )/2 - $r); echo " HL'=".$HL; echo "<br>"; } ?> </body> </html> Рез: R2 = 3.4142135623731r=0 HL'=1r=0.1 HL'=1.006066017178r=0.2 HL'=1.012132034356r=0.3 HL'=1.0181980515339r=0.4 HL'=1.0242640687119r=0.5 HL'=1.0303300858899r=0.6 HL'=1.0363961030679r=0.7 HL'=1.0424621202459r=0.8 HL'=1.0485281374239r=0.9 HL'=1.0545941546018r=1 HL'=1.0606601717798r=1.1 HL'=1.0667261889578r=1.2 HL'=1.0727922061358r=1.3 HL'=1.0788582233138r=1.4 HL'=1.0849242404917r=1.5 HL'=1.0909902576697r=1.6 HL'=1.0970562748477r=1.7 HL'=1.1031222920257r=1.8 HL'=1.1091883092037r=1.9 HL'=1.1152543263817r=2 HL'=1.1213203435596r=2.1 HL'=1.1273863607376r=2.2 HL'=1.1334523779156r=2.3 HL'=1.1395183950936r=2.4 HL'=1.1455844122716r=2.5 HL'=1.1516504294496r=2.6 HL'=1.1577164466275r=2.7 HL'=1.1637824638055r=2.8 HL'=1.1698484809835r=2.9 HL'=NANr=3 HL'=NANr=3.1 HL'=NANr=3.2 HL'=NANr=3.3 HL'=NAN r=3.4 HL'=NAN Странные какие-то результаты. Заколдованная задача Нужно будет потом ещё раз проверить.. 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
E.K. Опубликовано 14 февраля, 2019 Автор Поделиться Опубликовано 14 февраля, 2019 1. Всё верно получается! Уравнение пересечения окружностей в какой-то момент перестанет решаться, поскольку у них не будет пересечений - на картинке это фиолетовая окружность. На взгляд оно перестанет решаться гдето на r = R2 - 0.6 = 2 + √2 - 0.6 = 2.8 Точно как в полученных результатах! Ура, формулы верны. 2. А также мы видим, что HL' всегда больше 1. То есть, серп не пролезает в коридор. Чтобы пролезть, он должен быть со срезом наверху. Примерно таким: 3. Но шут с ним, с этим срезом. Если потребуется, то потом к нему вернёмся. Давайте подсчитаем какую же площадь серпа можно провернуть через поворот в зависимости от r. То есть, нужно найти площадь фигуры A'BHDE'F - зелёненький серп. Эта площадь равна площади сектора O1A'HE' минус площадь сектора OA'FE' плюс 2*площадь треугольника OA'O1. Вроде не ошибся.. То есть, надо подсчитать углы a1 и a2, которые A'O1F и A'OF. Вроде бы не должно быть сложно. 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
iv65 Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 То есть, нужно найти площадь фигуры A'BHDE'F - зелёненький серп. "Ох, нелегкая это работа Из болота тащить бегемота! Ссылка на комментарий Поделиться на другие сайты Поделиться
E.K. Опубликовано 15 февраля, 2019 Автор Поделиться Опубликовано 15 февраля, 2019 А что тут сложного-то?? Итак: площадь сектора O1A'HE' - площадь сектора OA'FE' + 2*площадь треугольника OA'O1. Надо подсчитать углы a1 и a2, которые A'O1F и A'OF. Это просто, поскольку мы уже знаем (подсчитаны выше) координаты {x,y} пересечения окружностей. Посему знаем длину A'L', дальше буду обозачать просто 'al'. Итак, sin(a1) = al/R1 - верно? Тогда a1 = arcsin(al/R1) Аналогично a2 = arcsin(al/R2). // напоминаю, что для удобства a1 и a2 это половина от углов на пересечения окнужностей, то есть углы A'O1F и A'OF. Тогда площать O1A'HE' = pi * R12 * a1 / 180 Площадь OA'FE' = pi * R22 * a2 / 180 2*площадь треугольника OA'O1 = al * R2 * cos(a2) Всё. Теперь просто надо дописать нужное в программу.. Ничего сложного. 1 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти