#dudvstud #математиканапальцах #войтивайти Телеграм:
Плейлисты, литература, помощь проекту и прочее:
Рассматриваем, как функция Жуковского используется для моделирования профиля крыла самолета из окружности. Пробуем модифицировать профиль крыла центром и радиусом исходной окружности. А также пробуем делать тонкую настройку через преобразование Кармана-Трефтца. Для желающих поэкспериментировать: corners = np.array([[-1, 1], [-1, -1], [1, 1], [1, -1], [0, 0]]) C = [np.array([0.1, 0.2]), np.array([0.1, 0.1]), np.array([0.1, 0.0]), np.array([0.0, 0.15]), np.array([0.0, 0.1])] R = 0.9 for i in range(5): a = np.arange(100) * 2 * np.pi / 99 x = np.cos(a) * R + C[i][0] y = np.sin(a) * R + C[i][1] plt.figure(num = None, figsize = (22, 10), dpi = 80, facecolor = 'w', edgecolor = 'k') plt.subplot(1, 2, 1) plt.plot(x, y) plt.plot(corners[:, 0], corners[:, 1], '.') z = x + 1j * y z = (z + 1/z) * 0.5 x_ = np.real(z) y_ = np.imag(z) plt.subplot(1, 2, 2) plt.plot(x_, y_) plt.plot(corners[:, 0], corners[:, 1], '.') plt.show() и через преобразование: corners = np.array([[-1, 1], [-1, -1], [1, 1], [1, -1], [0, 0]]) C = [np.array([0.1, 0.2]), np.array([0.1, 0.1]), np.array([0.1, 0.0]), np.array([0.0, 0.15]), np.array([0.0, 0.1])] R = 0.9 def f1(z): return (z - 1.0) / (z + 1.0) def f2(z): return z ** 2.0 def f3(z): return (1.0 + z) / (1.0 - z) for i in range(5): a = np.arange(100) * 2 * np.pi / 99 x = np.cos(a) * R + C[i][0] y = np.sin(a) * R + C[i][1] plt.figure(num = None, figsize = (22, 10), dpi = 80, facecolor = 'w', edgecolor = 'k') z = x + 1j * y z = (z + 1/z) * 0.5 x_ = np.real(z) y_ = np.imag(z) plt.subplot(1, 2, 1) plt.plot(x_, y_) plt.plot(corners[:, 0], corners[:, 1], '.') z = x + 1j * y z = f3(f2(f1(z))) x_ = np.real(z) y_ = np.imag(z) plt.subplot(1, 2, 2) plt.plot(x_, y_) plt.plot(corners[:, 0], corners[:, 1], '.') plt.show()