Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Метод Интераций

73K
07 декабря 2011 года
✖ЛиЧнОсТь✖
9 / / 07.12.2011
Пожалуйста помогите c заданием...
Написать программу для решения уравнения методом итераций (Желательно на Pascal). Найдите несколько корней. Результаты вычисления занесите в отчет, укажите количество операций для получения ответа с точностью 4-х верных знаков (на следующей итерации цицифры не изменятся).
0=cos(4 x) −x+5 Предварительно преобразовать выражение к виду x =... .
316
07 декабря 2011 года
Alm3n
889 / / 29.05.2009
Итерационных методов несколько. Какой именно нужен?
14
07 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
Давайте код и конкретное место которое не ясно
73K
08 декабря 2011 года
✖ЛиЧнОсТь✖
9 / / 07.12.2011
Методом простых итераций.
Как это пример решается теоретически я так и не поняла:confused:, о программной реализации я уже и не говорю...:(
278
09 декабря 2011 года
Alexander92
1.1K / / 04.08.2008
Теоретически решается просто:

1) из уравнения вида F(x) = 0 делается уравнение вида x = f(x). Например: cos(x) = 0 => x = cos(x) + x, т.е. f(x) = x + cos(x);
2) выбирается некоторое начальное приближение x0 (из области изоляции корня): x = x0;
3) делают следующий шаг итерации: x = f(x). Соответственно, получается цепочка:

x = x0
x1 = f(x0)
x2 = f(x1)
...
И так до тех пор, пока не будет достигнута требуемая точность.

P.S. Там, если по-хорошему, есть ограничения на сходимость метода. Первая производная функции f(x) должна быть по модулю меньше единицы, если память не изменяет. Есть методы, как можно всегда получить сходящийся метод. Почитайте, например, Дорн, Мак-Кракен, "Численнные методы и программирование на Фортране", там эти алгоритмы здорово описаны.
73K
10 декабря 2011 года
✖ЛиЧнОсТь✖
9 / / 07.12.2011
Спасибо! С методом простых итераций наконец-то разобралась.:)
Теперь нужно это же уравнение решить методом дихотомии. интервал -2;2 е= 0,0001
Код:
uses crt;
function F(x:real):real;
begin
F:=x + cos(x);
end;
procedure Bisec(a,b,e:real;var x:real);
var c:real;
begin
if F(a)*F(b)<0 then
  begin
   repeat
   c:=(a+b)/2;
   if F(a)*F(c)<=0 then b:=c
   else a:=c;
   until b-a<e;
   x:=(a+b)/2;
  end
else x:=a-1;
end;
var a,b,x,e:real;
begin
clrscr;
writeln('Найти корень функции F(x)=x + cos(x)');
write('Начало интервала: ');readln(a);
repeat
write('Конец интервала: ');readln(b);
until b>a;
repeat
write('Точность: ');readln(e);
until (e>0)and(e<1);
Bisec(a,b,e,x);
if x=a-1 then write('На данном интервале корней нет!')
else writeln('x=',x:0:5);
readln
end.

Почему программа находит только один корень?
278
10 декабря 2011 года
Alexander92
1.1K / / 04.08.2008
Почему программа находит только один корень?


Кэп нашептал, что это из-за того, что он там один и есть. :)

[ATTACH=CONFIG]5436[/ATTACH]

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог