Comments 58
Конкретно приведенная вами функция — ограниченная и непрерывная почти всюду, но с разрывами в некоторых точках (точнее, один из ее множителей имеет разрыв в 2πk). Численным алгоритмам интегрирования на эти разрывы наплевать, а вот символьный может споткнуться и рассмотреть не ту ветку.
Упс, что-то про 2πk я погорячился. Но смысл тот же.
Потому что алгоритм численного интегрирования проще и не содержит сложных ветвлений. В нем попросту труднее допустить ошибку.
Дополнительное чтение:
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 (сильно больше подробностей, но и читается сложнее)
правильный ответ скорее всего тот что символьный метод насчитал, т.к. подинтегральная функция на интервале интегрирования имеет разрыв, численные методы в этом случае обычно врут
вбил в эксель, при t=0 — пишет деление на 0.
уточнение: если считать через арктангенс — возвращает деление на 0, если через атан2 — то возвращает 0.
ArcTan[3/2]
ArcTan[x, y] // ComplexExpand
=
Arg[x + i y]
atan2 — не совсем арктангенс
Численные методы врут только когда разрыв второго рода. А тут даже если atan2 на обычный арктангенс заменить — будет разрыв первого рода, который численными методами без проблем съедается.
Кто прав, численный интеграл функции 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.
Вообще то, в подобных случаях принято использовать «схему сдвига уровня на ОУ». Правда на одном ОУ получается инверсия. А лучше и правильнее, какую нибудь диодно-резисторную логику (ДРЛ) намутить.
Ну почему же, они дают уменьшение числа уравнений. Меньше забивать руками в решатель СЛАУ...
для понимания сложнее, а ничего нового не дают
Первая система из трех уравнений сводится к уравнению: 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]
по моему это проще чем решать систему с тремя неизвестными.
Сказ про резисторы и неонки