9 / 9 / 10
Регистрация: 05.09.2013
Сообщений: 502
|
||||||
1 | ||||||
Найти корень нелинейного уравнения30.11.2013, 16:53. Показов 20562. Ответов 13
Здравствуйте . Возник вопрос по поводу функции fzerо.
Немного не понимаю , в каких случаях она работает . Например , почему такую функцию 2*x^2+3-е^x =0 она решает , а вот такую e^x lnx-20 = 0 - не решает . При попытки получается такое:
Вылетает ошибка: The function values at the interval endpoints must differ in sign. Пишет , что значения функции на концах интервала должны отличаться. Что это значит ? Получается , что нужно просто пробовать , подходит ли такая функция для решения уравнения или нет ? Объясните , пожалуйста. Заранее спасибо!
0
|
30.11.2013, 16:53 | |
Ответы с готовыми решениями:
13
Найти корень уравнения, используя интерполяцию Найти корень уравнения методом Ньютона Найти корень уравнения методом хорд Найти корень уравнения методом простых итераций. |
9 / 9 / 10
Регистрация: 05.09.2013
Сообщений: 502
|
|
30.11.2013, 17:14 [ТС] | 3 |
Если использовать функцию fsolve , то корень считает . Но не два , а один всё-таки .
0
|
2719 / 1773 / 187
Регистрация: 05.06.2011
Сообщений: 5,132
|
|
30.11.2013, 17:28 | 4 |
Matlabа я не знаю. Могу только предположить, что fsolve использует другой алгоритм. Не все алгоритмы требуют, чтоб функция на концах отрезка принимала значения разных знаков. Кстати, то, что какая-то функция нашла на отрезке корень, ещё не означает, что на нём нет второго.
0
|
03.12.2013, 12:03 | 5 |
NNN7, а что ты хочешь получить то?
Он тебе английским языком пишет, что на указанном участке [3.0, 3.2] корня нет если указать только одну начальную точку: x=fzero(f, 3) то получаем ближайший корень: x = 2.9250
0
|
1 / 1 / 0
Регистрация: 28.07.2014
Сообщений: 13
|
||||||
28.07.2014, 17:29 | 6 | |||||
Здравствуйте, у меня тоже имеется вопрос на эту тему.
При попытке найти корень уравнения: 2*cos(alf)-2.92 с помощью функции fzero
0
|
28.07.2014, 17:48 | 7 | ||||||||||
Во-первых, насколько я понимаю, Матлаб не умеет распознавать аргументы в функциях кроме иксов - знающие люди объяснят поточнее. Поэтому вашу функцию лучше задавать как
1
|
1 / 1 / 0
Регистрация: 28.07.2014
Сообщений: 13
|
|
28.07.2014, 18:14 | 8 |
Да, извините ошибочка вышла функция:2*cos(alf)-0.292 (не учел степень)
Добавлено через 19 минут С x работает, а почему с alf только через @(alf). Но да ладно попробуем усложнить задачу: myfun = @(alf)cos(alf)+cos(asin(sin(alf)-850*sin(fi)/1200))-(1200-850*cos(fi))/1200 где fi - задаваемый угол в виде вектор столбца. Можно ли при помощи функции fzero вычислить вектор столбец alf? или это необходимо запустить в цикле m файла? Если возможно то как?
0
|
1 / 1 / 0
Регистрация: 28.07.2014
Сообщений: 13
|
|
28.07.2014, 19:07 | 10 |
Как?
0
|
28.07.2014, 23:18 | 11 |
насколько я знаю, так вот просто задать вектор параметров и получить вектор при помощи только fzero не удастся, поэтому нужен цикл. (а также подумать над вектором начальных точек х0)
Однако, можно попытаться найти решение символьно и получить выражение вида alf = f(fi), в которое подставить вектор и получить вектор сейчас опробую...
0
|
28.07.2014, 23:30 | 12 | |||||
В MATLAB R2013b ничего хорошего не вышло, а вот старичек R2009a кое-что выдал
Однако не исключено, что результат ошибочный!
0
|
1 / 1 / 0
Регистрация: 28.07.2014
Сообщений: 13
|
||||||
30.07.2014, 07:54 | 14 | |||||
Спасибо за советы. Старичка R2009 нет возможности поставить (Windows 7 x64), только R2013 и выше.
Пробывал fsolve, но насколько я понимаю у этой функции алгоритм несколько иной и рассчитан на задачи с ограничениями. Короче при решении поставленной задачи выбрасывается сообщение: Warning: Trust-region-dogleg algorithm of FSOLVE cannot handle non-square systems; using Levenberg-Marquardt algorithm instead. Далее решение продолжается (скорее всего по методу Левенберга-Марквардта), но результатом является не вектор а скаляр. Пришлось воспользоваться цикломможет быть не совсем эффективным ну не программист я)
Получил что хотел. Результат полученный Зосима верно красная линия.(синяя инверсно)
0
|
30.07.2014, 07:54 | |
30.07.2014, 07:54 | |
Помогаю со студенческими работами здесь
14
Решение нелинейного уравнения Нахождение корней нелинейного уравнения Решение нелинейного уравнения MatLab ОДУ и решение нелинейного уравнения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |