0 / 0 / 0
Регистрация: 09.03.2015
Сообщений: 41
1

Найти корень уравнения методом итерации

13.04.2016, 06:47. Показов 4791. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. помогите пожалуйста надо Найти корень уравнения методом итерации с точностью 0.001

sin(x)-x2+1=0

заранее спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2016, 06:47
Ответы с готовыми решениями:

Найти корень уравнения методом дихотомии.
вычислить корень уравнения на отрезке с точностью 0,001 Методом Дихотомии (половинного деления)...

Найти корень уравнения методом итераций
Puporev, помогите пожалуйста

Найти корень уравнения методом хорд
Найти корень уравнения φ(x)=0 на интервале (A,B) с точностью E=10-4. Известно, что φ(x) на...

Найти корень уравнения методом половинного деления
Помогите пожалуйста с задачей! :) Нужно найти корень уравнения методом половинного деления с...

5
0 / 0 / 0
Регистрация: 09.03.2015
Сообщений: 41
14.04.2016, 16:08  [ТС] 2
ап плиз
0
Модератор
9917 / 5273 / 3321
Регистрация: 17.08.2012
Сообщений: 16,122
14.04.2016, 19:10 3
А который из двух корней нужен? Или оба?
0
0 / 0 / 0
Регистрация: 09.03.2015
Сообщений: 41
15.04.2016, 03:20  [ТС] 4
оба пожалуйста
0
0 / 0 / 0
Регистрация: 09.03.2015
Сообщений: 41
17.04.2016, 14:30  [ТС] 5
помогите пожалуйста
0
Модератор
9917 / 5273 / 3321
Регистрация: 17.08.2012
Сообщений: 16,122
19.04.2016, 16:31 6
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Аналитически найти корни вряд ли удастся. Будем решать численными методами, как и планировалось.

Локализуем корни уравнения, для чего чисто умозрительно исследуем функцию.

y=1-x2 - парабола, ветви направлены вниз, имеет один максимум при xmax = 0, имеет два корня (то есть, пересекается с осью абсцисс) при x1,2 = ±1.

И к этому делу теперь ещё нужно добавить y=sin(x).

При -π ≤ x ≤ π этот синус ничего особенно не портит: на интервале -π ≤ x ≤ 0 он уменьшает значение y=1-x2, и сдвигает первый корень из x1 = -1 куда-то в район x1 ≈ -0.64, а на интервале 0 ≤ x ≤ π он увеличивает значение y=1-x2, и сдвигает максимум куда-то в район xmax ≈ 0.45, а второй корень куда-то в район x2 ≈ 1.41. Заметим, что при |x| > https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\pm \sqrt{2}<br />
, и уж тем более при |x| > ±π значение y=1-x2 меньше -1, и поэтому получается, что этот самый синус функцию несколько "искажает", однако, новых корней не добавляет. Мало того, этот самый синус, ещё и по причине того, что при |x| больше указанного модуль первой производной функции y=1-x2 больше модуля первой производной функции y=sin(x), не добавляет и новых экстремумов.

Вывод: функция монотонно возрастает на интервале -∞ < xmax, монотонно убывает на интервале xmax < ∞, имеет один максимум и два корня, которые гарантированно попадают в интервал -1 ≤ x ≤ https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\sqrt{2}<br />
.

Информация из Википедии: Метод простой итерации.

Конкретная разновидность метода простой итерации Вами не указана. Полагаю, что требуется решение простейшим методом итерации. Для начала, с помощью грубого перебора значений из вышеуказанного диапазона сужаем интервал нахождения каждого корня. Перебор будем вести от меньших значений к бóльшим c приращением аргумента (шагом) Δx = 0.5 (почему бы и нет? Хозяин-барин...) в интервале -1..1.5 (с запасом). У поддиапазонов, в которых имеются корни, будет разный знак функции на краях поддиапазона. В качестве λ0 будем использовать отношение приращения аргумента функции (шага) на поддиапазоне к приращению функции, и в качестве начального будем применять бóльший x, то есть, примем

λ0 = Δx / Δf(x) = 0.5 / (f(x) - f(x-0.5))

Так как целевая функция в районе корней выпуклая, такой выбор λ0 не позволит выскочить приближению корня из рассматриваемого поддиапазона, с одной стороны, и близкó к обратному значению производной целевой функции в искомом корне, с другой стороны.

Теперь все точки над https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\ddot{\ddot{{e}}<br />
поставлены. Пишем программу.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function f(x: real): real;
begin
  f := sin(x) - x * x + 1
end;
 
procedure root(x: real; n: integer);
const eps = 0.001;
var lambda, xi: real;
begin
  lambda := 0.5 / (f(x) - f(x - 0.5));
  repeat
    xi := x;
    x := xi - lambda * f(xi)
  until abs(x - xi) < eps;
  writeln('x', n, ' = ', x:6:3)
end;
 
var f1, f2, x: real;
    i, k: integer;
begin
  k := 0;
  f2 := f(-1);
  for i := -1 to 3 do
    begin
      f1 := f2;
      x := i / 2;
      f2 := f(x);
      if f1 * f2 <= 0
        then begin
          inc(k);
          root(x, k)
        end
    end;
  readln;
end.
Однако, зная ущербность современного образования, могу ещё предположить, что под простыми итерациями может подразумеваться тупой перебор всех значений в интервале расположения корней с шагом Δx=ε=0.001:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function f(x: real): real;
begin
  f := sin(x) - x * x + 1
end;
 
var f1, f2, x1, x2: real;
    i, k: integer;
begin
  k := 0;
  x2 := -1;
  f2 := f(x2);
  for i := -999 to 1500 do {2499 + 1 значение}
    begin
      x1 := x2;
      f1 := f2;
      x2 := i / 1000; {через 0.001}
      f2 := f(x2);
      if f1 * f2 <= 0
        then begin
          inc(k);
          writeln('x', k, ' = ', (x2 + x1) / 2:6:3)
        end
    end;
  readln;
end.
2
19.04.2016, 16:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2016, 16:31
Помогаю со студенческими работами здесь

Методом Ньютона, найти один корень трансцендентного уравнения
Добры день. Нуждаюсь в помощи. Задача: Метод Ньютона...

Найти корень уравнения методом Ньютона с заданной точностью
здраствуйте! помогите решить задачу по численным методам, мальчишки!! Нужно составить прогу на...

Методом деления отрезка пополам найти с точностью z корень уравнения
Составить 2е задачи. Рекурсивные процедуры и функции. Описать рекурсивную функцию root(f, a, b,...

Найти корень уравнения на отрезке методом деления отрезка пополам
написать рекурсивную функцию Root(f,b,e),которая методом деления отрезка пополам находит с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru