Вопрос задан 02.05.2019 в 15:29. Предмет Информатика. Спрашивает Лебедич Влад.

Помогите пожалуйста сделать домашнее задание в паскале, экселе и блок-схему!(на фото Л.р.11)Найти

корень нелинейного уравнения F(x) методом простых интераций. Начальное значение и погрешность (ε) вводится с клавиатуры. В программе предусмотреть максимальное количество интераций (N - задается с клавиатуры), чтобы исключить зацикливание программы. Уравнение оформить в виде функции, а метод в виде процедуры. Начальное значение подобрать самим. На экран вывести искомый корень уравнения и номер интерации, на которой он был найден. Нелинейное уравнение , Крайние значения предела [-1,0] содержащий корень.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Вертман Алиса.
Для того, чтобы применить метод простых итераций, уравнение необходимо преобразовать к виду x=f(x)
e^x+ \sqrt{1+e^{2x}}-2=0  \\ y=e^x \to y+ \sqrt{1+y^2}-2=0; \ y=2- \sqrt{1+y^2} \\ y=e^x \to x=ln(y) \\ x=ln(2- \sqrt{1+e^{2x}})

В качестве начального приближения возьмем середину предлагаемого интервала изоляции корня: (-1+0)/2 = -0.5

function f(x: double): double;
var
  t: double;
begin
  t := 1 + exp(2 * x);
  if t < 0 then f := 0
  else begin
    t := 2 - sqrt(t);
    if t <= 0 then f := 0 else f := ln(t)
  end
end;

procedure SI(x0, eps: double; nmax: integer; var x: double; var n: integer);
var
  xi: double;
  flag: boolean;
begin
  x := x0;
  n := 1;
  flag := false;
  while (n <= nmax) and (not flag) do
  begin
    xi := f(x);
    flag := (abs(x - xi)) <= eps;
    if not flag then begin x := xi; n := n + 1 end
  end
end;

var
  x0, x, eps: double;
  k, maxiter: integer;

begin
  Write('Введите начальное приближение для корня -> ');
  Readln(x0);
  Write('Введите требуемую точность решения -> ');
  Readln(eps);
  Write('Введите максимальное число итераций -> ');
  Readln(maxiter);
  SI(x0, eps, maxiter, x, k);
  Writeln('Корень равен ', x:0:9, ' при числе итераций ', k)
end.

Тестовое решение:

Введите начальное приближение для корня -> -0.5
Введите требуемую точность решения -> 1e-8
Введите максимальное число итераций -> 50
Корень равен -0.287682078 при числе итераций 35



0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос