Тёмный

Абсолютная и относительная погрешности 

Science Club
Подписаться 192
Просмотров 124
50% 1

Опубликовано:

 

28 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 1   
@OnTheWayToTheDirection
@OnTheWayToTheDirection 6 месяцев назад
Ролик создан с использованием библиотеки manim python. Вот код: from manim import * class MyScene(Scene): def construct(self): # self.showGrid() # Постановка задачи: Zadanie = Text( "Имея измеренное расстояние от Земли до Луны, необходимо вычислить абсолютную и относительную погрешность измерения. Предположим, что при измерении расстояния использовался лазерный измерительный прибор, который при попадании луча на Луну отразил его обратно на Землю, но из-за неблагоприятных атмосферных условий (например, плотный туман) произошло искажение измерений.", font_size=15, font="Comic Sans MS" ).move_to(UP*3.2) self.play(Write(Zadanie), run_time = 4) self.wait() # Задаем POINTS: start = np.array([-5.5,-2.5,0]) end = np.array([-4,2,0]) mid = (start + end)/2 # Загрузка .svg файлов для Земли и Луны earth_svg = SVGMobject("Useful resourses/earth.svg").move_to(start) moon_svg = SVGMobject("Useful resourses/moon.svg").move_to(end).scale(0.5) creatig_pivot = Point() line_svg = SVGMobject("Useful resourses/line.svg").move_to(creatig_pivot).scale(0.25) # Показываем Землю и Луну: self.play(FadeIn(earth_svg), FadeIn(moon_svg)) self.wait() # Показываем линейку: self.play(FadeIn(line_svg)) self.wait() # Перемещаем линейку: target_pivot = mid + RIGHT/2 self.play(line_svg.animate.move_to(target_pivot)) self.play(line_svg.animate.rotate(PI/2.5,about_point=target_pivot)) # Подпись у линейки: a = MathTex( r" vert d_{measured} vert = 384'400 km", font_size = 20 ).move_to(mid + UP + LEFT) self.play(Write(a)) # Предисловие решения: dist_formula = MathTex(r" vert d_{measured} vert = 384'400 km") wrong_formula = MathTex(r"\Delta d = 100 km") predislovie = self.WriteMathTextGPT( np.array([1,2.5,0], dtype=np.float32), mathematical_text = [ Text("Пусть измеренное расстояние от земли до Луны составляет:"), dist_formula, Text("Предположим, что дополнительная погрешность измерения составляет:"), wrong_formula, Text("из-за атмосферных условий."), ], text_size = 18) self.wait() b = MathTex( r"\pm 100 km", font_size = 20 ).move_to(end + RIGHT) self.play(Write(b)) self.wait() # Красивый эффект обводки2: framebox1 = SurroundingRectangle(dist_formula, buff=0.05) framebox2 = SurroundingRectangle(a, buff=0.05) self.play(FadeIn(framebox1), FadeIn(framebox2)) self.wait() self.play(FadeOut(framebox1), FadeOut(framebox2)) # Красивый эффект обводки2: framebox1 = SurroundingRectangle(wrong_formula, buff=0.05) framebox2 = SurroundingRectangle(b, buff=0.05) self.play(FadeIn(framebox1), FadeIn(framebox2)) self.wait() self.play(FadeOut(framebox1), FadeOut(framebox2)) # Вычисляем абсолютную погрешность: abs_wrong_formula = MathTex(r"\Delta d = vert d_{measured} - d_{accurate} vert = vert 384'400 - 384'500 vert = 100 km") text = self.WriteMathTextGPT( np.array([2,0,0], dtype=np.float32), mathematical_text = [ Text("1. Абсолютная погрешность - это разница между измеренным значением и точным значением."), abs_wrong_formula ], text_size = 20 ) self.wait() # Красивый эффект обводки3: framebox1 = Rectangle(width=1.4, height=0.5, color=BLUE).move_to(np.array([1,-0.5,0])) self.play(FadeIn(framebox1)) self.play(Write(Text( "точное значение расстояния", color=BLUE, font_size=15 ).move_to(np.array([1, -1.4, 0])))) self.wait() # Вычисляем относительную погрешность: text = self.WriteMathTextGPT( np.array([2,-1.9,0], dtype=np.float32), mathematical_text = [ Text("2. Относительная погрешность - это отношение абсолютной погрешности к точному значению."), MathTex(r"\varepsilon &= \frac{\Delta d}{d_{\text{accurate}}} \times 100\% = \frac{100\text{km}}{384'500\text{ km}} \times 100\% \approx 0.026\%") ], text_size = 20 ) framebox2 = Rectangle(width=1.4, height=0.475, color=BLUE).move_to(np.array([-0.9,-2.7,0])) self.play(FadeIn(framebox2)) self.wait(8) def WriteMathTextGPT(self, position : Point, mathematical_text : list, text_size : int): # Задаем начальную позицию # position = np.array([4, 0, 0]) assert text_size >= 5 # Отрисовываем каждую строку текста for i, item in enumerate(mathematical_text): if (type(item) == MathTex): item.font_size = text_size*1.7 elif (type(item) == Text): item.font_size = text_size-4 else: raise Exception("Непонятный формат(тип) элемента!!!") item.move_to(position) self.play(Write(item)) # отрисовка! self.wait(0.5) # задержка! # Перемещаем следующий элемент под текущим if i < len(mathematical_text) - 1: position += np.array([0, -text_size/38, 0], dtype=np.float32) # Явное преобразование типа данных в int32 # аналог: +DOWN v = VGroup() for stroka in mathematical_text: v.add(stroka) return v def showGrid(self): # Создаем сетку grid = NumberPlane() grid.set_opacity(0.5) # Устанавливаем прозрачность сетки # Добавляем координаты около каждой точки сетки for x in range(-7, 8): # Итерируем по x-координатам for y in range(-4, 5): # Итерируем по y-координатам text = Text(f"({x}, {y})").scale(0.3) # Создаем текст с координатами text.next_to(grid.coords_to_point(x, y), DOWN, buff=0.1) # Размещаем текст около точки сетки self.add(text) # Добавляем текст на сцену # Отображаем сетку и координаты self.add(grid) Быстрый рендер: manim main.py -pql Нормальный рендер: manim main.py play_whole_scenario
Далее
Метод простой итерации
1:39
100 Identical Twins Fight For $250,000
35:40
Просмотров 38 млн
КОТЯТА В ОПАСНОСТИ?#cat
00:36
Просмотров 907 тыс.
Новый вид животных Supertype
00:59
Просмотров 174 тыс.
titan tvman's plan (skibidi toilet 77)
01:00
Просмотров 5 млн
100 Identical Twins Fight For $250,000
35:40
Просмотров 38 млн