Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР_ПСМ31.doc
Скачиваний:
7
Добавлен:
12.02.2015
Размер:
3.37 Mб
Скачать

3. Примеры алгоритмов и программ

3.1. Примеры решения задач

В ТАБЛИЧНОМ ПРОЦЕССОРЕ MSEXCEL

Пример 1.

Вычислить определитель матрицы 3-го порядка: .

Ход работы:

  1. Элементы матрицы располагаем в ячейках А6:С8.

  2. Объединяем ячейки А11 и В11.

  3. Записываем в объединенную ячейку тест определитель = .

  4. Вводим = в ячейку С11.

  5. Выбираем Функция… из менюВставка.

  6. Из математической категории, находим функцию МОПРЕД.

  7. В поле вспомогательного окна и указываем при помощи мыши блок, где находятся значения матрицы, т.е. A6:C8.

  8. Выполняем ОК.

  9. Результат - в ячейке С11 (рис.1).

Рис.1.Макет листа MS Excel. Вычисление определителя матрицы

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

Пример 2.

Вычислить значение функции на интервале [х12] с шагом 0,01. Построить график этойфункции.

Функция y(x)

х1

х2

-1,009

1,083

Ход работы:

1. Вводим х в ячейку B12, y(x) - в C12, в ячейку B13 вводим первое значение х, равное -1,009.

2. В ячейку В14 помещаем -0,999. Это значение, полученное при сложении значений -1,009 и 0,01.

3. Выполняем Автозаполне с шагом до 1,083 включительно в столбце В.

4. В ячейку С13 вводим формулу:

=exp(3*В13)+(sin(2*ПИ()*В13))^2.

5. Выполняем автозаполнение введенной формулы для всех значений x (рис.2).

6. При помощи мыши выделяем все значения х и y(x).

7. Обращаемся к мастеру диаграмм из меню Вставка.

8. Строим график, подписываем его (рис.2).

звание ормулуС13чеки до 1,083 включительно. -следующее

Рис.2. Макет листа MS Excel. График функции

3.2. Примеры алгоритмов и программ, выполненных на алгоритмическом языке turbopascal

Пример 3.

Выполнить схему алгоритма и программы (три случая) на алгоритмическом языке вычисления функции дляс шагом, гдеа=0, b=20, h=0.4.

f(x)=

да

нет

да

нет

.

Рис. 3. Схема алгоритма

Далее приведены программы на алгоритмическом языке программирования Turbo Pascal по исполненному алгоритму (рис. 3).

Программа 1.

program mn1;

uses crt;

var x,y:real;

begin

clrscr;

x:=0;

repeat

if x<10 then y:=x*x*x+1

else

if x>10 then y:=(x*x+3*x+2)/(sqrt(2*x*x*x)-1)

else

y:=0;

writeln('f(',x:3:1,')=',y:6:2);

x:=x+0.4;

until x>20;

readln;

end.

Программа 2.

program mn2;

uses crt;

var x,y:real;

begin

clrscr;

x:=0;

while x<=20 do

begin

if x<10 then y:= x*x*x +1

else

if x>10 then y:=(x*x+3*x+2)/(sqrt(2*x*x*x)-1)

else

y:=0;

writeln('f(',x:3:1,')=',y:6:2);

x:=x+0.4;

end;

readln;

end.

Программа 3.

program mn3;

uses crt;

var

x,y,a,b,h: real;

n ,I : integer;

begin

clrscr;

x:=0;

writeln(‘введите а,b,h’);

readln(a,b,h);

n:=(b-a)/h; n:= round(n);

for i:=1 to n do

begin

if x<10 then y:=X*X*X+1

else

if x>10 then y:=(x*x+3*x+2)/(sqrt(2*x*x*x)-1)

else

y:=0;

writeln('f(',x:3:1,')=',y:6:2);

x:=x+0.4;

end;

readln

end.

Первая программа с именемmn1 составлена с использованием цикла с постусловием: repeat - тело цикла - until(условие завершения цикла). Тело цикла выполнятся до тех пор, пока условие, стоящее после слова until, ложно.

Во второй программе с именем mn2 использован цикл с предусловием: while (условие) do begin - тело цикла - end. Тело цикла выполнятся до тех пор, пока условие, стоящее после слова while, истинно.

Третья программа с именем mn3 содержит организацию цикла с фиксированным числом повторений, определенным во время разработки программы. Параметры цикла целого типа (integer).

Пример 4.

Выполнить схему алгоритма и написать программу нахождения корней нелинейного уравнения f(x)=0,5*cos (0.2* x))+0.2 на отрезке [a,b] с точностью 0,00001, используя подпрограмму для вычисления функции. Применить метод деления отрезка пополам на заданном интервале.

Рис.4. Схема алгоритма

Программа 4.

Program mn4;

uses crt;

function f1 (x: real): real;

begin

f1:=0.5*cos (0.2* x)+0.2;

end;

var

x,a,b,e: real; iteraz: integer;

begin

clrscr;

write ('Input a = '); readln (a);

write ('Input b = '); readln (b);

write ('Input e = '); readln (e);

iteraz:=0;

x:=(a+b)/2;

while (f1(x)<>0) and (abs(a-b)>e) do

begin

iteraz:=iteraz+1;

a:=x;

if (f1(a)*f1(x))<0 then b:=x

else

writeln ('n=', iteraz,' x=', x:3:6,' f(x)=', f1(x):3:6);

x:=(a+b)/2;

end;

readln;

end.

Программа 4 выполнена на алгоритмическом языке программирования TurboPascalпо схеме алгоритма для вычисления корней нелинейного уравнения методом деления отрезка пополам (рис.4) с использованием подпрограммы.

Пример 5.

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

.

Величина a = :

a=1,s=a,n=1

a:=a*(-1)*x*x/((2*n+2)*(2*n-1))

s = s + a

n= n + 1

Нет Да

Рис. 5. Схема алгоритма

В алгоритме (рис.5) применяется цикл с постусловием: repeat - тело цикла until(условие завершения цикла). Тело цикла выполнятся до тех пор, пока условие, стоящее после слова until, ложно. Ниже рассматривается программа с именемmn5, составленная на алгоритмическом языке программирования Turbo Paskal, для расчета суммы бесконечного ряда, когда неизвестно, сколь членов ряда нужно сложить.

Программа 5.

program mn5;

uses crt;

var

a,eps:real;

x,s :real;

n :longint;

begin

clrscr;

writeln('Введите x,eps');

write('x= ');readln(x);

write('eps= ');readln(eps);

a:=1;

S:=a;

n:=0;

repeat

a:=a*(-1)*x*x/((2*n+2)*(2*n-1));

S:=S+a;

writeln('n=',n,' a=',a,' S= ',s);

n:=n+1;

until abs(a)<=eps;

writeln(' Точность достигнута при n= ',n,'. S= ',s);

readln;

end.

В программе идентификатор n используется как счетчик. Переменная n показывает, сколько раз проработал цикл, т.е. сколько элементов ряда было сложено при указанной точности.

Изменение точности вычисления ε при прежнем значении х влечет за собой изменение количества элементов ряда (уменьшение или увеличение).

Пример 6.

Дана квадратная матрица Ai,jразмеромn х n, где 2 <=n <= 10. Найти минимальный элемент матрицы и умножить все элементы матрицы на модуль этого числа.

Bi,j=Min*Ai,j

Рис. 6. Схема алгоритма

На рис. 6 приведена схема алгоритма для решения примера 6. Показано, как оформить ввод квадратной матрицы, как найти минимальный элемент матрицы и вывести элементы полученной матрицы в виде таблицы. Программа, выполненная на алгоритмическом языке Turbo Paskal по данному алгоритму, размещена ниже.

Программа 6.

Program mn6;

var

i, j, m,n: integer;

b, a : array [1..10,1..10] of real;

min : real;

begin

write (`размер строк и столбцов n =`); Readln (n);

for i:=1 to n do

begin

for j:=1 to n do

begin

write(‘a[‘, i,’,’,j, ‘]=’);

readln (a[i,j]);

end;

writeln;

end;

min:=a[1;1];

for i:=1 to n do

for j:=2 to n do

if a[i,j ]< min then min:=a[i, j];

writeln(‘min= ‘,min:6:2)

min:=abs(min);

for i:=1 to n do

begin

for j:=1 to n do

begin

b[i,j]:=min*a[i,j];

write(b[ i,j]:6;2,’ ‘);

end;

writeln;

end;

Readln

End.

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