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

0 голосов
26 просмотров

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

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


image

Информатика (37 баллов) | 26 просмотров
Дан 1 ответ
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)<br>  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<br>  begin
    xi := f(x);
    flag := (abs(x - xi)) <= eps;<br>    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




Скачать вложение Excel (XLS)
(142k баллов)