171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
|
|
1 | |
Уравнение x = A*cos(x)27.10.2012, 23:20. Показов 7216. Ответов 47
Метки нет (Все метки)
Всем доброго время суток. Написать программу для вычисления методом последовательных итераций уравнения x = A*cos(x). Параметр A вводится пользователем. Проверить, для каких значений параметра A применим метод последовательных итераций. Читал теорию про последовательные итерации, но к сожалению так и не понял как это можно применить для решения данной задачи???? Насколько я понял x = cos(x) при x очень близких к 0. Но остается параметр A, которой должен удовлетворять данному равенству. Ума не приложу как это реализовать программно???? Помогите пожалуйста!!!! Заранее огромное спасибо.
0
|
27.10.2012, 23:20 | |
Ответы с готовыми решениями:
47
Уравнение cos(2/x) * sin(x) = 0 , вывести корни на экран Решить уравнение вида x=A*cos(x) методом последовательных итераций Вычислить s=cos(1+cos(2+....+cos(39+cos40) Используя разложение cos(x) в ряд. Вычислить cos(0.5) |
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
|
|
28.10.2012, 00:04 | 2 |
При x близких к 0 cos(x) будет около 1. x = cos(x) при x близком к 0,73.
1 корень точно будет для х от -π до π при любом A. Проблема в том что чем больше A, тем больше будет корней. Для начала можно попробовать искать корень при x0 = 0 и небольших значениях A. Тогда будет последовательность 0, A, Acos(A), Acos(Acos(A)), ... При больших значениях A можно найти 1 корень если взять x0 немного меньше чем sign(A)π, например sign(A)*0.75π
0
|
171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
|
||||||
28.10.2012, 10:40 [ТС] | 3 | |||||
А как это реализовать программно ума не приложу?. Весь мозг себе сломал. Перерыл весь интернет, но так ничего подобного нашел на C++. Вот что нашел для y=chx.
0
|
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
|
||||||
28.10.2012, 11:46 | 4 | |||||
1
|
171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
|
|
28.10.2012, 14:38 [ТС] | 5 |
doctor_lecter спасибо огромное, вопрос: метод последовательных итераций и метод простых итераций это одно и тоже????? Перечитал кучи литературы, но везде непонятно написано, только в одной статье в интернете слегка упоминается об этом. Заранее огромное спасибо.
0
|
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
|
|
28.10.2012, 14:44 | 6 |
Да, это один метод, его еще называют метод повторных подстановок.
1
|
171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
|
||||||
28.10.2012, 16:05 [ТС] | 7 | |||||
Не охота создавать новую тему сделать тоже самое, но только для x = A * exp(-x). Немножко переделал ваш код:
0
|
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
|
|
28.10.2012, 16:22 | 8 |
Проблема в том, что при начальной точке 0.0 для этого уравнения метод расходится.
0
|
171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
|
||||||
29.10.2012, 23:27 [ТС] | 9 | |||||
Подскажите кто-нибудь как можно изменить условие, чтобы при определенных значениях x выполнялось условие x = A * exp(-x). Экспонента непериодическая функция при x =0 равна 1 при x < 0 уходит на бесконечность при x > 0 стремится к 0. При каких значениях x выполняется неравенство x = A * exp(-x)???? Заранее огромное спасибо.
Добавлено через 15 часов 48 минут Вычитал в интернете, что одним из корней данного уравнения при вычислении методом последовательных итераций может быть: . Подставил его, но программа все равно не считает???? Подскажите пожалуйста в чем ошибка???? Заранее огромное спасибо. Добавлено через 8 часов 54 минуты Подскажите пожалуйста этот код правильный????
0
|
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
|
|
30.10.2012, 00:21 | 10 |
Тут ошибка. Должно быть while(abs(x-x0) > eps);
Смысл этого заключается в том, что теоретически в данном методе корень x найден, когда на следующей итерации этого метода получается то же значение x, но на практике из-за неточности вычислений такое невозможно, поэтому задается точность ε, такую что если выполняется условие |a-b| < ε, считается что a=b. Для уравнения x = A * exp(-x) начальное значение x0 = 0.5(1+exp(-1)) позволяет найти решение при небольших A (проверял при eps = 0.001, A=1, A=2, при 3 начинает расходится), при больших A расходится. Это не означает то что код не правильный; данный метод плохо применим для уравнения такого типа.
1
|
Заблокирован
|
|
30.10.2012, 01:07 | 11 |
isaak, я поддерживаю мысли doctor_lecter, причём самая основная ошибка
вот эта. - я бы поставли fabs double же(хоте в 10-й версии студии abs по моему перегружен уже и для вещественных, но всё же лучше ставить fabs, дабы код был портируем даже в более низкие версии студии) - не проверял но тоже похоже на правду
1
|
171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
|
|||||||||||
30.10.2012, 09:09 [ТС] | 12 | ||||||||||
-=ЮрА=-, doctor_lecter насколько я понял из ваших рассуждений наиболее правильный код выглядит следующим образом:
Добавлено через 3 минуты Наиболее правильнее все таки вот так:
0
|
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
|
||||||
30.10.2012, 10:56 | 13 | |||||
Еще при A<0 могут либо быть решения, либо нет. Я бы так сделал
0
|
Заблокирован
|
||||||
30.10.2012, 11:42 | 14 | |||||
isaak, вобщем сегодня посмотрел я на твою проблемму, первое где ты вообще увидел что уравнение x = A*cos(x) эквивалентно x = A*exp(-x) т.е этого момента я совсем не понял. Теперь дальше, уравнение x = A*cos(x) по методу простой итерации решается так как показано ниже
Для экспоненты A*exp(-x); просто поменяй формулу в double g(double x)
1
|
Заблокирован
|
||||||
30.10.2012, 11:44 | 15 | |||||
Вот код для экспоненты, т.е практически никаких изменений, важно чтобы выполнялось условие |А| < 1
1
|
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
|
|
30.10.2012, 11:52 | 16 |
0
|
Заблокирован
|
|
30.10.2012, 11:56 | 17 |
- я бы сказал больше решений не будет при |А| > 0.5 т.е получается
верно для косинуса, а для экспоненты это условие ещё жёще |A| < 0.5 (провел пару тестов с экспонентой и пришёл к такому выводу). Также думаю надо для экспоненты исключать точку ноль, т.к в этом случае решение тоже не определено. Надо бы по свободе посмотреть ОДЗ f(x) = x - A*exp(-x)
0
|
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
|
|
30.10.2012, 12:06 | 18 |
При A > 0 решения есть всегда, данный метод начинает расходится при A > 3. Но при A < -0.4 (это примерное значение) решений уже нет.
С 0 все нормально, получается уравнение x=0
0
|
Заблокирован
|
|
30.10.2012, 13:13 | 20 |
- решения нет и при -0,4, лучше посмотри график поверхности и всё поймёшь.
- кто расходится, метод простых итераций?А его критерии сходимости вообще когда-нибудь встречал?Т.е данный метод зависит от значения А? Хорошо а как быть скажем с таким уравнением x = cos(x) где тут А?
0
|
30.10.2012, 13:13 | |
30.10.2012, 13:13 | |
Помогаю со студенческими работами здесь
20
pow(cos,cos) |cos x - cos y| в степени Дано уравнение ax2+bx+c=0. Решить уравнение, результат вывести на экран. Создать производные классы линейное уравнение и квадратное уравнение, в которых данная функция переопределена Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |