Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб 17.doc
Скачиваний:
1
Добавлен:
08.05.2019
Размер:
427.52 Кб
Скачать

Содержание отчета :

  1. Постановка задачи для конкретного варианта и исходные данные.

  2. Описание и блок-схема метода решения.

  3. Текст программы.

  4. Распечатка результатов работы программы в следующем виде:

РЕШЕНИЕ УРАВНЕНИЯ

ТОЧНОЕ ЗНАЧЕНИЕ КОРНЯ .............................

ВЫЧИСЛЕННОЕ ЗНАЧЕНИЕ КОРНЯ .............….

ЧИСЛО ИТЕРАЦИЙ ...........................................

Образец выполнения задания.

Найти корень уравнения : с точностью =10-4, корень уравнения находится на отрезке (0.4, 1), используя метод итераций. На печать вывести вычисленное значение корня и для сравнения точное значение корня, точное значение корня x=0.7376.

Значения:

Xо – примерное значение корня,

- точность нахождения корня, вводятся с клавиатуры.

Должен быть предусмотрен контроль вводимых значений.

В программе необходимо предусмотреть подсчет и вывод на печать числа итераций, за которое удается найти значение корня с заданной точностью.

Описание метода итераций:

Пусть уравнение имеет один корень на отрезке [a;b]. Функция F(x) непрерывна на отрезке [a; b].

Этот метод заключается в замене уравнения эквивалентным ему уравнением вида

После этого строится итерационный процесс:

На заданном отрезке [a; b] выберем точку х0 – нулевое приближение – и найдем:

х1 = f(x0),

потом найдем:

х2 = f(x1),

и т.д.

Таким образом, процесс нахождения корня уравнения сводится к последовательному вычислению чисел:

хn = f(xn-1) n = 1,2,3..... .

Процесс итераций продолжается до тех пор, пока

где  – заданная абсолютная погрешность корня х.

Текст программы.

program lab9{ вариант № 3};

uses crt;

var x0,x1,a,b,e:real;

iteraz:integer;

function fun(x:real):real;

begin

fun:=2.5-sqrt(x)-exp((1/3)*(ln(x)));

end;

begin

clrscr;

write('Введите приближённое значение X=');

readln(x1);

write('Введите точность e=');

readln(e);

iteraz:=0;

repeat

iteraz:=iteraz+1;

x0:=x1;

x1:=fun(x0);

until (abs(x1-x0)<=e);

writeln('Решение уравнения:');

writeln('Точное значение корня...... ……0.7376');

writeln('Вычисленное значение корня…',x1:6:5);

writeln('Число итераций..…………......... ',iteraz);

writeln('Программа закончена, нажмите Enter.');

readln;

end.

Распечатка результатов работы программы в следующем виде:

Решение уравнения:

Точное значение корня...... ……...0.7376

Вычисленное значение корня.. …0.73767

Число итераций...........………….. ..989

Решение нелинейных уравнений методом Ньютона.

Найти корень уравнения: с точностью =10-4, корень уравнения находится на отрезке (0.4, 1), используя метод Ньютона. На печать вывести вычисленное значение корня и для сравнения точное значение корня, точное значение корня x=0.7376.

Значения :

Xо – примерное значение корня,

 - точность нахождения корня, вводятся с клавиатуры.

Должен быть предусмотрен контроль вводимых значений.

В программе необходимо предусмотреть подсчет и вывод на печать числа итераций, за которое удается найти значение корня с заданной точностью.

Описание метода Ньютона:

Пусть уравнение имеет один корень на отрезке [a;b]. Функция F(x) непрерывна на отрезке [a; b].

Приводящее к итерационному процессу следующего вида:

Выберем на отрезке[a; b] произвольную точку х0 – нулевое приближение. Затем найдем:

x1 = x0 - , потом x2 = x1 - .

Таким образом, процесс нахождения корня уравнения сводится к вычислению чисел xn по формуле: xn = xn-1 - n = 1,2,3...... .

Процесс вычисления продолжается до тех пор, пока не будет выполнено условие:

program lab9{ вариант № 3};

uses crt;

var x0,x1,a,b,e:real;

iteraz:integer;

function fun(x:real):real;

begin

fun:=(x+sqrt(x)+exp((1/3)*(ln(x)))-2.5)/(1+1/(2*sqrt(x))+1/(3*exp((1/3)*(ln(x)))));

end;

begin

clrscr;

write('Введите приближённое значение корня X=');

readln(x1);

write('Введите точность e=');

readln(e);

iteraz:=0;

repeat

iteraz:=iteraz+1;

x0:=x1;

x1:=x0-fun(x0);

until (abs(x1-x0)<=e);

writeln('Решение уравнения:');

writeln('Точное значение корня...... ……0.7376');

writeln('Вычисленное значение корня…',x1:6:5);

writeln('Число итераций..…………......... ',iteraz);

writeln('Программа закончена, нажмите Enter.');

readln;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]