Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)


 

 

 

 



Решение системы уравнений методом Гаусса



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

Основной идеей метода Гаусса,как и отмечалось ранее, является последовательное исключение неизвестных, приводящее к построению эквивалентной системы с треугольной матрицей. Рассмотрим следующую систему уравнений 4 порядка:

Метод Гаусса при решении системы уравнений можно разделить на два этапа: прямой и обратный ход. Вычисление неизвестных ведется в обратной последовательности: x4,x3 x2,x1. Необходимым и достаточным условием выполнения метода Гаусса должно быть следующим: все ведущие элементы Аii не должны равняться нулю.

Прямой ход:

Ведущий элемент А11=2.

Нормирование первого уравнения: x1=-(3/2)*x2-(11/2)*x3-(5/2)*x4+1.

Исключение неизвестной x1 из оставшихся трех уравнений:

2-е уравнение: (-(3/2)*1+1)*x2+(-(11/2)*1+5)*x3+(-(5/2)*1+2)*x4+(1*1-1)=0

3-е уравнение: (-(3/2)*2+1)*x2+(-(11/2)*2+3)*x3+(-(5/2)*2+2)*x4+(1*2+3)=0

4-е уравнение: (-(3/2)*1+1)*x2+(-(11/2)*1+3)*x3+(-(5/2)*1+4)*x4+(1*1+3)=0

После преобразований получим следующую систему:

Выбираем снова ведущий элемент А33=-6.

Нормирование 1го уравнения новой системы: x3=-(1/6)*x4+(5/6)

Исключаем неизвестую x3 из оставшегося уравнения: (-(1/6)*(-2)+2)*x4+((5/6)*2+4)=0

Получим уравнение: (7/3)*x4+7/3=0.

После нормирования x4=-1

 

Обратный ход:

Формирование эквивалентной системы с треугольной матрицей и вычисление неизвестных:

 

 

Единственным недостатком является чувствительность к ошибка округления.

Решение систем уравнений методом Гаусса c выбором главного элемента.Большинство распространенных методов решений уравнений являются вариантами метода Гаусса, отличающиеся незначительными нюансами. Метод Гаусса с выбором главного элемента фактически повторяет предыдущий способ за тем исключением, что вместо выбора ведущего элемента на каждом этапе здесь в самом начале определяется главный элемент. Единственным условием выполнения метода является неравенство нулю детерминанта матрицы.

Расширенная прямоугольная матрица коэффициентов СЛУ:

Также как и в обычном методе Гаусса нахождение корней разбивается на два этапа:

 

 
 

Прямой ход:

Выбор главного элемента по критерию: Apq=max|aij|, (без учета bi)

Вычисление множителей mi=-(aij)/(Apq)

Исключение переменной, соответствующей главному элементу: [строка]i+[главная строка]*mi

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

Обратный ход метода заключается в:

1) Объединение главных строк в систему

2) Вычисление xi

Пример решения системы уравний методом Гаусса с выбором главного элемента можно разобрать по таблице. В отличие от просого метода Гаусса данный способ менее чувствителен к ошибкам округлений.
Метод Гаусса-Жордана для решения системы уравнений
Метод Гаусса-Жордана является еще одной вариацией метода Гаусса для решений систем уравнений. Его отличием является отсутствие обратного хода, но при этом количество действий, выполняемых для решения системы увеличивается. Рассмотрим следующую систему уравнений 3-го порядка:

Первым этапом производится нормирование первого уравнения, далее исключается переменная x1. Отличием является то, что выражение для xkподставляется во все уравнения кроме k-го (с ведущим элементом). Далее действия повторяются и исключается вторая переменная, а затем и третья.

Нормирование 1-го уравнения исключение x1 Нормирование 2-го уравнения исключение x2 Нормирование 3-го уравнения исключение x3
       
     
     


uses crt;
type mas=array[1..10] of integer;
procedure Vvod(var a:mas;n:byte;c:char);
var i:byte;
begin
writeln('Введите ',n,' элементов массива ',c);
for i:=1 to n do
begin
write(c,'[',i,']=');
readln(a[i]);
end;
clrscr;
end;
procedure Vyvod(a:mas;n:byte;c:char);
var i:byte;
begin
writeln('Массив ',c);
for i:=1 to n do
write(a[i],' ');
writeln;
end;
procedure Kol(a:mas;n:byte);
var i,j,k:byte;
begin
i:=1;
j:=0;
while(i<=n)and(j=0) do
if a[i]<0 then j:=i
else i:=i+1;
if j=0 then writeln('В массиве нет отрицательных элементов')
else if j=1 then writeln('Отрицательный элемент первый')
else
begin
k:=0;
for i:=1 to j-1 do
if a[i]>0 then k:=k+1;
writeln('Количество положительных до первого отрицательного=',k)
end;
writeln;
end;
var x,y,z:mas;
begin
clrscr;
Vvod(x,40,'X');
Vvod(y,30,'Y');
Vvod(z,20,'Z');
Vyvod(x,40,'X');
Kol(x,40);
Vyvod(y,30,'Y');
Kol(y,30);
Vyvod(z,20,'Z');
Kol(z,20);
readln
end.

 

Билет 9
1.Строковый тип данных

Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:
var s: string[n];
var s: string;
n - максимально возможная длина строки - целое число в диапазоне 1..255. Если этот параметр опущен, то по умолчанию он принимается равным 255.
Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в строку как литера, то при записи он удваивается.
Переменные, описанные как строковые с разными максимальными длинами, можно присваивать друг другу, хотя при попытке присвоить короткой переменной длинную лишние символы будут отброшены.
Выражения типа char можно присваивать любым строковым переменным.
Кроме слияния над строками определены операции сравнения <,>,=,<>,<=,>=. Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом 0.
Процедуры и функции для работы со строками
В системе Turbo Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками. Ниже приводится список этих процедур и функций с краткими пояснениями.
Length(s:string):integer
Функция возвращает в качестве результата значение текущей длины строки-параметра
Функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Данная функция эквивалентна операции конкатенации "+" и работает немного менее эффективно, чем эта операция.
Copy(s:string; index:integer; count:integer):string
Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.
Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.
Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.
Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.
Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
Val(st: string; x: числовая переменная; var code: integer)
Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x - может быть как целой, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании.
В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее часто используются при работе со строками.
Chr(n: byte): char
Функция возвращает символ по коду, равному значению выражения n. Если n можно представить как числовую константу, то можно также пользоваться записью #n.
Ord(ch: char): byte;
В данном случае функция возвращает код символа ch.
UpCase(c: char): char;
Если c - строчная латинская буква, то функция возвращает соответствующую прописную латинскую букву, в противном случае символ c возвращается без изменения.

2.Нелинейные уравнения можно разделить на 2 класса - алгебраические и трансцендентные. Алгебраическими уравнениями называют уравнения, содержащие только алгебраические функции (целые, рациональные, иррациональные). В частности, многочлен является целой алгебраической функцией. Уравнения, содержащие другие функции (тригонометрические, показательные, логарифмические и другие) называются трансцендентными.Методы решения нелинейных уравнений делятся на две группы: точные методы; итерационные методы.Точные методы позволяют записать корни в виде некоторого конечного соотношения (формулы). Из школьного курса алгебры известны такие методы для решения тригонометрических, логарифмических, показательных, а также простейших алгебраических уравнений.Как известно, многие уравнения и системы уравнений не имеют аналитических решений. В первую очередь это относится к большинству трансцендентных уравнений. Доказано также, что нельзя построить формулу, по которой можно было бы решить произвольное алгебраическое уравнение степени выше четвертой. Кроме того, в некоторых случаях уравнение содержит коэффициенты, известные лишь приблизительно, и, следовательно, сама задача о точном определении корней уравнения теряет смысл. Для их решения используются итерационные методы с заданной степенью точности.Пусть дано уравнение где: Функция f(x) непрерывна на отрезке [a, b] вместе со своими производными 1-го и 2-го порядка.Значения f(x) на концах отрезка имеют разные знаки (f(a)  f(b) < 0).Первая и вторая производные f' (x) и f'' (x) сохраняют определенный знак на всем отрезке.Условия 1) и 2) гарантируют, что на интервале [a, b] находится хотя бы один корень, а из 3) следует, что f(x) на данном интервале монотонна и поэтому корень будет единственным.Решить уравнение (1) итерационным методом значит установить, имеет ли оно корни, сколько корней и найти значения корней с нужной точностью.Всякое значение , обращающее функцию f(x) в нуль, т.е. такое, что:называется корнем уравнения (1) или нулем функции f(x).Задача нахождения корня уравнения f(x) = 0 итерационным методом состоит из двух этапов: отделение корней - отыскание приближенного значения корня или содержащего его отрезка;уточнение приближенных корней - доведение их до заданной степени точности.Процесс отделения корней начинается с установления знаков функции f(x) в граничных x = a и x = b точках области ее существования.

 


3.тоже подобная


1) var a,b,c,D,x1,x2:real;
begin
write('Введите коэффициенты a, b, c: ' );
readln(a,b,c);
D:= b*b-4*a*c;
if D>0 then
begin
x1:=(-b-sqrt(D))/2/a;
x2:=(-b+sqrt(D))/2/a;
writeln('Два корня: ',x1,' и ',x2)
end;
if D=0 then
begin
x1:=-b/2/a;
writeln('Один корень: ',x1)
end;
if D<0 then writeln('Корней нет')
end.
2) var
a, b, c: real;
procedure sq (a,b,c: real);
var d, x1, x2: real;
begin
d := b * b - 4 * a * c;
if d >= 0 then begin
x1 := (-b + sqrt (d)) / (2 * a);
x2 := (-b - sqrt (d)) / (2 * a);
if x1 = x2 then
writeln ('x1 = ', x1:6:2)
else
writeln ('x1 = ', x1:6:2, '; x2 = ', x2:6:2)
end
else
writeln ('Корней нет!')
end;
begin

write ('a = '); readln (a);
write ('b = '); readln (b);
write ('c = '); readln (c);
writeln (a:6:2,'x*x + ',b:6:2,'x + ',c:6:2,' = 0');
sq (a, b, c);
readln
end.


Билет 10.

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

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

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

Работа с файлами:

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

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

1.Создание (описание) файловой переменной.

2.Связывание этой переменной с конкретным файлом на диске или с устройством ввода-вывода (экран, клавиатура, принтер и т.п.).

3.Открытие файла для записи либо чтения.

4.Действия с файлом: чтение либо запись.

5.Закрытие файла.

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

Турбо Паскаль поддерживает три файловых типа: текстовые файлы; типизированные файлы; нетипизированные файлы.

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

file of тип - типизированный файл (указан тип компоненты);

text - текстовый файл;

file - нетипизированный файл.

2.

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

Числа с фиксированной точкой изображаются десятичным числом с дробной частью, которая может быть и нулевой. Например, 27.9, 5.00

Такие большие числа, как 137.000.000, можно записать в формате с десятичным порядком: 1.37·108. В Turbo Pascal для подобных чисел принята форма записи mEp, где m - мантисса; E - признак записи числа с десятичным порядком; p - показатель степени числа 10. Такое представление чисел и называется форматом с плавающей точкой. Число 1.37·108 в этом формате запишется так: 1.37Е+8.

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

Пусть слово состоит из 2 байт, два слова – это 4 байта или 32 бита.

Нормализированное число одинарной точности, представленное в формате с плавающей точкой, записывается в память следующим образом: знак числа – в бите 15 первого слова (0 – для положительных и 1 – для отрицательных чисел); порядок размещается в битах 7-14 первого слова, а мантисса занимает остальные 23 бита в двух словах (с 0 по 6 бит первого слова и все биты второго слова). Нормализированное число двойной точности записывается в четыре слова памяти и отличается от представления чисел с одинарной точностью только тем, что продолжение мантиссы размещается в следующих за первым словом трех последовательных словах памяти, а всего под мантиссу в этом случае отводится 55 бит.

Билет 11

1 .Рассмотрим более детально построение программы.
Она начинается со слова program. Слово programзарезервировано в Паскале, т.е. не может использоваться ни в каких других целях, лишь для начала программы.После служебного слова programзаписывается имя программы. В конце первой строки, после имени программы стоит ";" - точка с запятой. Этот знак указывает на то, что некоторая инструкция законченаи за ней будет записана следующая инструкция. Следующая строка программы:

var

a, b, c : integer;

В этой строке обязательно указываются все переменные, участвующие в программе и их типы.Слово var - это сокращение от слова variable (переменная) и является так же, как и слово program, зарезервированным словом. После него записываются именапеременных - идентификаторы, в нашем примере: a, b, c. Они записываются через запятую. После имен переменных стоит ":" - двоеточие, а затем записано служебное, зарезервированное, слово integer. Integer (целый) указывает тип значений, которые принимают переменные - целые числа (..., -4, -3, -2, -1, 0, 1, 2, 3, 4, 5,...).

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

В этом разделе последовательно записываются команды, операторы, которые разделяются ";" - точкой с запятой. Они будут выполняться компьютером.

Программа заканчивается служебным словом end, после которого стоит точка. Она является обязательной во всех паскалевских программах. Точка оповещает о конце текста программы.

Стандартные типы данных.

К стандартным относятся целые, действительные, символьный и адресный типы.

Целыетипы определяют константы,переменные и функции,значения

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

от деления. Знаки этих операций:+,-,*,div,mod.

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

Символьныйтип (Char) определяет упорядоченную совокупность символов . Значение символьной переменной или константы - это один символ из допустимого набора.

Символьная константа может записываться в тексте программы тремя способами:

-как один символ, заключенный в апострофы.

-с помощью конструкции вида #K, где K - код соответствущего симво-

ла, при этом значение K должно находиться в пределах 0..255.

-с помощью конструкции вида ^C, где C - код соответствущего управ-

ляющего символа, при этом значениеC должно быть на 64 больше

кода управляющего символа.

Адресныйтип (Pointer) определяет переменные, которые могут содер-

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

адреса требуются два слова (4 байта), одно из них определяет сегмент,

второе - смещение.

2.При десятичной записи приближенного значения числа записывают только верные цифры.При наличии одной верной цифры допустимо принимать относительную ошибку числа близкой к 10%, двух – около 1%, трех – около 0,1% и т.д.

Значащими цифрами числа называются все цифры в его записи, начиная с первой ненулевой слева.

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

 

12. 1.Массивы - это совокупности однотипных элементов. Характеризуются они следующим:

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

- число компонент массива определяется при его описании и в дальнейшем не меняется.

Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый элемент. Тип индекса может быть только порядковым (кроме longint). Чаще всего используется интервальный тип (диапазон).

Var X1:[1..10,1..5] of integer;

Этот оператор описывает двухмерный массив, который можно представить себе как таблицу, которая состоит из 10 строк и 5 столбцов. Обычно используется именно такая форма объявления многомерных массивов. Как и в одномерных массивах, элементы и индексы могут иметь любой тип. Доступ к значениям элементов многомерного массива осуществляется через индексы, которые перечисляются через запятую. Например, X1[3,4] – значение элемента, лежащего на пересечении третьей строки и четвертого столбца.

Можно определить не непосредственно переменные типа многомерных массивов, а сначала определить соответствующий тип, а потом – переменные или типизированные константы данного типа как у одномерных массивов.

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

Type

colors = (white, red, black) ;

Const

ColStr : array [colors] of String [5] =('white', 'red', 'blak');

Vector : array [1..5] of Byte = (0,0,0,0,0);

При объявлении массива символов можно использовать то обстоятельство, что все символьные массивы и строки в Object Pascal хранятся в упакованном формате, поэтому в качестве значения массива-константы типа char допускается задание символьной строки соответствующей длины. Два следующих объявления идентичны:

Const

Digit : array [0..9] of Char =('0', '1', '2', ' 3 ', ' 4', '5', '6', '7', '8', '9');

DigChr: array [0..9] of Char = '0123456789';

Формальный параметр, описанный с помощью синтаксиса: array of T , является открытым параметром-массивом. T должно быть идентификатором типа, а фактический параметр должен быть переменной типа T, или массивом, типом элементов которого является T.

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

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

При применении к открытому параметру-массиву стандартнаяфункция Low возвращает 0, стандартная функция High возвращает индекс последнего элемента в фактическом параметре-массиве, а функция SizeOf возвращает размер фактического параметра-массива.

2. Задача Коши — одна из основных задач теории дифференциальных уравнений (обыкновенных и с частными производными); состоит в нахождении решения (интеграла) дифференциального уравнения, удовлетворяющего так называемым начальным условиям (начальным данным).

Задача Коши обычно возникает при анализе процессов, определяемых дифференциальным законом эволюции и начальным состоянием (математическим выражением которых и являются уравнение и начальное условие). Этим мотивируется терминология и выбор обозначений: начальные данные задаются при t=0, а решение отыскивается при t>0.

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

Говорят, что задача Коши имеет единственное решение, если она имеет решение y=f(x) и никакое другое решение не отвечает интегральной кривой, которая в сколь угодно малой выколотой окрестности точки (x0,y0) имеет поле направлений, совпадающее с полем направлений y=f(x). Точка (x0,y0) задаёт начальные условия.

 

Методы Рунге-Кутты — важное семейство численных алгоритмов решения обыкновенных дифференциальных уравнений и их систем. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.

Вновь рассмотрим дифференциальное уравнение

(1)

с начальным условием

Классический метод Рунге-Кутта 4-го порядка описывается следующей системой пяти равенств:

(5)

где

Строго говоря, существует не один, а группа методов Рунге-Кутта, отличающихся друг от друга порядком, т.е. количеством параметров . В данном случае мы имеем метод 4-го порядка, который является одним из наиболее применяемых на практике, так как обеспечивает высокую точность и в то же время отличается сравнительной простотой. Поэтому в большинстве случаев он упоминается в литературе просто как «метод Рунге-Кутта» без указания его порядка.

 

Билет 13.

1.Строки в Паскале – это данные типа string. Они используются для хранения последовательностей символов. В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки.Если заранее известно, что длина строки будет меньше 255 символов, то программист может сам задать максимальную длину строки.Длина строки хранится в первом ее байте, индекс которого равен 0.Существует понятие пустой строки, т.е. строки, которая не имеет элементов. Пустая строка обозначается двумя рядом стоящими апострофами.

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

Строки можно присваивать друг другу. Если максимальная длина переменной слева меньше длины присваиваемой строки, то лишние символы справа отбрасываются.Строки можно объединять с помощью операции конкатенации, которая обозначается знаком +. Строки можно сравнивать друг с другом с помощью операций отношения. При сравнении строки рассматриваются посимвольно слева направо, при этом сравниваются коды соответствующих пар символов. Строки равны, если они имеют одинаковую длину и посимвольно эквивалентны. В строках разной длины существующий символ всегда больше соответствующего ему отсутствующего символа. Меньшей будет та строка, у которой меньше код первого несовпадающего символа (вне зависимости от максимальных и текущих длин сравниваемых строк).Имя строки может использоваться в процедурах ввода-вывода. При вводе в строку считывается из входного потока количество символов, равное длине строки или меньшее, если символ перевода строки (который вводится нажатием клавиши Enter) встретится раньше. При выводе под строку отводится количество позиций, равное ее фактической длине. Можно осуществлять коррекцию любого символа строковой переменной, для чего в соответствующем операторе достаточно указать имя переменной типа string, вслед за которым в квадратных скобках задается номер ее элемента .Нулевой элемент строковой переменной можно корректировать. При этом будет изменяться текущая длина строки.

2.Численное интегрирование— вычисление значения определённого интеграла (как правило, приближённое). Под численным интегрированием понимают набор численных методов для нахождения значения определённого интеграла.

Численное интегрирование применяется, когда:

1.Сама подынтегральная функция не задана аналитически. Например, она представлена в виде таблицы (массива) значений в узлах некоторой расчётной сетки.

2.Аналитическое представление подынтегральной функции известно, но её первообразная не выражается через аналитические функции. Например, .

Квадратурные формулы

Формулы прямоугольников являются наиболее простыми квадратурными формулами.

1. (левых пряоугольников)

2. (правых прямоугольников)

3. (центральных пряоугольников)

 

Формула трапеций.

Формула Симпсона .

Формула Ньютона.

Билет14.

1.Если в программе возникает необходимость неоднократного выполнения некоторых операторов, то для этого используются операторы повтора(цикла). В языке Паскаль различают три вида операторов цикла: цикл с предусловием (while), цикл с постусловием (repeat) и цикл с параметром (for).

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

Оператор цикла с параметром имеет два варианта записи:

1)for<имя переменной> := <начальное значение>to<конечное значение>do

<тело цикла>

2)for<имя переменной> := <начальное значение>downto<конечное значение>do

<тело цикла>

Если число повторений заранее неизвестно, а задано лишь условие его повторения (или окончания), то используются операторы while и repeat.Оператор While часто называют оператором цикла с предусловием. Так как проверка условия выполнения цикла производится в самом начале оператора.

2.Интерполяцио́нный многочле́н Лагра́нжа—многочлен минимальной степени, принимающий данные значения в данном наборе точек. Для n+1 пар чисел (x0,y0), (x1,y1),…, (xn,yn), где все xj различны, существует единственный многочлен L(x) степени не более n, для которого L(xj) = yj.

В простейшем случае (n=1) — это линейный многочлен, график которого — прямая, проходящая через две заданные точки.

Лагранж предложил способ вычисления таких многочленов:

где базисные полиномы определяются по формуле:

li(x) обладают следующими свойствами:

·являются многочленами степени n

·li(xi) = 1

·li(xj) = 0 при j ≠ i

Отсюда следует, что L(x), как линейная комбинация li(x), может иметь степень не больше n, и L(xi) = yi.

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

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

15.

1)

2) Основная идея метода. Может оказаться, что система Ax=f (1) имеет единственное решение, хотя какой-либо из угловых миноров матрицы А равен нулю. В этом случае обычный метод Гаусса оказывается непригодным, но может быть применен метод Гаусса с выбором главного элемента. Основная идея метода состоит в том, чтобы на очередном шаге исключать не следующее по номеру неизвестное, а то неизвестное, коэффициент при котором является наибольшим по модулю. Таким образом, в качестве ведущего элемента здесь выбирается главный, т.е. наибольший по модулю элемент. Тем самым, если , то в процессе вычислений не будет происходить деление на нуль.

Процесс решения системы линейных уравнений по методу Гаусса состоит из 2х этапов:

Прямой ход

Система приводится к треугольному виду.

1. Предполагаем, что . Тогда первое уравнение системы делим на коэффициент , в результате получаем уравнение Затем из каждого из оставшихся уравнений вычитается первое, умноженное на соответствующий коэффициент . В результате система преобразуются к виду:

(2)

 

2. В предположении, что , делим второе уравнение на коэффициент и исключаем неизвестное из всех последующих уравнений и т.д.

3. Получаем систему уравнений с треугольной матрицей:

Обратный ход

1. Из го уравнения системы (3) определяем

2. Из го - определяем и т.д.

 

16.

1) Вычисляется значение логического выражения, если вычисленное значение истинно, то выполняется оператор OP1в противном случаеOP2. После выполнения операторов OP1илиOP2выполняется оператор, следующий за условным оператором. Пример записи условного операторы: If (x<0) and (x>-1) then y:=cos(x) else y:=sin(x);

Оператор Case заміняє велику кількість написань умови If.Він використовується для того, щоб скоротити час на написання великої кількості умови if, а також для того, щоб програмний код виглядав красивіше. Наприклад:

fori:=1 tolength(a) do

casea[i] of

'a','A','e','E','i','I','o','O': begink:=k+1; end;

Він заміняє дії

If a[i]:=a then k:=k+1; If a[i]:=e then k:=k+1; If a[i]:=i then k:=k+1;

If a[i]:=A then k:=k+1; If a[i]:=E then k:=k+1; If a[i]:=I then k:=k+1;

Дана програма перевіряє наявність у строках букв російського алфавіту (програма 17 варіанту). Наскільки коротшим і красивішим став запис програми.

2) Модуль Graph содержит богатейший набор графических процедур и функций: проведение линий, работа с цветом, вызов графических примитивов, работа с текстом в графическом режиме, закраска замкнутых областей и т.п. Экран в графическом режиме рассматривается как набор пикселей. В нем используются некоторые стандартне действия и команды. Использование detect позволяет определить тип графического драйвера автоматически. Запуск графического режима выполняется с помощью процедуры initgraph. После этого на экране должно появиться окно, «работающее» в графическом режиме. Процедура setcolor устанавливает цвет, которым в дальнейшем будут выводиться различные примитивы. Процедура line выводит линию. Первые два числа – это одна координата, а третье и четвертое число – другая. Процедура putpixel рисует точки. Помимо координаты она принимает третий аргумент – цвет точки. И другие

17.

1) Самой распространенной структурой, реализованной практически во всех языках программирования, является массив. Массивы состоят из ограниченного числа компонент, причем все компоненты массива имеют один и тот же тип, называемый базовым. Структура массива всегда однородна. Массив может состоять из элементов типа integer , real или char , либо других однотипных элементов. Из этого, правда, не следует делать вывод, что компоненты массива могут иметь только скалярный тип. Другая особенность массива состоит в том, что к любой его компоненте можно обращаться произвольным образом. Что это значит? Программа может сразу получить нужный ей элемент по его порядковому номеру (индексу).

Удаление элемента

Добавления элемента

 

 

Циклический сдвиг

For i:=1 to n do

P:=a[1];

For i:=1 to n-1 do

A[i]:=a[i+1];

A[n]:=p;

End.

2) Метод конечных разностей — численный метод решения дифференциальных уравнений, основанный на замене производных разностными схемами. Является сеточным методом. Для решения эллиптической задачи методом конечных разностей на расчётной области строится сетка, затем выбирается разностная схема и для каждого узла сетки записывается разностное уравнение (аналог исходного уравнения, но с использованием разностной схемы), затем производится учёт краевых условий (для краевых условий второго и третьего рода так же строится некоторая разностная схема). Получается система линейных алгебраических уравнений, решая которую в ответе получают приближенные значения решения в узлах. Главной проблемой метода является построение правильной разностной схемы, которая будет сходится к решению. Построение схемы выполняется исходя из свойств исходного дифференциального оператора.

Пример: Пусть дана одномерная эллиптическая задача:



Построим сетку с постоянным шагом . Для аппроксимации выберем трёхточечный шаблон, то есть для аппроксимации производной в точке будем использовать точки . Тогда разностное уравнение будет выглядеть следующим образом:


Учитывая краевые условия, система линейных уравнений вида , для нахождения решения, будет выглядеть следующим образом:

.

 

Билет №18

 

1 . Рассмотрим многомерные массивы в Паскале. Например, двухмерный массив можно объявить таким образом:

Var X1: array [1..10] of array [1..5] of integer;

Этот оператор описывает двухмерный массив, который можно представить себе как таблицу, которая состоит из 10 строк и 5 столбцов. Также это можно объявить более компактно:

VarX1:[1..10,1..5] ofinteger;

Обычно используется именно такая форма объявления многомерных массивов. Как и в одномерных массивах, элементы и индексы могут иметь любой тип. Доступ к значениям элементов многомерного массива осуществляется через индексы, которые перечисляются через запятую. Например, X1[3,4] – значение элемента, лежащего на пересечении третьей строки и четвертого столбца.

 

Передача параметров-массивов в процедуры.

 

- если перед параметром указано var , то значение параметра будет меняться, если нет - не будет.
Чтобы передать массив лучше перед разделом описания переменных объявить тип. Например:

 
  Type mas = array [1..10] of byte;
 

А затем в параметрах процедуры использовать этот тип:

 
  procedure pr(a: integer; var b: mas)
2 .     Все эти методы котрые мы делали на парах, я так понял   3 . (только повозиться и вместо звёзочек и доветочий, написать каждую букву алфавита и каждую цифру) Дана строка. Определить, сколько в ней символов: - звездочка; - точка с запятой; - двоеточие. ответить вс, 02/24/2013 - 18:21 — Гость Программа uses crt;   var stroka: string; z, d, tsz, i: integer;   begin write('Vvedite stroku: '); readln(stroka); z := 0; d := 0; tsz := 0; for i := 1 to length(stroka) do case stroka[i] of '*': z := z + 1; ':': d := d + 1; ';': tsz := tsz + 1; end; writeln('Kolichestvo (* : ;) sootvetstvenno: ', z, ' ', d, ' ', tsz); end.  
 

 

 

 

Билет №19

 

В языке Паскаль имеется два вида подпрограмм - процедуры и функции.

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

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

 

Описание и вызов процедур и функций

Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.

Формат описания процедуры имеет вид:

procedure имя процедуры (формальные параметры);

раздел описаний процедуры

begin

 

исполняемая часть процедуры

 

end;

Формат описания функции:

function имя функции (формальные параметры):тип результата;

раздел описаний функции

begin

 

исполняемая часть функции

 

end;

Формальные параметры в заголовке процедур и функций записываются в виде:

var имя праметра: имя типа

и отделяются друг от друга точкой с запятой. Ключевое слово var может отсутствовать (об этом далее). Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type.Список формальных параметров может отсутствовать.

Вызов процедуры производится оператором, имеющим следующий формат:

имя процедуры(список фактических параметров);

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

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

Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду:

имя функции := результат;

При вызове процедур и функций необходимо соблюдать следущие правила:

количество фактических параметров должно совпадать с количеством формальных;

соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.

Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.

var x,y,m,n: integer;

 

procedure MaxNumber(a,b: integer; var max: integer);

begin

if a>b then max:=a else max:=b;

end;

 

begin

write('Введите x,y ');

readln(x,y);

MaxNumber(x,y,m);

MaxNumber(2,x+y,n);

writeln('m=',m,'n=',n);

end.

Аналогичную задачу, но уже с использованием функций, можно решить так:

var x,y,m,n: integer;

 

function MaxNumber(a,b: integer): integer;

var max: integer;

begin

if a>b then max:=a else max:=b;

MaxNumber := max;

end;

 

begin

write('Введите x,y ');

readln(x,y);

m := MaxNumber(x,y);

n := MaxNumber(2,x+y);

writeln('m=',m,'n=',n);

end.

Передача

Параметры служат для обмена данными между вызывающим блоком и подпрограммой. Передаваемые в подпрограмму данные записываются в отдельную область памяти, называемую стеком, доступную только для данной подпрограммы. В связи с этим, данные из стека не могут быть доступны вызывающей программе. Чтобы данные, которые обрабатывала подпрограмма, могли быть использованы в вызывающей программе, они остаются в области памяти, отведенной вызывающей программе, а в стек записываются их адреса.

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

· Параметры-значения;

· Параметры-переменные;

· Параметры-константы.

 

Параметры-значения переписываются в стек целиком. Такой способ позволяет использовать в качестве фактического параметра не только переменную, но и константу. Параметры-значения используются в качестве входных данных подпрограммы, при обращении к которой фактические параметры просто передают свое значение формальным переменным и больше не изменяются. Использование таких параметров особенно характерно для подпрограмм-функций.

При использовании параметров-переменных, в стек записывается не значение переменной, а адрес места памяти, которое под нее отведено. В отличие от параметров-значений, перед описанием формальных параметров-переменных в заголовке подпрограммы ставится служебное слово var. С помощью параметров-переменных в вызывающий блок можно вернуть не одно вычисленное значение, а несколько. Т.о. параметры-переменные могут использоваться и в качестве входных данных, так и в качестве выходных.

В связи с описанными особенностями параметров-переменных, фактические параметры-переменные, в отличие от параметров-значений (см.п.5.5., таблица 5.1.), не могут быть константами или выражениями.

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

Таким образом, параметры-значения и параметры-константы используются только для передачи конкретных значений в подпрограмму. При этом основная программа защищена от опасности случайной порчи значений каких-нибудь переменных (побочных эффектов), так как из подпрограммы переданные значения не возвращаются. В случае, если нужно вернуть из подпрограммы рассчитанные в ней несколько значений, необходимо использовать параметры-переменные, значения таких параметров в вызывающую программу возвращаются. С помощью параметров-переменных можно одновременно передавать значения в подпрограмму и возвращать обратно.


 

Билет №20

1 Оператор присваивания - основной оператор любого языка программирования. Общая форма записи оператора:

имя величины := выражение

Например, V:=A; или V:=A+1;

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

Как только в программе встречается переменная, для неё в памяти отводится место. Оператор присваивания помещает значение выражения в место, отведённое переменной.

Если в процессе выполнения программы встречается переприсваивание (т.е. та же самая переменная принимает другое значение), то старое значение переменной стирается, на свободное место записывается новое значение. Команда присваивания позволяет лучше понять смысл слова переменная (т.е. меняющая своё значение по ходу программы).

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

 

Процедура BREAK применяется для досрочного прекращения циклов WHILE, REPEAT…UNTIL и FOR.

Процедура EXIT завершает работу своего программного блока. Если EXIT вызывается внутри процедуры или функции, то их работа завершается. Если EXIT вызывается в основном блоке программы, то это приводит к ее завершению.

Процедура HALT, или более полно HALT(n), завершает работу программы с кодом завершения n. Этот код впоследствии может быть проанализирован, в частности командой IF ERRORLEVEL в среде MS-DOS. Значение ERRORLEVEL после остановки программы будет равно значению n. Вызов процедуры HALT без параметра эквивалентен вызову HALT(0).

 

2

для метода средних прямоугольников:

.

Общая формула Симпсона (параболическая формула)

Пусть n=2m есть четное число и yi=f(xi) (i=0 1 2...n) - значения функции y=f(x) для равноотстоящих точек а=x0 x1 ... xn=b с шагом

Квадратурная формула Чебышева

 

 

 



Просмотров 858

Эта страница нарушает авторские права




allrefrs.ru - 2023 год. Все права принадлежат их авторам!