Pull to refresh

Comments 58

К чему этот комментарий? В вольфраме хороший решатель интегралов, не спорю. И конкретно в этом месте ошибки нет. В других местах есть.
К ответу на вопрос «кому верить». Численному почти всегда я доверяю больше, чем символьному.

Конкретно приведенная вами функция — ограниченная и непрерывная почти всюду, но с разрывами в некоторых точках (точнее, один из ее множителей имеет разрыв в 2πk). Численным алгоритмам интегрирования на эти разрывы наплевать, а вот символьный может споткнуться и рассмотреть не ту ветку.

Упс, что-то про 2πk я погорячился. Но смысл тот же.

Конкретно приведённая мной функция на непрерывна на заданном промежутке интегрирования, но это не суть моего вопроса. Я удивился, почему datacompboy почти всегда больше доверяет численному интегрированию, а не только в моём примере.

Потому что алгоритм численного интегрирования проще и не содержит сложных ветвлений. В нем попросту труднее допустить ошибку.

Простите, но вы о каком именно алгоритме численного интегрирования? А в том алгоритме, что вы описываете, какие накладываются ограничения на подынтегральную функцию? А пользователь проверил их выполнение?
А вы проверили их выполнение? У вас неустранимые разрывы на интервале интегрирования, например в точке pi*2/3, а значит формулу ньютона-лейбница применять нельзя.
Приведённая мной функция непрерывна на всём интервале интегрирования, в том числе в точке 2/3 π.
Таки да, упустил что atan2(y,x), а значит sin(t) там зажимает её. Примите мои извинения.
Чем вам не понравилось в первой схеме просто взять R1 = R3, а землю просто отсоединить (т.е. R2 = бесконечность)?
В качестве R2 тогда будет выступать сопротивление АЦП (которое, кстати, автор где-то потерял)
А ещё выходное сопротивление генератора напряжения Vin тоже важно.
Именно потому, что автор никак не учитывает сопротивление входа АЦП и выхода генератора, я и предложил свой вариант. Авторский тоже неточно будет работать, если неидеальностью АЦП и генератора нельзя пренебречь.
Ваш вариант хорош, спасибо за уточнение. Но вариант с тремя резисторами по факту является кусочком ЦАПа, о котором речь позднее :)
Не надо закладываться на входное сопротивление АЦП. Мало того, что оно толком не специфицировано, так ещё и нелинейно. АЦП «снаружи» представлено устройством выборки и хранения — по сути, маленьким конденсатором (десятки пикофарад), который непосредственно перед преобразованием заряжается от источника сигнала. И когда у нас сопротивление источника измеряется в сотнях килоом, это начинает заметно влиять на точность. В данном конкретном случае это неважно, погрешность даже в десяток процентов не важна, но в большинстве случаев этого лучше не делать.
Дополнительное чтение:
Atmel application note AVR127 www.atmel.com/Images/Atmel-8456-8-and-32-bit-AVR-Microcontrollers-AVR127-Understanding-ADC-Parameters_Application-Note.pdf (раздел 7)
ST application note AN2834 www.st.com/content/ccc/resource/technical/document/application_note/group0/3f/4c/a4/82/bd/63/4e/92/CD00211314/files/CD00211314.pdf/jcr:content/translations/en.CD00211314.pdf (сильно больше подробностей, но и читается сложнее)
В данном случае можно и так, но мне не всегда нужно сдвигать -5..+5 в 0..5, бывают и другие диапазоны нужны.

правильный ответ скорее всего тот что символьный метод насчитал, т.к. подинтегральная функция на интервале интегрирования имеет разрыв, численные методы в этом случае обычно врут

Если что, подынтегральная функция непрерывна.

вбил в эксель, при t=0 — пишет деление на 0.

Можете показать формулу?

уточнение: если считать через арктангенс — возвращает деление на 0, если через атан2 — то возвращает 0.

Да, я именно про это и хотел сказать. Тут важно использовать atan2.
Функция Atan от двух переменных перед вычислением приводится к одной. В Вольфраме легко видно, если вычислить ArcTan[2, 3]:
ArcTan[3/2]
Виноват, соврал. Это происходит только с действительными константами. Видимо, результат зависит и от того, в каких числах вычисляется численный интеграл — действительных или комплексных.
Даже если не использовать комплексных чисел, (кстати, у меня в примере только вещественные), то atan2 приводится к atan несколько сложнее, нежели простым делением аргументов:

Просто я слышал, что Wolfram в своей внутренней кухне по-умолчанию считает всё в комплексных числах. По этой причине он не упрощает до x выражение Sqrt[x^2], если не задать явно, что x — действительное. Возможно, что и в Sage тоже как-то так.
Ну, atan2-то от комплексных аргументов не имеет ни определения, ни смысла…
Я имел в виду приведение ArcTan от двух действительных аргументов к функции аргумента от одного комплексного:
ArcTan[x, y] // ComplexExpand
=
Arg[x + i y]
Кстати, арктангенс от комплексного аргумента вполне себе определён и даже имеет тот же самый смысл — подставив его в функции sin и cos мы получим изначальные (комплексные) значения.

atan2 — не совсем арктангенс

Как бы то ни было, в задаче, где я с этим столкнулся (посчитать сдвиг фаз между частотами, чтобы амплитуда их суммы была равна заданной), используется именно Atan2. Комплексное значение там появляется, в частности, когда заданная амплитуда превышает сумму исходных, что в ходе решения приводит к корню из отрицательного числа.

Численные методы врут только когда разрыв второго рода. А тут даже если atan2 на обычный арктангенс заменить — будет разрыв первого рода, который численными методами без проблем съедается.

Численные методы отлично врут и на непрерывных функциях. Зависит от очень многих вещей…
Как называются разъёмы для индикатора на 2 картинке?
Кто прав, численный интеграл функции f или его символьное вычисление?

Я бы больше доверял символьному вычислению. Численные подвержены проблеме округления младшего разряда на каждой операции, а когда операций набираются миллионы округления приводят к существенной ошибке.
Когда-то по необходимости дял выполнения лабораторок написал себе решатель для системы линейных уравнений. Так вот на обычных числах REAL система из 20 уравнений давала погрешность численного решения в единицы!!! Применение 64-битных Extended просто немного отодвигало проблему, но не решало её в корне. Совремнные 128/256 бит FPU конечно более точны… но червячок сомнения всё же не отпускает. Особенно учесть что на численное вычисление только лишь синуса приходится довольно много операций.
Только в данном случае ошибся символьный вычислитель.
Это я не понял, как отредактировать пост, если случайно выложил. Он наглухо уходит в модерацию. Поэтому не дописал идею, что для людей с нарушением цветовосприятия — индикатор в третьем состоянии мог бы мигать (для троичной системы). Т.е. есть, нет и мигаем.
Ага, ну, в принципе, почему нет. Только будет трудно отличить мигание, которое показывает состояние, от быстрой смены состояний.
Я и «в уме» вижу, что задачка о трех резисторах не решается, и в статье происходит финт ушами!
Тут надо воспользоваться методиками о которых в Викепедии не пишут.
Составляем систему (я сразу сокращаю токи и напряжения «в уме»)
R1||R2=R3 (случай Uin =0, Uout=2.5)
R1=R3 (случай Uin =-5, Uout=0)
R2/((R1||R3)+R2)=1 (случай Uin =5, Uout=5)

Данная система не решается при положительных сопротивления, и главным образом из-за последнего уравнения. Но автор хитёр, он превращает последнее уравнение в R2/((R1||R3)+R2)=4.9/5.

Вообще то, в подобных случаях принято использовать «схему сдвига уровня на ОУ». Правда на одном ОУ получается инверсия. А лучше и правильнее, какую нибудь диодно-резисторную логику (ДРЛ) намутить.

Согласен! Протормозил!
Но я все равно бы подумал в сторону логики, пользовать в этом случае АЦП роскошь
По моим прикидкам, реализуется на 1 транзисторе+2 резистора
Схему не приведёте?
Как то так
image

Транзистор, ясно дело, с Uбэ>5в например
Ага, понял, таким образом, я одну ногу АЦП могу променять на две ноги двоичной логики. Вполне себе вариант, спасибо!
Только R2 должен меньше R1, например 5.6к. Копипастил неудачно.
хм, а почему только Ом и Кирхгоф? есть же более оптимизированные методы — узловых потенциалов и контурных токов
Просто потому, что Ома и Кирхгофа хватает. Руками мы не считаем давно, поэтому улучшения типа контурных токов не очень актуальны — для понимания сложнее, а ничего нового не дают.

Ну почему же, они дают уменьшение числа уравнений. Меньше забивать руками в решатель СЛАУ...

Давайте контекст не будем терять. Тому, кто знает про (и способен применить) метод контурных токов, не нужна моя шпаргалка. Поэтому в ней только Ом и Кирхгоф.
для понимания сложнее, а ничего нового не дают

Первая система из трех уравнений сводится к уравнению: Vout*G = J
где:
«матрица» проводимостей: G = 1/R1 + 1/R2 + 1/R3
«вектор» узловых токов: J = Vref/R3 + Vin/R1

и сходу результат: Vout = [Vref/R3 + Vin/R1] /[1/R1 + 1/R2 + 1/R3]
по моему это проще чем решать систему с тремя неизвестными.
Проще или сложнее — это субъективно. Как и все остальные статьи, я написал эту статью в первую очередь как шпаргалку самому себе. Мне решить систему линейных уравнений не стоит вообще ничего. А вот разобраться и, главное, потом запомнить что есть узловой ток — это небесплатно.
Sign up to leave a comment.

Articles