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.
Метод Интераций
Написать программу для решения уравнения методом итераций (Желательно на Pascal). Найдите несколько корней. Результаты вычисления занесите в отчет, укажите количество операций для получения ответа с точностью 4-х верных знаков (на следующей итерации цицифры не изменятся).
0=cos(4 x) −x+5 Предварительно преобразовать выражение к виду x =... .
Итерационных методов несколько. Какой именно нужен?
Давайте код и конкретное место которое не ясно
Как это пример решается теоретически я так и не поняла:confused:, о программной реализации я уже и не говорю...:(
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) должна быть по модулю меньше единицы, если память не изменяет. Есть методы, как можно всегда получить сходящийся метод. Почитайте, например, Дорн, Мак-Кракен, "Численнные методы и программирование на Фортране", там эти алгоритмы здорово описаны.
Теперь нужно это же уравнение решить методом дихотомии. интервал -2;2 е= 0,0001
Код:
Почему программа находит только один корень?
Цитата: ✖ЛиЧнОсТь✖
Почему программа находит только один корень?
Кэп нашептал, что это из-за того, что он там один и есть. :)
[ATTACH=CONFIG]5436[/ATTACH]