- •Цель и задачи курсовой работы
- •1.Указания по оформлению курсовой работы
- •2.Содержание курсовой работы
- •3.Первый раздел – циклические вычислительные процессы с использованием одномерного массива данных. Разработка блок-схем алгоритмов и составление программ на алгоритмическом языке Turbo Pascal.
- •4.Второй раздел – поиск и уточнение корней алгебраических и трансцендентных уравнений методом последовательного приближения
- •5. Третий раздел– программирование с использованием компьютерной графики.
- •6.Четвертый раздел - программное обеспечение для решения задач с двумерными массивами данных в среде Windows c использованием Delphi
- •7.Пятый раздел- прямая равноугольная коническая проекция (проекция Ламберта)
- •Литература
- •Приложение а
- •Курсовая работа
3.Первый раздел – циклические вычислительные процессы с использованием одномерного массива данных. Разработка блок-схем алгоритмов и составление программ на алгоритмическом языке Turbo Pascal.
Составить алгоритм и программу на языке Turbo Pascal для решения задачи по обработке одномерного массива. Размерность массива задается пользователем в диапазоне от 5 до 20.
Варианты задания приведены в таблице 3.1.
Таблица 3.1
Вариант |
Содержание задания |
01 |
Подсчитать количество элементов, не больших заданного числа А |
02 |
Подсчитать количество элементов, не меньших заданного числа А |
03 |
Найти номер элемента с максимальным значением |
04 |
Найти номер элемента с минимальным значением |
05 |
Найти минимальное число |
06 |
Найти максимальное число |
07 |
Вычислить сумму элементов |
08 |
Вычислить произведение элементов |
09 |
Вычислить сумму четных элементов |
10 |
Вычислить произведение четных элементов |
11 |
Вычислить сумму нечетных элементов |
12 |
Вычислить произведение нечетных элементов |
13 |
Подсчитать количество отрицательных элементов |
14 |
Подсчитать количество положительных элементов |
15 |
Подсчитать количество элементов, равных нулю |
16 |
Вычислить сумму отрицательных элементов |
17 |
Вычислить сумму положительных элементов |
18 |
Вычислить произведение отрицательных элементов |
19 |
Вычислить произведение положительных элементов |
20 |
Вычислить произведение положительных элементов, не равных нулю |
21 |
Вычислить сумму первых пяти элементов |
22 |
Вычислить сумму последних пяти элементов |
23 |
Вычислить произведение первых пяти элементов |
24 |
Вычислить произведение последних пяти элементов |
25 |
Вычислить сумму элементов, меньших заданного числа А |
26 |
Вычислить произведение элементов, меньших заданного числа А |
27 |
Вычислить сумму элементов, больших заданного числа А |
28 |
Вычислить произведение элементов, больших заданного числа А |
29 |
Найти номер элемента, равного заданному числу А |
30 |
Найти номера элементов, равных нулю |
4.Второй раздел – поиск и уточнение корней алгебраических и трансцендентных уравнений методом последовательного приближения
Известно, что не всякое уравнение может быть решено точно. Прежде всего это относится к большинству трансцендентных уравнений, т. е. уравнений, где неизвестный Х находится под знаком трансцендентной функции (трансцендентные функции – это функции типа ех , sin x, cos x и т. д., трансцендентные числа – π – 3,14…, 2√2, т. е. числа, не удовлетворяющие никакому алгебраическому уравнению с целыми коэффициентами).
Методы решения линейных и квадратных уравнений были известны еще древним грекам. Решение же уравнений 3-го, 4- го порядка были получены итальянскими математиками Кордано, Феррари и др. в эпоху Возрождения в XV веке.
Поиск способов решения уравнений высших порядков продолжалось примерно 300 лет. И только в 20-х годах XIX-го столетия Норвежский математик Абель доказал, что уравнения высших порядков неразрешимы в области радикалов, т.е. решение подобных уравнений невозможно выразить через коэффициенты с помощью арифметических действий и извлечения корней.
В сложных алгебраических и трансцендентных уравнениях трудно найти корни уравнений точно, особенно когда эти уравнения содержат коэффициенты, значения которых определены приблизительно.
Доказано, что нельзя построить формулу, по которой можно было бы решить произвольное алгебраическое уравнение выше четвертой степени.
Точное решение уравнений не является безусловно необходимым. Численные методы являются приближенными методами нахождения и уточнения корней алгебраических и трансцендентных уравнений.
Большинство приближенных способов решения уравнений представляют собой, по существу, способы уточнения корней, т. е. для их применения необходимо знание приближенных значений корней уравнения.
Любое число, обращающее функцию f(x) в ноль называется нулем функции, или же корнем уравнения.
Приближенные методы нахождения действительных корней состоят из двух этапов:
1 этап – отделение корней. Так называется процесс определения как можно более узких промежутков, где имеется только один корень уравнения.
2 этап – в нем задается степень точности решения уравнения и уточняется значение корней.
Из курса математики известно, что если функция f(x) непрерывна в отрезке [а, b] и знаки функции на концах заданного отрезка различны, т.е. (f(a)•f(b)<0) , то внутри данной области находится по меньшей мере один корень уравнения.
Приближенные значения корней уравнения можно найти графическим, табличным способами, а также методом вычислений.
Графический метод.
Допустим, задана функция f(x)=0 и эта функция имеет вид
→ x
– 1= sin
x.
Принимаем у1 = sin x, у2 = х – 1.
Построим график:
Рис. 4.1.
Точка пересечения двух функций является корнем уравнения.
х=2
Рассмотрим график функции х2-sin x-1 = 0:
у1 =х2-1; у2 = sin x
Рис. 4.2.
Из рисунка 4.2 видно, что корень находится в интервале [1,2].
Это и есть графический способ обнаружения интервала.
Табличный способ поиска интервала корня уравнения х2-sin x-1 = 0
х |
-∞ |
0 |
1 |
2 |
F(x) |
- |
- |
- |
+ |
Таким образом интервал [1,2] соответствует интервалу где имеется корень уравнения.
Метод итерации (последовательного приближения).
Одним из наиболее важных способов численного решения уравнений является метод итерации.
Сущность метода заключается в следующем:
Пусть дано уравнение:
f(x)=0 (1),
где f(x) – непрерывная функция и требуется определить его вещественные корни.
После преобразования уравнения по предыдущей методике (анализ функции и получение рекуррентной формулы) получим:
х=φ(х) (2)
Выберем каким-нибудь способом грубое начальное значение корня в интервале [a,b] и, подставив в правую часть уравнения (2), получим:
х1= φ(х0)
х2= φ(х1) . . . . . хп= φ(хп-1)
Отличительной особенностью метода итерации является то, что каждое приближение используется как исходная точка для нахождения (вычисления) нового приближения до выполнения условий точности.
Замечание. Если абсолютное значение производной функции |f ’(x) |<1 , то функция сходящаяся. В противном случае имеет место расходящийся процесс.
Проверка сходимости рекуррентной формулы.
Пусть задана функция f(x)=0.
Получена некоторая рекуррентная формула x=f(x).
Рекуррентная формула сходится, если |f ’(x) |<1.
Рекомендации по анализу функции.
Пусть задана функция f(x) и интервал [a,b] найден любым способом.
Продифференцируем исходную функцию f(x) и получим f ’(x).
Проверяем знак производной в заданном отрезке и, сужая интервал [a,b], добиваемся того, чтобы знак производной функции был постоянным.
Определяем максимальное значение А= f ’(x).
Выбираем некоторое положительное число М>А (обычно М≥2А).
Составляем сходящуюся рекуррентную формулу в виде
.
Если F(х)<0, то знак (+), в противном случае – (-).
Задание. Итерационный цикл.
1. Вычислить табличные значения функции f(x) на заданном интервале.
2. Построить график зависимости y=f(x).
3. Найти корни уравнения аналитически и с помощью программы.
4. Анализ (выводы).
Таблица 4.1
Задания ко второму разделу
№ |
Вид функции |
Корни уравнения, полученные методами: |
|
итерации |
половинного деления. |
||
1 |
x:=1/(cos(2*x*pi/180)+5.06) |
0,165 |
x=0,165 |
2 |
x:=0.6*exp(x*ln(1.5))/2.25 |
0,3013 |
x=0,301 |
3 |
x:=(x*x+0.35)/2 |
0,1938 1,795 |
x1=0,194 x2=1,806 |
4 |
x:=exp(1/3*ln(sqrt(x)+0.5)) |
1,1644955 |
x=1,165 |
5 |
x:=(100-exp(x*ln(10)))/2 |
2,02997 |
x=1,982 |
6 |
x:=(exp(x)-x*x-20)/2 |
3,712997 |
x=3,72 |
7 |
x:=5.09-exp(1/3*ln(x)) |
3,5627 |
x=3,563 |
8 |
x:=sin(x*pi/180)-0.25 |
-0,2544 |
x=-0,254 |
9 |
x:=sqrt(ln(1+x*x)+9.75) |
3,51295 |
x=3,513 |
10 |
x:=(sin(x*pi/180)+3.2)/3 |
1,07291 |
x=1,073 |
11 |
x:=(cos(x*pi/180)+1.5)/3 |
0,833298 |
x=0,833 |
12 |
x:=(exp(x)+2*x*x*x)/2 |
-1,053539 |
x=-1,076 |
13 |
x:=(x*x*x-5)/9 |
-2,50844 0,576884 3,25868 |
x1=-2,670 x2=-0,577 x3=3,247 |
14 |
x:=x*x*x*x-2*x*x*x-1 |
-0,57574 2,270159 |
x1=-0,557 x2=2,277 |
15 |
x:=ln(x*x*x-5.5) |
2,7861 4,31647 |
x1=2,799 x2=4,316 |
16 |
x:=ln(2*x+2.2) |
-0,916291 1,7352887 |
x1=-0,896 x2=1,735 |
17 |
x:=(4*x*x*x-2)/5 |
-6,744 -0,5 1,3576 |
x1=-0,781 x2=-0,5 x3=1,281 |
Примечание: корни уравнений искать в пределах [–5; +5], за исключением тех функций, в которых есть тригонометрические, логарифмические функции и квадратные корни, в них предел поиска [0; +5].
Рассмотрим пример.
Задана
функция F(X)=Х5-3Х+1,
где
,
определим корни уравнения. Согласно
приведенной методике определим знаки
функции в данном отрезке.
Таблица 4.2
Х |
Знак F(X) |
Х |
Знак F(X) |
Примечание |
- |
- |
+ |
+ |
|
-3 |
- |
+3 |
+ |
F(-3)*F(+3)<0 |
-2 |
- |
+2 |
+ |
F(-2)*F(+2)<0 |
-1 |
+ |
+1 |
- |
F(-1)*F(+1)<0 |
0 |
+ |
|
|
F(0)*F(+1)<0 |
Д
ВВОДИТЕ
Х0,Хk,dХ
-2
2 0.2
x=
-2.0 y=
-25.00
x=
-1.8 y= -12.50
x=
-1.6 y= -4.69
x=
-1.4 y= -0.18
x=
-1.2 y= 2.11
x=
-1.0 y= 3.00
x=
-0.8 y= 3.07
x=
-0.6 y= 2.72
x=
-0.4 y= 2.19
x=
-0.2 y= 1.60
x=
0.0 y= 1.00
x=
0.2 y= 0.40
x=
0.4 y= -0.19
x=
0.6 y= -0.72
x=
0.8 y= -1.07
x=
1.0 y= -1.00
x=
1.2 y= -0.11
x=
1.4 y= 2.18
x=
1.6 y= 6.69
x=
1.8 y= 14.50
Программа и результаты вычисления приведены ниже.
Program KORNI;
Uses crt;
Var x0,y,x,xk,dx:real;
Begin
Writeln('Vvod x0,xk,dx');
read(x0,xk,dx);
x:=x0;
repeat
y:=x*x*x*x*x-3*x+1;
Writeln('x=',x:2:1, ' y=',y:2:2);
x:=x+dx;
until (xk+dx-x)<0;
Readkey;
End.
По результатам вычисления выполним пп. 2,3,4 методики. Таким образом, в отрезке -2, +2 имеются 3 корня заданного уравнения. Интервалы корней уравнения: x= (-1.4, -1.2); (0.2, 0.4) и (1.2, 1.4 ).
Чтобы исключить ошибки, по данным таблицы построим график функции в EXCEL.
Рис. 4.3. График функции F(x)
П
рограмма:
Program EPSILON3;
Uses crt;
Var x0,y,x,e:real;
Begin
Writeln('Vvod x0,e');
read(x0,e);
x:=x0;
repeat
y:=x;
x:=(x*x*x*x*x/3)+(1/3);
until abs(y-x)<=e;
Writeln('korni x= ',x:2:6);
Readkey;
End.
Теперь, задавая начальные и конечные значения интервала, например, [0, 1], уточним корень уравнения по программе.
Рис.4.4. Алгоритм уточнения
корня уравнения
Program PROVERKA;
Uses crt;
const n=3;
Var y:real;
i:integer;
x:array[1..n]of real;
Begin
Writeln('Vvod xi');
for i:=1 to n do Begin
read(x[i]);
Y:=x[i]*x[i]*x[i]*x[i]*x[i]-3*x[i]+1;
Writeln('x= ',x[i]:2:8, ' y= ',y:2:8);
End;
Readkey;
End.
Таблица 4.3
Заданная точность, Е |
Корень уравнения, Х |
Значение функции F(X) |
0.1 |
0.33470508 |
0.000085 |
0.001 |
0.33473353 |
0.0000018 |
0.00001 |
0.33473413 |
0.00000004 |
Из таблицы 4.4 видно, что значение функции в интервале [0, 1] при корне уравнения 0.33473413 практически равно нулю, что и требовалось доказать! Таким образом, последовательное приближение очевидно.
Метод Рыбакова
В тех случаях, когда требуется найти все корни уравнения, можно пользоваться методом Рыбакова, который является модификацией метода Ньютона.
Суть метода заключается в следующем.
Производная функции F(xi) заменяется некоторым числом М, причем М≥F’(ε), где ε – значение Х на отрезке [a,b], при котором F’(x) максимальна.
При этом сходимость функции не нарушается, но замедляется. Метод Рыбакова удобен для поиска всех корней уравнения на отрезке [a,b].
Алгоритм поиска корней:
Задается начальное значение корня уравнения х=х0=а
Вычисляется приближение по формуле xi+1=xi+
Проверяем условие xi+1<b. Если условие выполняется, то на заданном отрезке [a,b] найдены все корни. Иначе проверяется условие точности.
Если условие |xi+1-xi|>ε выполняется, то значение xi+1 выводится в качестве корня уравнения и осуществляется поиск следующего корня, для чего:
задается начальное приближение к очередному корню уравнения х0=хi+ ε и если х0<b, то переходим к пункту 2.
если же х0≥b, то поиск корней в отрезке [a,b] закончен.
К
оличество
итераций метода Рыбакова определяется
по формуле
N=(b-a)*M/ ε
Х=X+|F(x)|/M, M>F’(E)
Пример
F(x)=X4-B*X2+36
Корни уравнения при [a,b]=[4,4], ε=10-5, М=100
Х1=-3 F (x)=7,629*10-6
Х2=-2 F (x)=-7,629*10-6
Х3=2 F (x)=7,629*10-6
Х4=3 F (x)=-7,629*10-6
Еще один вариант метода Рыбакова:
Входные данные: интервал корней А, В, точность Е, число М>F’(E) и шаг приращения аргумента D
Рис. 4.5. Алгоритм нахождения и уточнения корней уравнения методом Рыбакова
