Функциональная производная (вариационная производная)
возвращает функциональную производную
из функционального относительно функционального y = y (x), где x представляет одну или несколько независимых переменных. Функциональная производная связывает изменение в функциональном S [y] относительно маленького изменения y (x).The, функциональная производная также известна как вариационную производную.G
= functionalDerivative(f
,y
)
Если y
вектор из символьных функций, functionalDerivative
возвращает вектор из функциональных производных относительно функций в y
, где все функции в y
должен зависеть от тех же независимых переменных.
Найдите функциональную производную функционального относительно функции , где подынтегральное выражение .
Объявите y(x)
как символьная функция и задают f
как подынтегральное выражение . Используйте f
и y
как параметры functionalDerivative
.
syms y(x)
f = y*sin(y);
G = functionalDerivative(f,y)
G(x) =
Найдите функциональную производную функционального относительно функций и , где подынтегральное выражение .
Объявите u(x)
и v(x)
как символьные функции, и задают f
как подынтегральное выражение .
syms u(x) v(x) f = u^2*diff(v,x) + v*diff(u,x,x);
Задайте вектор из символьных функций [u v]
как второй входной параметр в functionalDerivative
.
G = functionalDerivative(f,[u v])
G(x) =
functionalDerivative
возвращает вектор из символьных функций, содержащих функциональные производные подынтегрального выражения f
относительно u
и v
, соответственно.
Найдите уравнение Euler–Lagrange массового m
это соединяется с пружиной с коэффициентом упругости k
.
Задайте кинетическую энергию T
, потенциальная энергия V
, и лагранжевый L
из системы. Функция Лагранжа является различием между кинетической и потенциальной энергией.
syms m k x(t) T = 1/2*m*diff(x,t)^2; V = 1/2*k*x^2; L = T - V
L(t) =
В лагранжевой механике действие, функциональное из системы, равно интегралу функции Лагранжа в зависимости от времени, или . Уравнение Euler–Lagrange описывает движение системы для который является стационарным.
Найдите уравнение Euler–Lagrange путем взятия функциональной производной подынтегрального выражения L
и установка его равняется 0
.
eqn = functionalDerivative(L,x) == 0
eqn(t) =
eqn
дифференциальное уравнение, которое описывает массово-пружинное колебание.
Решите eqn
использование dsolve
. Примите массовый m
и коэффициент упругости k
положительны. Установите начальные условия для амплитуды колебания как и начальная скорость массы как .
assume(m,'positive') assume(k,'positive') Dx(t) = diff(x(t),t); xSol = dsolve(eqn,[x(0) == 10, Dx(0) == 0])
xSol =
Очистите предположения для дальнейших вычислений.
assume([k m],'clear')
Задача о брахистохроне состоит в том, чтобы найти самый быстрый путь спуска частицы под силой тяжести без трения. Движение ограничено вертикальной плоскостью. Время для тела, чтобы пройти кривая от точки к под силой тяжести дают
Найдите самый быстрый путь путем минимизации изменения в относительно маленьких изменений пути . Условие для минимума .
Вычислите функциональную производную, чтобы получить дифференциальное уравнение, которое описывает Задачу о брахистохроне. Используйте simplify
упростить уравнение до его ожидаемой формы.
syms g y(x) assume(g,'positive') f = sqrt((1 + diff(y)^2)/(2*g*y)); eqn = functionalDerivative(f,y) == 0; eqn = simplify(eqn)
eqn(x) =
Это уравнение является стандартным дифференциальным уравнением Задачи о брахистохроне. Чтобы найти решения дифференциального уравнения, используйте dsolve
. Задайте 'Implicit'
опция к true
возвратить неявные решения, которые имеют форму .
sols = dsolve(eqn,'Implicit',true)
sols =
Символьный решатель dsolve
возвращает общие решения на комплексном пробеле. Symbolic Math Toolbox™ не принимает предположение что символьная функция isreal.
В зависимости от граничных условий существует два решения действительного пробела Задачи о брахистохроне. Одно из этих двух решений ниже описывает циклоидную кривую на действительном пробеле.
solCycloid1 = sols(3)
solCycloid1 =
solCycloid2 = sols(4)
solCycloid2 =
Другое решение на действительном пробеле является горизонтальной прямой линией, где константа.
solStraight = simplify(sols(5))
solStraight =
Чтобы проиллюстрировать циклоидное решение, рассмотрите пример с граничными условиями и . В этом случае уравнением, которое может удовлетворить данным граничным условиям, является solCycloid2
. Замените этими двумя граничными условиями в solCycloid2
.
eq1 = subs(solCycloid2,[x y(x)],[0 5]); eq2 = subs(solCycloid2,[x y(x)],[4 1]);
Эти два уравнения, eq1
и eq2
, имейте два неизвестных коэффициента, и . Используйте vpasolve
найти числовые решения для коэффициентов. Замените этими решениями в solCycloid2
.
coeffs = vpasolve([eq1 eq2]); eqCycloid = subs(solCycloid2,{'C1','C5'},{coeffs.C1,coeffs.C5})
eqCycloid =
Неявное уравнение eqCycloid
описывает циклоидное решение Задачи о брахистохроне в терминах и .
Можно затем использовать fimplicit
построить eqCycloid
. Начиная с fimplicit
только принимает неявные символьные уравнения, которые содержат символьные переменные и , преобразуйте символьную функцию к символьной переменной . Используйте mapSymType
преобразовывать к . Постройте циклоидное решение в граничных условиях и .
funToVar = @(obj) sym('y'); eqPlot = mapSymType(eqCycloid,'symfun',funToVar); fimplicit(eqPlot,[0 4 1 5])
Для функции это описывает поверхность в трехмерном пространстве, площадь поверхности может быть определена функциональным
где и частные производные относительно и .
Найдите функциональную производную подынтегрального выражения f
относительно u
.
syms u(x,y)
f = sqrt(1 + diff(u,x)^2 + diff(u,y)^2);
G = functionalDerivative(f,u)
G(x, y) =
Результатом является уравнение G
это описывает минимальную поверхность 3-D поверхности, заданной u(x,y)
. Решения этого уравнения описывают минимальные поверхности в трехмерном пространстве, такие как пузыри мыла.
f
— Подынтегральное выражение функциональныхПодынтегральное выражение функционального в виде символьной переменной, функции или выражения. Аргумент f
представляет плотность функционального.
y
— Функция дифференцированияФункция дифференцирования в виде символьной функции или вектора, матрицы или многомерного массива символьных функций. Аргумент y
может быть функция одной или нескольких независимых переменных. Если y
вектор из символьных функций, functionalDerivative
возвращает вектор из функциональных производных относительно функций в y
, где все функции в y
должен зависеть от тех же независимых переменных.
G
— Функциональная производнаяФункциональная производная, возвращенная как символьная функция или вектор из символьных функций. Если вход y
вектор, затем G
вектор.
Рассмотрите функциональное
который может выбрать любого путь от a до b в x - пробел.
Для маленького изменения пути y(x) задайте изменение как в котором ϕ (x) является произвольной тестовой функцией. Изменение в функциональном S
Выражение функциональная производная S относительно y. Линейный функциональный DS [y] также известен как первое изменение или дифференциал Гато функционального S.
Один метод, чтобы вычислить функциональную производную должен применить Разложение Тейлора к выражению S [y + εϕ] относительно ε. Путем хранения терминов первого порядка в ε, выполнения интегрирования частями и выбора граничных условий ϕ(a) = ϕ(b) = ϕ'(a) = ϕ'(b) = ... = 0, функциональная производная становится
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.