[Wolfram Mathematica] - Решение системы интегральных уравнений
Здравствуйте, друзья!
Следующая проблема: имеется система из двух дифференциальных уравнений, решением которой является бигармоническая функция, имеется 8 начальных условий. Решение произвожу средствами стандартной функции DSolve[]. Начальные условия задаю следующим образом: начальное_условие1 := выражение == 0 . Загвоздка состоит в том, что когда функция DSolve[] начинает вычислять, она проверяет начальные условия и получает в качестве аргумента True, а не систему равенств; иными словами, насколько я понял механизм, сначала Математика проверяет истинность начальных условий, а потом передает в DSolve[] в качестве аргумента логическую переменную - True или False (вернее, 8 логических переменных - по одной на каждое из начальных условий). В общем, как мне справиться с этим камнем преткновения? |
Да, и еще 1 вопрос по теме: если я задал функцию в виде:
f[x_,y_] := x^2+y^2; а потом далее в программе использую f[0,y] или даже f[a,y], где a - некоторая константа, будет ли Математика воспринимать это выражение верно, т.е. произойдет ли подстановка 0 или a в аргумент x функции f? |
Цитата:
Цитата:
Если есть непонятки с подстановкой граничных условий, то можно получить через DSolve общее решение, а затем через Solve частное. |
pva, спасибо, Ваш ответ был весьма полезен и в сущности разрешил мою проблему.
Могу я задать еще один вопрос, на этот раз относительно решения трансцендентных уравнений: каким образом можно задать область определения коэффициентов, входящих в него, и решения? То есть уравнение задано в символьном виде, и я хочу, чтобы Математика нашла его корни, например, только при положительных коэффициентах и только вещественные. Как я понимаю, нужно прописать что-то дополнительно в Solve[] - вот только что? |
У меня тоже не получилось заставить это сделать Solve. Но получилось отфильтровать конечные решения:
Select[x /. Solve[{(x^2 + 4)*(x - 2) == 0}], #1 \[Element] Reals & ] |
pva, а не могли бы расшифровать, что здесь написано? Просто еще не приходилось пользоваться этой функцией.
pva, кстати говоря, функция Reduce[] позволяет налагать ограничения на корень и фильтровать решения таким образом. Только вот в моем случае делает она это очень долго - фактически, я даже не знаю, завершится ли когда-нибудь этот процесс. |
TaDa,
Цитата:
Цитата:
|
pva, спасибо за расшифровку.
У меня теперь другая проблема: задаю функцию таким образом: F1[x_,y_]:=D[F[x,y],x], где F[x,y] - некоторая функция, заданная ранее. Потом хочу вычислить F1[0,y], например. Математика начинает подставлять 0 повсюду, где видит x, и пишет, что 0 не является допустимым значением. Вопрос: можно ли как-то обойти этот механизм? При этом выписывать производную, что называется, "на живую" не хочется - выражение получается слишком громоздким. Да и Hold[0] не дает результата - ведь потом F1 должна войти в систему начальных условий, и последующие вычисления должны быть проделаны с подставленным нулем. |
убери двоеточие из присваивания - оно обозначает отложенное, т.е. сначала подставить, потом вычислить, или используй Evaluate:
Код:
F1[x_,y_]=D[F[x,y],x] |
pva, спасибо, этот способ действительно работает.
Вы случайно не знаете, почему Mathematica не может взять гиперболический косинус от числа пи? Возвращает Cosh[Pi]. Странно. |
Математика пытается вычислить выражение до более простой аналитической формы (используется правило, которое как-то уменьшает количество узлов выражения). Если ей не удаётся найти более простую форму, она оставляет выражение не вычисленным, причём используются только аналитические правила. Чтобы "заставить" её получить приближённое численное значение, можно воспользоваться функцией N[] (там же можно указать точность вычисления)
Код:
N[Cosh[Pi]] |
При дальнейшем решении возникли следующие 2 вопроса:
1. Каким образом можно ограничить в системе точность решения? А конкретнее - количество знаков после запятой? 2. Можно ли каким-то образом узнать, в каких точках комплексной плоскости вычет функции отличен от нуля, и если возможно, то как это осуществляется практически? |
Цитата:
Цитата:
|
pva, насчет вычетов - я подумал, что это совершенно ненужный ход. Так что не стоит и голову ломать лишний раз - просто думал, что это можно относительно легко осуществить, написав что-то вроде "если вычет == 0, то вывести x". Кстати, надо будет попробовать :)
Странно, что я даю Математике короткие трансцендентные уравнения, а она, решая их, выводит на экран комментарий: "Reduce was unable to solve the system with inexact coefficients. The answer was obtained by solving a corresponding exact system and numericizing the result". Совсем неясно, о каких "inexact" коэффициентах идет речь, т.к. я в качестве коэффициентов уравнения использую совершенно нормальные действительные числа. |
Время: 12:06. |
Время: 12:06.
© OSzone.net 2001-