» Mathematica (математика)
a1ekseo
Цитата:
Те кто хорошо разбираются в программировании Mathematica, в принципе могут сами написать программу для вывода шагов решения. См. например для дифференцирования:
http://documents.wolfram.com/mathematica/Demos/Notebooks/Step-by-StepDifferentiation.html
(Тут применение правил преобразования (Rules), пока выражение не перестанет изменяться)
Цитата:
возможно ли в Mathematica видеть весь ход решения задачи?
Те кто хорошо разбираются в программировании Mathematica, в принципе могут сами написать программу для вывода шагов решения. См. например для дифференцирования:
http://documents.wolfram.com/mathematica/Demos/Notebooks/Step-by-StepDifferentiation.html
(Тут применение правил преобразования (Rules), пока выражение не перестанет изменяться)
Скажите, пожалуйста, исходя из каких соображений нужно выбирать x0 в FindRoot[lhs==rhs, {x, x0}] ? (Или подскажите, где про это написано?)
Очевидно, исходя из соображений близости x0 к корню. Mathematica по умолчанию использует метод Ньютона, который довольно плохо сходится, если точка выбрана неудачно. Самой быстрой сходимостью обладает метод Брента (Method -> "Brent"), ему в качестве входных данных нужна не одна точка, а интервал, внутри которого должен быть корень: {x,x0,x1}. Поэтому всегда лучше использовать именно его. Кроме того, нужно помнить, что все численные методы построены в предположении о том, что корень внутри интервала всего один.
Спасибо! В моём случае численный счёт находит корни только если совсем рядом с ними либо стартовые точки, либо интервалы указаны...
Добавлено
Предположим, корень равен 50. Если я его ограничиваю (45,55), то математика находит его. А если (20,80) - то нет. Как я понимаю, в последнем случае метод идёт более крупным "шагом" и потому пропускает корень. А как его заставить идти более мелким "шагом"?
Добавлено
Предположим, корень равен 50. Если я его ограничиваю (45,55), то математика находит его. А если (20,80) - то нет. Как я понимаю, в последнем случае метод идёт более крупным "шагом" и потому пропускает корень. А как его заставить идти более мелким "шагом"?
Вышла 7-я версия. Добавлено: отображение линий тока и прочих штучек для векторных полей, параллелизация многих функций, много встроенных данных (например, человеческий геном) и обработчиков изображений. Как насчёт взломчика?
TomasVercetti
Метод Ньютона иногда промахивается, т.к. основан на вычислении производной. Используйте методы, основанные на постепенной локализации корня: бисекции, секущие, Брента (он точно есть в Mathematica 6). Написать функцию, которая постепенно разбивает большой интервал на несколько малых и делает там поиск корней -- довольно простое дело.
Метод Ньютона иногда промахивается, т.к. основан на вычислении производной. Используйте методы, основанные на постепенной локализации корня: бисекции, секущие, Брента (он точно есть в Mathematica 6). Написать функцию, которая постепенно разбивает большой интервал на несколько малых и делает там поиск корней -- довольно простое дело.
infovarius
варезный вопрос
варезный вопрос
TomasVercetti
Цитата:
Задавая подобные вопросы, следует очертить саму проблему минимизации. В разных случаях эффективными оказываются различные алгоритмы. Ответьте на следующие вопросы:
1) Доступен ли аналитический вид производной минимизируемой функции?
2) Это случайно не задача минимизации суммы квадратов отклонений функции от экспериментальных точек (тогда если на 1-й вопрос ответ положительный, лучшего метода, чем алгоритм Левенберга-Марквардта, просто не существует!).
3) Монотонная функция или есть много локальных минимумов?
4) Если функция дискретная или имеет особые точки, обязательно надо это принять во внимание!
и т.д.
Метода, который подходил бы для всех задач минимизации, попросту не существует!
Цитата:
Скажите, пожалуйста, исходя из каких соображений нужно выбирать x0 в FindRoot[lhs==rhs, {x, x0}] ? (Или подскажите, где про это написано?)
Задавая подобные вопросы, следует очертить саму проблему минимизации. В разных случаях эффективными оказываются различные алгоритмы. Ответьте на следующие вопросы:
1) Доступен ли аналитический вид производной минимизируемой функции?
2) Это случайно не задача минимизации суммы квадратов отклонений функции от экспериментальных точек (тогда если на 1-й вопрос ответ положительный, лучшего метода, чем алгоритм Левенберга-Марквардта, просто не существует!).
3) Монотонная функция или есть много локальных минимумов?
4) Если функция дискретная или имеет особые точки, обязательно надо это принять во внимание!
и т.д.
Метода, который подходил бы для всех задач минимизации, попросту не существует!
Подскажите, как нормально делать экспорт нотбуков математики на русском языке?
(латех, пдф или еще что..)
Кто скажет также, почему при экспорте в латех юникод записывается странным образом..?
пример:\unicode{043f}\unicode{0440}\unicode{0438}\unicode{0432}\unicode{0435}\unicode{0442}
(латех, пдф или еще что..)
Кто скажет также, почему при экспорте в латех юникод записывается странным образом..?
пример:\unicode{043f}\unicode{0440}\unicode{0438}\unicode{0432}\unicode{0435}\unicode{0442}
TomasVercetti
Цитата:
Для нахождения "хорошего" приближения к решению в одномерном случае удобно нарисовать график функции как показано ниже:
Plot[{lhs,rhs}, {x,a,b}]
В двумерном случае (пример)
ContourPlot[{Sin[x + y] == 1/3 + x, x + 2 y == 0}, {x, -4, 4}, {y,-5,5}]
Сразу "на глаз" видны начальные значения:
FindRoot[{Sin[x + y] == 1/3 + x, x + 2 y == 0}, {{x, -0,5}, {y, 0.5}}]
Добавлено:
dipsy
PDF из любой программы, где есть печать удобно делать программой PdfFactory Pro
ну или FinePrint:
http://forum.ru-board.com/topic.cgi?forum=35&topic=1402#1
Цитата:
Скажите, пожалуйста, исходя из каких соображений нужно выбирать x0 в FindRoot[lhs==rhs, {x, x0}] ? (Или подскажите, где про это написано?)
Для нахождения "хорошего" приближения к решению в одномерном случае удобно нарисовать график функции как показано ниже:
Plot[{lhs,rhs}, {x,a,b}]
В двумерном случае (пример)
ContourPlot[{Sin[x + y] == 1/3 + x, x + 2 y == 0}, {x, -4, 4}, {y,-5,5}]
Сразу "на глаз" видны начальные значения:
FindRoot[{Sin[x + y] == 1/3 + x, x + 2 y == 0}, {{x, -0,5}, {y, 0.5}}]
Добавлено:
dipsy
PDF из любой программы, где есть печать удобно делать программой PdfFactory Pro
ну или FinePrint:
http://forum.ru-board.com/topic.cgi?forum=35&topic=1402#1
Griefin, popkov, Partner1 - спасибо за советы!
Для поиска корней на интервале использую метод секущих. Функции на заданном интервале хорошие. Сейчас по картинкам и ориетируюсь (правда из книжки - спасибо за ContourPlot : )
Всем спасибо - всё решилось
Для поиска корней на интервале использую метод секущих. Функции на заданном интервале хорошие. Сейчас по картинкам и ориетируюсь (правда из книжки - спасибо за ContourPlot : )
Всем спасибо - всё решилось
Здраствуйте инетресует такой вопрос, есть ли в математике метод неопределенных коэффициентов и как его использовать? и есть ли функция прообразования комплексого числа из экспонинциальной формы записи в тригонометрическую? Есть функция, от которой я нахожу обратное преобразование лапласа, так вот мне нужно ответ просто записать там не в экспонентах., а чтобы косинусы были (s^2 + 5*s + 9)/((s^2 + 9)*(s^2 + 2*s + 5)) вот такой пример и спользовал эту функцию InverseLaplaceTransform
AMD_ATHLON
Цитата:
In[1]:=InverseLaplaceTransform[(s^2 + 5*s + 9)/((s^2 + 9)*(s^2 + 2*s + 5)),
s, t] // ExpToTrig // FullSimplify
Out[1]=(1/52)*(-20*Cos[3*t] + (20*Cos[2*t] - 9*Sin[2*t])/E^t + 30*Sin[3*t])
(Mathematica 7.0.0)
Добавлено:
Цитата:
Цитата:
Цитата:
Добавлено:
dipsy
Цитата:
Цитата:
есть ли функция прообразования комплексого числа из экспонинциальной формы записи в тригонометрическую?Поиск в справке быстро приводит к функции ExpToTrig[]. Хотя аргументы тригонометрических функций, выводимые ей, оказываются комплекными в твоём случае. Однако последующее применение FullSimplify[] позволяет избавиться от комплексных аргументов:
In[1]:=InverseLaplaceTransform[(s^2 + 5*s + 9)/((s^2 + 9)*(s^2 + 2*s + 5)),
s, t] // ExpToTrig // FullSimplify
Out[1]=(1/52)*(-20*Cos[3*t] + (20*Cos[2*t] - 9*Sin[2*t])/E^t + 30*Sin[3*t])
(Mathematica 7.0.0)
Добавлено:
Цитата:
Здраствуйте инетресует
Цитата:
прообразования комплексого
Цитата:
экспонинциальнойРежет слух. Иногда полезно бывает воспользоваться программой проверки орфоргафии - благо, их сейчас много, и они умеют встраиваться в браузеры...
Добавлено:
dipsy
Цитата:
Кто скажет также, почему при экспорте в латех юникод записывается странным образом..?У Mathematica с не-ASCII-символами всегда были проблемы, и исправлять их они не спешат. Для качественного экпорта ноутбуков с такими символами (кроме символов шрифтов Mathematica) единственный выход - печать на виртуальный принтер (Acrobat Distiller для PDF - это классика, надёжнее ничего нет; для печати в EMF в системах NT не выше Windows XP SP2 идеально подходит PrintMirror, хотя и Mathematica в EMF экспортирует кириллицу нормально; однако EMF не является portable-форматом, и на Windows-компах с отсутствующими исходными шрифтами эти отсутствующие шрифты будут сбрасываться на первый по алфавиту шрифт в списке - Arial!).
popkov
Спасибо огромное.
Спасибо огромное.
Подскажите, пожалуйста, где можно посмотреть алгоритм/код процедуры/подпрограммы, рассчитывающей гипергеометрическую функция 2F2?
Интересует любой вариант языка программирования, не только для Mathematica.
Добавлено:
интересует, конечно, не прямое суммирование
Интересует любой вариант языка программирования, не только для Mathematica.
Добавлено:
интересует, конечно, не прямое суммирование
Функции вида pFq уже реализованы, см. HypergeometricPFQ.
Цитата:
см. HypergeometricPFQ
где?
В Справке к Mathematica.
Цитата:
В Справке к Mathematica
Я там не нашел
Цитата:
алгоритм/код процедуры/подпрограммы
Где конкретно?
Igorr
В Mathematica 7 в "Documentation Center" в строке поиска набираешь "HypergeometricPFQ", и сразу попадаешь на страницу соответствующей функции... Я не знаю, то ли это, что тебе нужно, но на вопрос ответил...
P.S. "Поиск" рулит... - это ключевое преимущество версий 6 и выше, согласно разработчикам, - пользуйся!
В Mathematica 7 в "Documentation Center" в строке поиска набираешь "HypergeometricPFQ", и сразу попадаешь на страницу соответствующей функции... Я не знаю, то ли это, что тебе нужно, но на вопрос ответил...
P.S. "Поиск" рулит... - это ключевое преимущество версий 6 и выше, согласно разработчикам, - пользуйся!
popkov
Цитата:
Возможно, я чего-то не понимаю, но где там алгоритм/код вычисления функции? Как его найти?
Цитата:
на вопрос ответил...
P.S. "Поиск" рулит... - это ключевое преимущество версий 6 и выше, согласно разработчикам, - пользуйся!
Возможно, я чего-то не понимаю, но где там алгоритм/код вычисления функции? Как его найти?
Igorr
Цитата:
Хм... Ты от коммерческого пакета ожидал открытости алгоритмов...? Это коммерческая тайна, так что и не надейся на их ракрытие! В самом лучшем случае разработчики в документации могут сослаться на оригинальные статьи в научных журналах - но это скорее исключение... Что ещё добавить? Слепо верь - или пользуйся пакетами с открытым исходным кодом (только сколько времени ты потратишь на изучение этого кода?).
Цитата:
где там алгоритм/код вычисления функции? Как его найти?
Хм... Ты от коммерческого пакета ожидал открытости алгоритмов...? Это коммерческая тайна, так что и не надейся на их ракрытие! В самом лучшем случае разработчики в документации могут сослаться на оригинальные статьи в научных журналах - но это скорее исключение... Что ещё добавить? Слепо верь - или пользуйся пакетами с открытым исходным кодом (только сколько времени ты потратишь на изучение этого кода?).
Igorr
Алгоритмы есть в научных работах по вычислительной математике. Не факт, что доступ к ним тоже будет открыт. Обычно, для более быстрого вычисления таких рядов люди пользуются асимптотическими формулами, аналитическим продолжением и интегральными представлениями (чтобы аппроксимировать Гауссовыми квадратурами). Эти вещи можно найти в справочнике, но программу нужно писать самому. Однако, даже прямое суммирование дает неплохие результаты, если ряд хорошо сходится. Я недавно считал нечто с функцией Аппеля F4, и для достижения точности в 6-м знаке после запятой мне хватило первых десяти членов ряда. Оценку остаточных членов ряда обычно изучают на 1-м или 2-м курсе.
Алгоритмы есть в научных работах по вычислительной математике. Не факт, что доступ к ним тоже будет открыт. Обычно, для более быстрого вычисления таких рядов люди пользуются асимптотическими формулами, аналитическим продолжением и интегральными представлениями (чтобы аппроксимировать Гауссовыми квадратурами). Эти вещи можно найти в справочнике, но программу нужно писать самому. Однако, даже прямое суммирование дает неплохие результаты, если ряд хорошо сходится. Я недавно считал нечто с функцией Аппеля F4, и для достижения точности в 6-м знаке после запятой мне хватило первых десяти членов ряда. Оценку остаточных членов ряда обычно изучают на 1-м или 2-м курсе.
Griefin
Цитата:
Есть факты:
http://webscripts.softpedia.com/scriptDownload/Generalized-Hypergeometric-Function-Download-34003.html
http://www.ece.mtu.edu/faculty/wfp/codes.html
Но эти варианты (это одна и та же программа с небольшими модификациями) меня пока не устраивают. А вот в Mathematica расчет мне понравился - потому и спросил алгоритм в этой теме, а не в темах по изучению математики.
Цитата:
Не факт, что доступ к ним тоже будет открыт.
Есть факты:
http://webscripts.softpedia.com/scriptDownload/Generalized-Hypergeometric-Function-Download-34003.html
http://www.ece.mtu.edu/faculty/wfp/codes.html
Но эти варианты (это одна и та же программа с небольшими модификациями) меня пока не устраивают. А вот в Mathematica расчет мне понравился - потому и спросил алгоритм в этой теме, а не в темах по изучению математики.
Igorr
Я когда-то интересовался этим вопросом. Фортрановский код pFq лежит в основе почти всех программ. Он кстати работоспособный, проверено.
Я когда-то интересовался этим вопросом. Фортрановский код pFq лежит в основе почти всех программ. Он кстати работоспособный, проверено.
terminat0r
Какой код ты имеешь ввиду?
Если по приведенным мной ссылкам, то он много случаев не считает, например, при ((p>q && abs(z)>1) && p > 2), хотя Mathematica - считает.
Какой код ты имеешь ввиду?
Если по приведенным мной ссылкам, то он много случаев не считает, например, при ((p>q && abs(z)>1) && p > 2), хотя Mathematica - считает.
Igorr
В Mathematica используются символьные преобразования pFq в другие функции, а в этой программе тупо суммируется оборванный ряд. Кроме того, при p > q + 1 && z != 0 ряд расходится. Если есть какие-то специальные случаи, то стоит обратиться к справочнику Бейтмена и Эрдейи и внести их в эту программу.
В Mathematica используются символьные преобразования pFq в другие функции, а в этой программе тупо суммируется оборванный ряд. Кроме того, при p > q + 1 && z != 0 ряд расходится. Если есть какие-то специальные случаи, то стоит обратиться к справочнику Бейтмена и Эрдейи и внести их в эту программу.
Griefin
при чем здесь
Цитата:
при чем здесь
Цитата:
p > q + 1
В общем случае, при p = q + 1 ряд сходится только при abs(z) < 1, за исключением неких частных значений параметров. Их просто надо добавить в эту программу.
Страницы: 12345678910111213141516171819202122232425262728293031323334
Предыдущая тема: Идея несуществующей программы...
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.