Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 18.02.2021
Сообщений: 2

Анимация

19.02.2021, 12:17. Показов 1308. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Есть часть программы, которая создаёт анимацию, по циклу кадров for i in range(m).
Число кадров m=50, 30, 20 соответственно для x=0.5, 0.3, 0.2.

Python
1
2
3
4
5
6
7
8
9
10
11
12
for i in range(50):
            clear_output(wait = True) # стирка
            plt.plot(t, u[:, i], 'b-', lw = 2) # рисуем график 1
            fig = plt.figure(1, figsize = (7, 5)) # холст
            plt.xlim(0, 1) # границы осей, чтобы график не дёргался
            plt.ylim(0, np.max(u))
            plt.grid(ls = 'solid', lw = 0.5, color = 'g')
            plt.xlabel('t',fontsize = 14) # создаём надписи осей
            plt.ylabel('u(t, x)',fontsize = 14) 
            plt.title(f'Кадр:{i + 1}',fontsize = 14) #заголовок
            plt.show() #отображение графика
            sleep(0) # подождём интервал сек
Как мне сделать анимацию для 3 графиков, чтобы они выводились вместе, с styles[i], где styles = ('g-.', 'r--', 'b-').
Внизу программа, которая работает для x=0,5 при m=50.




Условие задачи.

1.Разработали функцию для расчета распределения температуры в стрежне. Необходимо для всех параметров, передаваемых функции сконструировать пользовательский интерфейс, разместить виджеты в два столбца,
запуск расчёта осуществлять нажатием кнопки с надписью Запустить.

2.Анимировать отображение u(t) для x=0.2, 0.3. 0.5. Запускать/останавливать анимацию по нажатию кнопки (кнопок). Сделать так, чтобы приложение работало в Voila.

###

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
from ipywidgets import widgets as w 
from IPython.display import display, clear_output 
from time import sleep # sleep(n) stop проги, m/c 
 
 
###
 
def bar(b):
    
    u0 = w_u0.value
    dx = w_dx.value
    tmax = w_tmax.value
    dt = w_dt.value
    alpha = w_alpha.value
    C = w_C.value
    D = w_D.value
    p = w_p.value
    i = w_i.value
#     m = w_m.value
#     tstep = w_tstep.value
    
    nx = 101
    nt = 100001
    x = np.linspace(0, 1, nx)
    t = np.linspace(0, 1, nt) 
    
    A = dt/C*D/dx**2  
    B = 2*A + alpha*dt/C - 1 
    P = np.ones((nt, nx))*(p + alpha*u0)*dt/C  
    u = np.zeros((nt, nx)) 
 
    for i in range(nt-1): 
         u[i+1, 1:-1] = A * u[i, 2:] - B * u[i, 1: -1] + A * u[i, 0: -2] + P[i, 1: -1] 
 
    with out2:
        # цикл по кадрам
        for i in range(50):
            clear_output(wait = True) # стирка
            plt.plot(t, u[:, i], 'b-', lw = 2) # рисуем график 1
            fig = plt.figure(1, figsize = (7, 5)) # холст
            plt.xlim(0, 1) # границы осей, чтобы график не дёргался
            plt.ylim(0, np.max(u))
            plt.grid(ls = 'solid', lw = 0.5, color = 'g')
            plt.xlabel('t',fontsize = 14) # создаём надписи осей
            plt.ylabel('u(t, x)',fontsize = 14) 
            plt.title(f'Кадр:{i + 1}',fontsize = 14) #заголовок
            plt.show() #отображение графика
            sleep(0) # подождём интервал сек
 
    return u, t, x    
 
 
###
 
# Области вывода
out1 = w.Output(layout = {'widtg':'50%'}) # для виджетов
out2 = w.Output(layout = {'widtg':'50%'}) # для анимации
 
 
# Виджеты параметров функции bar()
w_u0_L = w.Label('температура среды, U0:')   
w_u0 = w.IntSlider(value = 0, min = 0, max = 20, step = 1 )
 
w_dx_L = w.Label('шаг по пространственной координате, dx:') 
w_dx = w.FloatText(value = 0.01) 
 
w_tmax_L = w.Label('время интегрирования уравнения, tmax:') 
w_tmax = w.FloatText(value = 0.1)
 
w_dt_L = w.Label('шаг по времени, dt:') 
w_dt = w.FloatText(value = 1e-6)
 
w_alpha_L = w.Label('теплоотдача, alpha:') 
w_alpha = w.IntText(value = 1) 
 
w_C_L = w.Label('теплоемкость, C:')  
w_C = w.IntText(value = 1)
 
w_D_L = w.Label('теплопроводность, D:')  
w_D = w.IntText(value = 10)
 
w_p_L = w.Label('мощность, P:')  
w_p = w.IntText(value = 1000)
 
w_i_L = w.Label('Интервал')
w_i = w.IntSlider(value = 331, min = 1, max = 500, step = 10)
 
# w_tstep_L = w.Label('Скорость')
# w_tstep = w.IntSlider(value = 370, min = 10, max = 500, step = 10)
 
# w_m_L = w.Label('Число кадров')
# w_m = w.IntSlider(value = 50, min=10, max=200, step=10)
 
btn = w.Button(description = 'Запустить', button_style = 'success') # кнопка
 
# Обработчик событий, связываем w_btn с bar()
btn.on_click(bar) 
 
 
# Свёрстка интерфейса
vbox1 = w.VBox([w_u0_L, w_u0, w_dx_L, w_dx, 
                w_tmax_L, w_tmax, w_dt_L, w_dt]) # виджет контейекр vbox1
 
vbox2 = w.VBox([w_alpha_L, w_alpha, w_C_L, w_C, 
                w_D_L, w_D, w_p_L, w_p, w_i_L, w_i, btn]) # виджет контейекр vbox2
 
hbox = w.VBox([vbox1, vbox2])
 
display(w.HBox([out1, out2]))
 
# Отображаем для пользователя 
with out1:
    display(hbox)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2021, 12:17
Ответы с готовыми решениями:

Анимация квадрата (Matplotlib)
Доброго времени суток. Нужно создать квадрат с помощью библиотеки Matplotlib и чтобы он перемещался по заданным координатам (координаты X и...

Анимация буквы Р
Здравствуйте. Только начал осваиваться с модулем pygame и хотел сделать что-то очень простенькое, а именно анимацию буквы Р, при этом чтобы...

Анимация в matplotlib
Доброго времени суток. Имеется код, прорисовывающий окружность и линию: import matplotlib import pylab R=5 def...

2
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
19.02.2021, 13:04
Vasily is true,
 Комментарий модератора 

Правила:

4.6 Обсуждение вопросов - только в теме на форуме. Приглашения к обсуждению еще где-либо (в том числе и с помощью системы личных сообщений) запрещены, за исключением коммерческих разделов.
4.9 Используйте тэги форматирования текста и редактор формул для удобства восприятия ваших сообщений другими пользователями.
5.18 Запрещено размещать задания и решения в виде картинок (кроме формул и блок-схем) и других файлов с их текстом.


0
0 / 0 / 0
Регистрация: 18.02.2021
Сообщений: 2
19.02.2021, 13:41  [ТС]
Ок, я Вас понял !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2021, 13:41
Помогаю со студенческими работами здесь

Не работает анимация
Помогите прописать анимацию, что-бы мяч попал в кольцо from tkinter import* root = Tk() c =...

Tkinter и анимация
Привет народ, начал немного изучать tkinter, создавать canvas, кнопки, линии на холсте и всё подобное уже более-менее научился, затронул...

Анимация в pygame
Как в pygame создать анимацию объекта?

Не создается анимация
Пробую с помощью matplotlib сделать крутящиеся эллипсы самым простым способом, но ничего не отображается import time import...

Анимация tkinter
Вечер добрый. Есть двигающийся кубик в ткинтере, который движется в то место, где щелкнула мышка. Никак не могу сообразить, как сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru