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

Одномерная оптимизация СДУ

09.03.2021, 18:52. Показов 2888. Ответов 4

Студворк — интернет-сервис помощи студентам
Всем Привет! Подскажите пожалуйста, как реализовать нахождение оптимального начального значения при заданных условиях в системе жестких ДУ. Надо найти минимум s[1] при значении Mw = 600000.
Код программы:

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
 import matplotlib.pyplot as plt
    import numpy as np
    from scipy.integrate import odeint
    from scipy import optimize
    def  F (s,t):
    kp = 48; km = 0.0048; ka1 = 8.16; ka2 = 0.96
    dMdt = -s[0]*s[3]*(kp*km)-s[0]*(kp+km)*s[4]
    dA1dt = -ka1*s[1]*s[3]-ka1*s[1]*s[4]
    dA2dt = -ka2*s[2]*s[3]-ka2*s[2]*s[4]
    dPdt = -kp*s[0]*s[3]+(km*s[0]+ka1*s[1]+ka2*s[2])*s[4]
    dQdt = km*s[0]*s[3]+ka1*s[1]*s[3]+ka2*s[2]*s[3]*s[4]
    dm0dt = kp*s[0]*s[3]-(km*s[0]+ka1*s[1]+ka2*s[2])*s[4]
    dn0dt = (km*s[0]*ka1*s[2]+ka2*s[2]*s[3])*s[4]
    dm1dt = 2*kp*s[0]*s[3]+kp*s[0]*s[4]-(km*s[0]+ka1*s[1]+ka2*s[2])*s[5]
    dn1dt = (km*s[0]+ka1*s[1]+ka2*s[2])*s[5]
    dm2dt = 4*kp*s[0]*s[3]+kp*s[0]*s[4]+2*kp*s[0]*s[5]-(km*s[0]+ka1*s[1]+ka2*s[2])*s[6]
    dn2dt = (km*s[0]+ka1*s[1]+ka2*s[2])*s[6]
    return [dMdt, dA1dt, dA2dt, dPdt, dQdt, dm0dt, dn0dt, dm1dt, dn1dt, dm2dt, dn2dt]
    t = np.linspace(0,3600)
    s0 = [1.39,0.000177,0.00168,0.0000007,0,0,0,0,0,0,0]
    s = odeint(F, s0, t)
    Mw = ((s[:,9]+s[:,10])/(s[:,7]+s[:,8]+2**-100))*68
    plt.plot(t,Mw,'b-',linewidth=2.0,label='Mw')
    plt.xlabel("W0")
    plt.ylabel("Mw")
    plt.legend()
    plt.grid()
    plt.show()
    print (Mw)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2021, 18:52
Ответы с готовыми решениями:

Одномерная оптимизация
Поиск унимодального участка функции f(x)=-\sqrt{{x}^{2}}-\sqrt{1-{x}^{2}} с помощью алгоритма Свена, реализованого с помощью процедуры....

Одномерная оптимизация
Здравствуйте, мне нужна помощь в решении данной задачи. Оптимизировать функцию f (x) = 4xsin x, с помощью метода половинного деления....

Одномерная оптимизация
Поиогите пожалуйста написать программу на паскале на нахождение значения минимума функции f(x)=x^4-14x^3+60x^2-70x в интервале методам...

4
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
10.03.2021, 08:29
Koala1996, добавьте новую функцию и ищите ее минимум, что-то типа такого:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
t = np.linspace(0,3600)
s0_ = [1.39,0.000177,0.00168,0.0000007,0,0,0,0,0,0,0]
 
def F2(s0):
    t = np.linspace(0,3600)
    print(s0)
    s = odeint(F, s0, t)
    Mw = ((s[:,9]+s[:,10])/(s[:,7]+s[:,8]+2**-100))*68
    plt.plot(t,Mw,'b-',linewidth=2.0,label='Mw')
    plt.xlabel("W0")
    plt.ylabel("Mw")
    plt.legend()
    plt.grid()
    plt.show()
    curve=scipy.interpolate.splrep(t, Mw-600000)
    x0=scipy.interpolate.sproot(curve)
    y1=scipy.interpolate.splrep(t, s[:, 1])
    s1=scipy.interpolate.splev(x0[0], y1)
    print (s1)
    return s1
 
res = minimize(F2, s0_, method='Nelder-Mead', tol=1e-3)
Тут, видимо, надо подбирать методы и параметры минимизации, при приведенных в коде параметрах вылетает после 5 итераций.
1
0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 15
11.03.2021, 19:36  [ТС]
u235, здравствуйте. Спасибо, что отозвались на мою проблему. Перепробовал разные методы minimize и почти у всех выходит одна и таже ошибка
Python
1
2
3
4
5
6
7
8
<ipython-input-17-e6b7ad077c0a> in F2(s0)
     13     x0=sproot(curve)
     14     y1=splrep(t, s[:, 1])
---> 15     s1=splev(x0[0], y1)
     16     print (s1)
     17     return s1
 
IndexError: index 0 is out of bounds for axis 0 with size 0
В интернете не могу найти документации по командам splrep, splev и sproot. Подскажите пожалуйста где можно найти нужную информацию.
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
11.03.2021, 19:59
Koala1996, по функциям splrep, splev и sproot есть официальная документация:
https://docs.scipy.org/doc/sci... olate.html
Смысл в том, что Mw мы интерполируем сплайнами и вычисляем то t, при котором Mw==600000.
Попробуйте также поподбирать параметры решателя odeint, уменьшить шаг.
0
0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 15
11.03.2021, 21:02  [ТС]
u235, спасибо !! Попробую разобраться.
P.s я новичок в этом деле )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2021, 21:02
Помогаю со студенческими работами здесь

Одномерная оптимизация
Добрый день. Есть задача: Дана функция двух переменных f(r), начальная точка r0=(x0,y0).Определить направление спуска из...

Одномерная оптимизация
Добрый день, есть такой код, для одномерной оптимизации методом поразрядного поиска. Как сделать так, чтобы поиск минимума функции...

Одномерная оптимизация
f(x)=x3-x, x∈ нужно решить данное уравнение методами дихотомии, Фибоначчи, секущих. СПАСИБО ВСЕМ

Одномерная оптимизация
Помогите решить Решить методами пассивного поиска, золотого сечения, метод Ньютона. Исследовать их сходимость и провести сравнение по...

Одномерная оптимизация
Нужна помощь с написанием кода на C++ для решения уравнения, методом трихотомии. Характер экстремума min


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru