0 / 0 / 0
Регистрация: 15.02.2017
Сообщений: 2

Подскажите, как автоматизировать заполнение тела функции

15.02.2017, 13:58. Показов 871. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые программисты
Подскажите пожалуйста как решить следующую задачку
Есть функция, а именно:

Sol=NMinimize[{Total[Abs[-K+B[[1]]*S[[1]]+B[[2]]*S[[2]]]], B[[1]]>0&&B[[2]]>0}, {B[[1]], B[[2]]}]

Нужно сделать ее универсальной на заданное число элементов N
Т.е. какими конструкциями можно автоматизировать заполнение тела функции в зависимости от числа элементов
в массивах B и S в данном случае

И еще один вопрос: Можно ли в Вольфраме в название элемента включать переменную цикла?
Например требуется в цикле обращаться к некоторым нумерованным переменным: a1, a2, a3.
Можно создать массив a={a1,a2,a3} и обращаться к ним: a[[i]]. Соответственно интересует можно ли без этого массива в цикле обращаться напрямую к a1, a2, a3?

Набирал с телефона, мог чего-нибудь пропустить
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2017, 13:58
Ответы с готовыми решениями:

Как автоматизировать заполнение документа Word данными?
Здравствуйте. Подскажите пожалуйста как реализовать такую задумку? В организации есть 4 офис-менеджера, т.е. каждый из них может...

Как автоматизировать заполнение документа Word нужными данными?
Здравствуйте. Подскажите пожалуйста как реализовать такую задумку? В организации есть 4 офис-менеджера, т.е. каждый из них может...

Как автоматизировать заполнение записей поля таблицы, созданной запросом?
Имеется БД, состоящая из нескольких связанных таблиц. Есть еще одна таблица "ДАННЫЕ ПО ВИДУ №1", в одном из полей которой...

3
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
15.02.2017, 16:43
B[[1]]*S[[1]]+B[[2]]*S[[2]] очень похоже на скалярное произведение (B.S), если S[[k]] числа.
Total[Abs[...]] — зачем нужен Total? У Вас K или S[[k]] вектор?

B[[1]]>0&&B[[2]]>0 эквивалентно And@@(# > 0 & /@ B) или And@@Cases[B, x_ :> x > 0].

{B[[1]], B[[2]]} эквивалентно B или, на всякий случай, Evaluate[B].

Цитата Сообщение от Andro309 Посмотреть сообщение
И еще один вопрос: Можно ли в Вольфраме в название элемента включать переменную цикла?
Можно, но обычно такая необходимость говорит о неправильной организации кода.
Цитата Сообщение от Andro309 Посмотреть сообщение
Можно создать массив a={a1,a2,a3} и обращаться к ним: a[[i]]
Так можно. Ещё можно взять ранее неиспользованную букву (скажем, a после ClearAll[a]) и использовать a[i], например,
Haskell
1
2
3
4
ClearAll[a]; (* На всякий случай *)
vars = a /@ Range[10];
expr = Norm[vars];
NMinimize[expr, vars]
0
0 / 0 / 0
Регистрация: 15.02.2017
Сообщений: 2
16.02.2017, 14:42  [ТС]
Спасибо за ответ!

Здесь B имеет структуру {{b1, b2, ..., N}, {b1, b2, ..., N}, ..., k}, где b1, b2 - искомые неизвестные для каждого из k случаев.
S={{{s1, t1},{s2, t2},...},{{s1, t1},{s2, t2},...} ,..., N}
K соответствует S по количеству строк {{s1, t1},{s2, t2},...} в одном элементе.

Размерность массивов N задается в начале расчета в соответствии с имеющимися данными. Для описанного примера с N=2 полная запись выгледела бы так:

Sol=NMinimize[{Total[Abs[-K[[#]][[All, 2]]+B[[#]][[1]]*S[[1]][[All, 2]]+B[[#]][[2]]*S[[2]][[All, 2]]]], B[[#]][[1]]>0&&B[[#]][[2]]>0}, {B[[#]][[1]], B[[#]][[2]]}] &/@ {1, 2, ..., k}

Total производит вычисление функции по всей глубине массива. Без него функция не работает.

Недавно познакомился с Вольфрамом и плохо разбираюсь в его синтаксисе. Хочется организовать автоматическое описание функции в зависимости от заданной размерности N.

По второй части моего вопроса. Какими знаками пришивается циклическая переменная к имени переменной?

Добавлено через 2 часа 7 минут
Можно ли в данное выражение добавить вторую карту, что-то вроде ##:

Sol=NMinimize[{Total[Abs[-K[[#]][[All, 2]]+B[[#]][[##]]*S[[##]][[All, 2]]]], B[[#]][[##]]>0}, B[[#]][[##]]] &/@ {1, 2, ..., k} &/@ {1, 2, ..., N} ?
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
16.02.2017, 15:35
Цитата Сообщение от Andro309 Посмотреть сообщение
Здесь B имеет структуру {{b1, b2, ..., N}, {b1, b2, ..., N}, ..., k}, где b1, b2 - искомые неизвестные для каждого из k случаев.
Итак, B — матрица из N*k неизвестных?
Не уверен, что {B[[1]], B[[2]]} подойдёт в качестве списка переменных NMinimize. Впрочем, у Вас может быть более поздняя версия.
Цитата Сообщение от Andro309 Посмотреть сообщение
S={{{s1, t1},{s2, t2},...},{{s1, t1},{s2, t2},...} ,..., N}
S — матрица N*k*2?
Кстати, можно проверить, написав Dimensions[S] и Dimensions[B].

Цитата Сообщение от Andro309 Посмотреть сообщение
Total производит вычисление функции по всей глубине массива.
Total суммирует все элементы списка.

Напишите выражение, которое Вы хотите минимизировать, математически. Пусть https://www.cyberforum.ru/cgi-bin/latex.cgi?K_{ij}, https://www.cyberforum.ru/cgi-bin/latex.cgi?S_{ijk}, https://www.cyberforum.ru/cgi-bin/latex.cgi?B_{ij} — элементы матриц (заодно выясним размерности их)
Напишите что-то в духе
https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{i} \left| \sum_{j} \left(K_{ij} - \sum_{k} B_{ij}S_{ijk} \right) \right|
а потом положим это в код WM (как увидите, почти дословно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2017, 15:35
Помогаю со студенческими работами здесь

Подскажите, пожалуйста, как автоматизировать расчеты
Имеется расчетный файл, в который передаются входные данные из таблички экселя в виде матрицы (один столбец на один расчет), а выходные...

Подскажите как автоматизировать некую задачу в браузере
В буфере обмена лежит скопированная строка к примеру из двух слов. Дальше должен работать макрос или какой то плагин. Задача его...

Нужно автоматизировать заполнение ячеек
Прошу помощи в написании макроса. Имеется два столбца A,B В этих столбцах имеются данные 405 10 - -...

В Excel нужно автоматизировать заполнение столбца.
Здравствуйте !!! в Excel нужно автоматизировать заполнение столбца B по следующему условию: есть столбец A < 1 отдел Товар 1 ...

Календарь MsWord2013 - Автоматизировать заполнение расписания
Здравствуйте. Нужна помощь,мне нужно автоматизировать заполнение расписания. Проблема возникает,в том что нужно указать начало...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru