Практика языка C (МФТИ, 2023-2024). Семинар 8.2. Решение уравнений и вычисление функций.

  Рет қаралды 4,385

Konstantin Vladimirov

Konstantin Vladimirov

Күн бұрын

Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
Вторая часть восьмого семинара посвящена решению уравнений. Мы начнём с того, что рассмотрим разнообразные сложности и ловушки плавающих чисел. Далее мы займёмся нахождением корней уравнений: сначала рассмотрим методы в которых надо сохранять брекетинг корня, потом уйдём от них в неизвестность. Ну и в конце нас ждёт применение метода Ньютона для вычисления функций, разгадка магического инверсного корня, правила работы с комплексными числами и немного красоты в виде всяких фракталов.
Семинарист: Константин Владимиров.
Дата: 29 апреля 2024 года.
Съёмка: Владислав Белов.
Звук: Юлий Тарасов.
Предыдущий семинар: • Практика языка C (МФТИ...
Следующий семинар: • Практика языка C (МФТИ...
Слайды к занятиям: cs.mipt.ru/wp/?page_id=7775
Примеры кода: github.com/tilir/c-graduate
Задачник: olymp1.vdi.mipt.ru/
Timeline
00:00 Правила работы c плавающими числами
10:20 Аккуратнее с ошибками сложения
16:04 Помните о конечности диапазона
23:18 Дихотомия
30:00 Целочисленный квадратный корень
40:23 Бенчмаркинг целочисленного корня
45:11 Regula falsi
49:08 Нарушим брекетинг? И время для задач
54:50 Метод Ньютона
01:00:32 Вычисление функций
01:14:30 Быстрые приближения и магический инверсный корень
01:20:15 Комплексные числа и фрактал Ньютона
01:26:20 Голоморфная динамика и множество Жюлиа
01:31:58 Генератор фракталов и завершение
Errata
* Тут пока пусто

Пікірлер: 25
@user-kk7xt3uo7x
@user-kk7xt3uo7x Ай бұрын
Преподаватель самый лучший!!! Все его видео пересмотрел (а мне уже почти 40 лет). Видно сразу, что любит свою профессию. Смотреть очень интересно.
@user-eo5uw4xf2y
@user-eo5uw4xf2y Ай бұрын
Ну и что, что 40 лет?
@AlexAlex-ll5sz
@AlexAlex-ll5sz Ай бұрын
А мене почти 50 я смотрю.
@alex_s_ciframi
@alex_s_ciframi 4 күн бұрын
я людям рекомендую смотреть канал Константина вместо сериалов :D
@fedorbabkin
@fedorbabkin Ай бұрын
Вспомнился ФОПФовый анекдот. Студент на экзамене по электродинамике все время подглядывает на ладонь руки. Преп ловит его, говорит: показывай шпаргалку. Тот показывает левую ладонь, там буква Л. Преп: зачем тебе это? Студент: правило левой руки помню, а какая из них левая, всё время забываю...
@wumi2419
@wumi2419 Ай бұрын
Семинары для себя это да) Сам на 4 курсе в другом ВУЗе, но смотреть интересно и местами есть новая информация.
@alex_s_ciframi
@alex_s_ciframi 4 күн бұрын
Константин, спасибо за лекцию. 47:44 - опечатка "рещить" 1:18:31 - а такое приведение к float* - это разве не нарушение стрикт алиазинг?
@sibedir
@sibedir Ай бұрын
Добрый день, добрые люди. Ну что ж, приступим 🧘‍♂️🙄🤯
@alexanderspeshilov839
@alexanderspeshilov839 Ай бұрын
"Подсмотриваю" ваши семинары (хоть и в 2 раза старше студентов). Про бенчмаркинг sqrt. На X64 и мощных ARM понятно что итеративно (даже Ньютоном) вариант dsqrt обогнать если и можно, то не просто. Но вот на каком-нибудь Cortex- M0 или RISC-V без нужных расширений dsqrt может оказаться совсем небыстрым. При этом для целых есть хорошее начальное приближение что-нибудь типа x >> ((32 - clz(x)) >> 1), где clz - количество нулей впереди. Впрочем, у m0 clz тоже, если я правильно помню не одной командой считается.
@akulijbe
@akulijbe Ай бұрын
1:13:10 - видимо запись решила скрыть, что мы увидим в реализации синуса) но я дополню, что почти всегда мы увидим ряды Тейлора (к примеру, как в musl и glibc) P.S.: видео как всегда супер! Спасибо)
@allallall2321
@allallall2321 Ай бұрын
@evseee
@evseee Ай бұрын
да, одно дело когда говорят "для икс меньше дельта", а другое когда ты на, ещё зелёном, но уже графическом, мониторе видишь как колбасит ряд маклорена для синуса при удалении от нуля :)
@sibedir
@sibedir Ай бұрын
34:35 Числа с плавающей точкой на столько отличаются от вещественных чисел, что там даже левое и правое не такие 😂
@hohlovin
@hohlovin Ай бұрын
Давали бы мне такие знания году так в 95-м...
@2_x_2_4
@2_x_2_4 Ай бұрын
kzfaq.info/get/bejne/j9ZdpbGQpsC6g30.html Эту формулу (1/2(xn+a/xn)) ещё называют фомулой Герона. А т.к. одну формулу Герона студенты знают, то, полагаю, у вас, Константин, интересно получилось бы обыграть такую ситуацию в лекции. :-)
@lwind4884
@lwind4884 Ай бұрын
При проверке на равенство чисел с плавающей точкой рекомендую руководствоваться следующей методикой. Если, например, нужна точность до 5го знака после десятичной точки, берите допуск равный 0,5*0,00001 (т.е. 0,000005). Так Вы нивелируете погрешность математического округления.
@user-hh2qp6ez4d
@user-hh2qp6ez4d Ай бұрын
Нас на вычислительной математике учили считать на разряд выше требуемой точности.
@lwind4884
@lwind4884 Ай бұрын
@@user-hh2qp6ez4d Я имел ввиду следующее. Нужно сравнить два числа так, как если бы Вы перевели эти числа в строку с одинаковыми настройками форматирования, а потом проверили на равенство. Например, сравните числа 1.5551 и 1.5552 с точностью до третьего знака после десятичной точки. Если считать на разряд выше, то с точностью до четвёртого знака эти два числа не равны. Но с точностью до третьего знака они не различимы, т.е. равны. Впрочем. Вообще выбор метода сравнений чисел с плавающей точкой зависит от конкретной задачи.
@user-hh2qp6ez4d
@user-hh2qp6ez4d Ай бұрын
@@lwind4884 я не про количество знаков после запятой. Я про количество разрядов. Например, 123456.789(9 разрядов)*1.234(4 рязряда) - так считаль нельзя, потому что результат умножения будет достоверным только на 4 разряда. Нужно сохранять количество разрядов, а именно 123456.789*1.23456789 - так правильно, если нужна точность 8 разрядов. Как тут сравнивать? В каждом конкретном случае свое количество знаков после запятой.
@lwind4884
@lwind4884 Ай бұрын
@@user-hh2qp6ez4d Благодарю за комментарий по поводу точности вычислений. Однако, прошу обратить внимание, что я писал о методе сравнения.
@narzaru
@narzaru Ай бұрын
Здравствуйте, доступа к заданиям в задачнике нет, и ссылка на плейлист с записями семинаров в конце задачника неправильная
@tilir
@tilir Ай бұрын
У вас проблемы с браузером, он подменяет вам http на https.
@narzaru
@narzaru Ай бұрын
@@tilirтак и не смог победить, пробовал Edge, Google Chrome, Firefox. Потыкал настройки, не помогло. Код последней ошибки 4e816500.
Just try to use a cool gadget 😍
00:33
123 GO! SHORTS
Рет қаралды 81 МЛН
1 класс vs 11 класс  (игрушка)
00:30
БЕРТ
Рет қаралды 3,9 МЛН
My programming language
0:25
MGAMES!
Рет қаралды 71 М.