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

15. Команда цикла с условием.Формат команды.Программирование рекуррентных формул в qbasic.

Операторы условного цикла:

1) Оператор WHILE/WEND

Формат команды:

WHILE логическое выражение

Тело цикла

WEND

Управляющий оператор это есть, выполнение блока операторов до тех пор, пока логическое выражение истинно

REM табулирование функции

DECLARE FUNCTION Y(x)

CLS

Const PI=3.14

DEFSNG A-Z

X=-PI

While x <pi

Print “x=” x ,“y=” y

X=x+pi/36

Wend

End

Rem подпрограмма

Function (x)

Y=sin(x)

End Function

2) Команда цикла Do Loop

a) Формат команды Do Loop:

Do [while/until логическое выражение]

тело цикла

[Exit Do]

Loop

Логическое выражение начинается со слов While/ Until

б)если в команде используется слово while, цикл выполняется до тех пор, пока условие «истинно». При записи слова «until» цикл крутится до тех пор, пока условие ложно

CLS

DIM n, k AS INTEGER

CONST pi = 3.14159

DEFSNG A

k = 3: n = 1

DO

a = SIN(pi * SQR(n ^ 2 + k ^ 2))

PRINT "a"; n; "="; USING "##.#####"; a

n = n + 1

LOOP WHILE ABS(a) > .001

PRINT

PRINT "n="; n; "a="; USING "##.#####"; a

END

Программирование рекурентных формул в QB:

Пример (Элементы последовательности Фиббаначи):

Fn+1=Fn+Fn-1

В данном случае Fn+1- очередной член ряда, относительно него: Fn- предыдущий член ряда, а Fn-1- предпредыдущий член ряда. Формулы, в которых очередной член ряда выражается на основании его предыдущих элементов. Алгоритм:

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

-В цикле записываем рекуррентную формулу и делаем переприсвоение: предыдущему члену ряда присваивается значение очередного члена ряда, а предпредыдущему – предыдущего.

-Закрытие цикла.

REM ‚вычиление числа Фиббаначи

' УСЛОВИЕ

'напечатать номер числа Фиббаначи, меньшего 700

CLS

DIM n AS INTEGER

DEFSNG F

n = 1: fp = 1: fpp = 1

DO

f = fp + fpp

PRINT "f"; n; "="; f

n = n + 1'замена

fpp = fp ' старых

fp = f 'значений

LOOP WHILE f <= 700

PRINT "n="; n; "f="; f

16. Команда цикла с условием.Формат команды.Программирование

конечных сумм трех типов в QBASIC.

Операторы условного цикла:

1) Оператор WHILE/WEND

Формат команды:

WHILE логическое выражение

Тело цикла

WEND

Управляющий оператор это есть, выполнение блока операторов до тех пор, пока логическое выражение истинно

REM табулирование функции

DECLARE FUNCTION Y(x)

CLS

Const PI=3.14

DEFSNG A-Z

X=-PI

While x <pi

Print “x=” x ,“y=” y

X=x+pi/36

Wend

End

Rem подпрограмма

Function (x)

Y=sin(x)

End Function

2) Команда цикла Do Loop

a) Формат команды Do Loop:

Do [while/until логическое выражение]

тело цикла

[Exit Do]

Loop

Логическое выражение начинается со слов While/ Until

б)если в команде используется слово while, цикл выполняется до тех пор, пока условие «истинно». При записи слова «until» цикл крутится до тех пор, пока условие ложно

CLS

DIM n, k AS INTEGER

CONST pi = 3.14159

DEFSNG A

k = 3: n = 1

DO

a = SIN(pi * SQR(n ^ 2 + k ^ 2))

PRINT "a"; n; "="; USING "##.#####"; a

n = n + 1

LOOP WHILE ABS(a) > .001

PRINT

PRINT "n="; n; "a="; USING "##.#####"; a

END

Программирование конечных сумм трех типов в QB.

Вычисление конечных сумм:

Часто для вычисления значения некоторой функции используется разложение этой функции в бесконечный ряд.

Например функцию ех можно разложит в бесконечный ряд

- общий член ряда, так как из него можно получить все члены ряда, кроме первого

Rn(x) – остаточный член ряда

Ряды бывают сходящимися и расходящимися. Условие сходимости ряда:

, т.е. каждый член ряда меньше предыдущего.

Эта задача аналогична вычислению частичной суммы от 1 до n

S=1+2+3…+n

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

Ряд первого типа.

Особенностью этого ряда является то, что для каждого члена ряда требуется вычисление факториала и возведение аргумента в степень.

Пример ряда первого типа:

Знакопостоянный ряд

Знакопеременный ряд

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

Вывод рекуррентной формулы

Выписываем общий член ряда без знака:

Записываем формулу для (an+1), для чего вместо n подставляем (n+1).

Выражаем an+1 через an

Вычисление суммы будет осуществляться путем накопления. Перед входом в цикл накопителю присвоим значение, равное a0 (так как по рекурренной формуле можно получить все члены ряда, кроме первого). После вычисления по рекуррентной формуле прибавим это значение к накопителю. Вычисление конечных сумм для различных значений аргумента и количества членов ряда n представляет из себя задачу с двумя вложенными циклами. Внутренний цикл – это цикл с условием для вычисления суммы n членов ряда для фиксированного значения x, а внешний цикл – изменене аргумента х в заданном интервале с шагом.

Окончание вычисления очередного члена ряда:

1. Вычисление производить до тех пор, пока очередной член ряда по абсолютной величине не станет меньшим заранее заданной точности E (an<E).

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

Алгоритм программирования конечной суммы 1го типа:

1)Задать точность вычисления E (E=10-4)

2) Задать значение аргумента (если это значение изменяется в определенном интервале, то необходимо использовать команду цикла FOR)

3) Задать первоначальное значение накопителя S (S=a0)

4) Задать предыдущий член ряда (ap)

5) Если ряд знакопеременный, то задать знак первого члена ряда, получаемого по рекуррентной формуле (с=-1)

6) Открытие цикла (DO)

7) Вычисление очередного члена ряда по рекуррентной формуле

8) складывание очередного члена ряда в накопитель (S=S+с*AT)

9) вычислить разность по абсолютной величин между предыдущим и очередным членами последовательности R=ABS(ap-at)

10) наращивание номера элемента последовательности

11)переприсвоение (ар=ат)

12) закрытии =е внутреннего цикла с проверкой условия (R>E)

13) печать значения частичной суммы S и точного значения функции, число накопленных членов ряда

14) смена знака c=-c

14) закрытие арифметического цикла:

Анализ результата: Значение S должно совпадать с точным значением функции.

REM программирование конечной суммы первого типа

CLS

INPUT "введите начальное и конечное значения x"; xnach, xkon

e = .0001'задание точности

FOR x = xnach TO xkon

PRINT "при x="; x

s = 1

ap = 1

c = -1

n = 1

DO

PRINT "a"; n; "="; ap

at = ap * x ^ 2 / (2 * n + 1) / (2 * n + 2) * c

s = s + at

r = ABS(ap - at)

n = n + 1

ap = at

LOOP WHILE r > e

c = -c

PRINT "a"; n; "="; ap

PRINT "сумма данного ряда равна"; s

PRINT "количество элемнтов, составляющих данную сумму равно"; n

PRINT "для продолжения работы нвжмите любую клавишу"

DO

LOOP WHILE INKEY$ = ""

PRINT

NEXT x

Алгоритм вычисления конечных сумм 2го типа:

Ряды такого типа не содержат факториалов и степеней высших порядков при аргументах:

Ряды такого типа вычисляются без применения рекуррентных формул, а путем прямой подстановки номера n в формулу общего члена ряда.

Алгоритм:

1)Задать точность вычисления

2) Задать диапазон изменения аргумента с шагом

3) Напечатать значение аргумента

4) Задать значение накопителя S

5) Задать номер n

6)Задать ap=0

7) задать знак c=+-1

8) открыть цикл do

9) запрограммировать общий член ряда (запрограммировать его значение через aT)

10) R=ABS(AT-AP)

11) складывание в накопитель S=S+c*at

12) наращивание n=n+1

13) замена ap=at

14) смена знака c=-c

15) закрытие цикла (loop while R>E)

16) печать n,S,точного значения функции y

17) закрытие арифметического цикла

REM Вычиление конечной суммы второго типа

CLS

INPUT "введите началтное и конечное значения х"; xnach, xkon

e = .0001'задание точности

FOR x = xnach TO xkon

PRINT "при x="; x

s = 0

ap = 0

n = 1

DO

at = (COS((2 * n - 1) * x)) / ((2 * n - 1) ^ 2)

PRINT "a"; n; "="; ap

s = s + at

r = ABS(ap - at)

n = n + 1

ap = at

LOOP WHILE r > e

PRINT "a"; n; "="; ap

PRINT "сумма данного ряда равна"; s

PRINT "количество элементов, составляющих сумму данного ряда равно"; n

PRINT "для продолжения работы нажмите любую клавишу"

DO

LOOP WHILE INKEY$ = ""

PRINT

NEXT x

17. Одномерный массив в MATHCAD.Создать одномерный массив и

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

Опр.: Массив – имеющая уникальное имя совокупность конечного числа числовых или символьных элементов, упорядоченных заданным образом и имеющие определенные адреса (номера).

В MC существует два типа массивов – одномерные и двумерные. Массив помимо имени и адреса имеет характеристики:

-размерность (ориентированность в пространстве)

-размер (максимальное количество его элементов)

Одномерный массив в МС идентифицируется вектором – столбцом ( вектор-столбец характеризуется только числом строк). Двумерный массив (матрица, двумерный вектор) характеризуется как числом строк, так и числом столбцов

Векторы:

Вектор в математике задается следующим образом:

V=(v0,v1,v2……vn) или сокращенно v=(vi)

i=o,n

одномерный массив снабжен одним индексом. В МС нижняя граница индексации по умолчанию равна 0, а вообще она задается системной переменной ORIGIN.

Ввод элементов вектора в память:

Если нам задан конкретный вектор с конкретными элементами, например:

V=(0,1;0,2;-10)

В МС набирается имя вектора (в данном случае v) и ставится знак присвоения. После этого необходимо вызвать из наборной панели пиктограмму с изображением матрицы)

-ввести число строк

-ввести число столбцов, равное 1

-подтвердить ввод этой матрицы

-заполнение полученного массива, активизируя каждую позицию левой кнопкой мыши.

Основные виды векторных операций:

1) сложение векторов (необходимое условие: равенство количества строк в обоих массивах)

2)вычитание векторов

3) смена знака у вектора

4) умножение векторов:

(а)-скалярное умножение

или V=V1*V2

(результатом скалярного умножения является число)

(б) векторное умножение (данная операция может производиться для векторов с числом строк не более 3):

V:=V1хV2

(в) векторизация. Векторизацией называется одновременное проведение математических операций в их скалярном значении над всеми элементами вектора или матрицы, помеченное знаком векторизации.

В результате каждый элемент вектора V1 умножается на соответствующий элемент вектора V2. Результатом данной операции также является вектор.

(г) умножение вектора на скаляр

V=V1*k

5)вычисление нормы вектора

|V|-норма вектора

||M||- норма матрицы

|V|- абсолютная длина (евклидова норма вектора)

6) транспонирование вектора (замена строк на столбцы)

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