Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 2 семестр.doc
Скачиваний:
15
Добавлен:
01.04.2025
Размер:
609 Кб
Скачать
☆

Тема 2. Процедурный тип Пример выполнения задания

Задание. Уточнить с погрешностью 0,001 корни уравнений

exp(x) - x*x*x = 0 на отрезке [1, 2] и ln(x) – x + 1,8 = 0 на отрезке [2, 3].

Р ешение. Составим алгоритм и программу с использованием, например, метода Ньютона. Ниже представлена структурограмма программы, а справа – блок-схема подпрограммы-функции Koren с параметрами-значениями a и b, с параметрами f, pf процедурного типа. Ввиду простоты, алгоритмы подпрограмм процедурного типа не приводятся.

Program Korni;

const e = 0.001;

type tip = function (x : real): real; {Процедурный тип}

{$F+} {Директива дальней компиляции}

function f1(x : real) : real;

begin f1 := exp(x) – x*x*x end;

function pf1(x : real) : real;

begin pf1 := exp(x) – 3*x*x end;

function f2(x : real) : real;

begin f2 := ln(x) – x + 1.8 end;

function pf2(x : real) : real;

begin pf2 := 1/x – 1 end;

{$F-} {Отмена директивы}

function Koren(a, b : real; f, pf : tip) : real; {Основная подпрограмма}

var q : real; {Локальная переменная}

begin q := (a + b)/2; {Начальное приближение}

repeat q := q – f(q)/pf(q) until abs(f(q)) < e;

Koren := q {Имени функции присваиваем результат} end; {Koren}

begin {Основная программа}

writeln(‘Корень уравнения exp(x)-x*x*x : ’, Koren(1, 2, f1, pf1):6:4);

writeln(‘Корень уравнения ln(x)-x+1.8 : ’, Koren(2, 3, f2, pf2):6:4);

writeln(‘Функция f1 при этом равна : ’, f1(Koren(1, 2, f1, pf1):6:4))

end.

Варианты задания

  1. Деля отрезок пополам, уточнить с погрешностью 0.001 корни уравнений ln(x)- x +1.8 = 0 на отрезке [1; 3] и на отрезке [3; 5].

  2. Вычислить по методу прямоугольников , взяв по 50 отрезков разбиения на каждом из интервалов интегрирования.

  3. Получить векторы квадратов и кубов значений элементов исходного вектора.

  4. С погрешностью 0.0001 вычислить для x=2.1

и для x=2.7.

  1. Методом перебора с шагом 0.05 определить минимумы функций f(x)= на отрезке [1.5; 4.5] и g(x)= на отрезке [0; 3].

  2. Протабулировать с шагом 0.1 f(x)= ln(x) - x +1.8 на отрезке [2; 3] и с шагом 0.2 - g(x)= на отрезке [0; 2].

  3. Вычислить значения многочленов : для x = 1.2 и для x = 3.5 .

  4. Методом перебора с шагом 0.1 определить максимумы функций f(x)= на отрезке [0; 2] и g(x)= на отрезке [-1; 1].

  5. С погрешностью 0.001 вычислить для x=0.4 и для x=0.3.

  6. Протабулировать функции f(x,y)= ln(x) - x + y и g(x,y)= для 1 x 4 с шагом 0.5 и для 1 y 3 с шагом 1.

  7. С погрешностью 0.001 уточнить методом дихотомии корни уравнений на отрезке [0; 1] и на отрезке [2.5; 4.5].

  8. С погрешностью 0.0001 вычислить для x=0.6 и

.

  1. С помощью процедуры обработки матрицы с параметром процедурного типа ввести и вывести матрицу заданного размера.

  2. С помощью процедуры обработки строки с параметром процедурного типа вывести отсортированную и перевернутую исходную строку.

  3. С помощью процедуры обработки строки с параметром процедурного типа закодировать и декодировать строку.

  4. С помощью процедуры с параметром процедурного типа преобразовать матрицу символов в матрицу кодов и наоборот.

  5. Перебором с шагом 0.05 найти минимум функции g(x)= на отрезке [1; 3] и максимум функции f(x)= на отрезке [0; 2].

  6. Отсортировать вектор исходных данных по убыванию и по нарастанию с помощью подпрограммы с параметром процедурного типа.

  7. С помощью подпрограммы с параметром процедурного типа получить из двух векторов третий, каждый элемент которого равен меньшему элементу исходных векторов, и вектор, состоящий из сумм соответствующих компонентов исходных векторов.

  8. С помощью подпрограммы с параметром процедурного типа вывести на экран главную и побочную диагонали матрицы.

  9. С помощью подпрограммы с параметром процедурного типа вывести границы отрезка, на котором функции имеют корень, перебирая отрезки с шагом 0.1 для ln(x) - x +1.8 = 0 на интервале [2; 3] и x2 -1 = 0 – на интервале [1; 2].

  10. С помощью подпрограммы с параметром процедурного типа транспонировать и вывести исходную и результирующую матрицы.

  11. Уточнить корень уравнения ln(x)- x +1.8 =0 на отрезке [2; 3] методами деления отрезка пополам и Ньютона и вывести его на экран с помощью одной процедуры, имеющей параметр процедурного типа.

  12. С помощью подпрограммы с параметром процедурного типа вывести матрицы, элементы которых равны сумме или произведению соответствующих элементов двух исходных матриц.

  13. С помощью подпрограммы с параметром процедурного типа вычислить среднее значение и дисперсию для вектора из 1000 случайных значений из диапазона [0; 1).