Пояснительная записка Ккурсовой работе по дисциплине "Алгоритмические языки и программирование" Рязань, 2009 год
Вид материала | Пояснительная записка |
- Рабочая программа курса "Алгоритмические языки программирования, 25.98kb.
- Организация и планирование производства Программирование на языке высокого уровня., 17.16kb.
- Программа дисциплины по кафедре Прикладная математика т информатика алгоритмические, 564.02kb.
- Пояснительная записка к курсовому проекту по дисциплине: «Объектно-ориентированное, 43.57kb.
- Экзамен Контрольная работа Для студентов заочной формы обучения Пояснительная записка, 240.09kb.
- Конспект лекций по курсу "Алгоритмические языки и программирование". Тема "Множества", 120.08kb.
- Рабочая программа по дисциплине «Алгоритмические языки и программирование» Для специальности, 208.45kb.
- Пояснительная записка к курсовой работе «Динамическое программирование Задача об оптимальной, 210.39kb.
- Пояснительная записка к курсовой работе по предмету «Языки и технологии программирования», 353.31kb.
- Программа-минимум кандидатского экзамена по специальности 05. 13. 12 «Системы автоматизации, 99.32kb.
Федеральное агентство по образованию РФ
Рязанский государственный радиотехнический
университет
Кафедра вычислительной
и прикладной математики
Пояснительная записка
К курсовой работе
по дисциплине
“Алгоритмические языки и программирование”
Рязань, 2009 год.
Содержание.
Содержание. 2
Введение 3
Задание 1 4
1.Анализ задания и математическая постановка задачи 4
2.Разработка алгоритмов 5
3.Разработка программы 6
4. Отладка и тестирование программы 7
5. Руководство пользователя. 7
Задание 2 9
1. Анализ задания и математическая постановка задачи 9
Комбинированный метод хорд и касательных. 9
3.Разработка программы 12
4. Отладка и тестирование программы 14
5. Руководство пользователя. 15
Приложение. 16
Список используемой литературы. 21
Введение
Современные средства вычислительной техники и ЭВМ позволяют существенным образом повысить эффективность деятельности инженеров при решении различных задач. При этом наиболее существенным вопросом является организация взаимодействия пользователя со средствами ЭВМ. В настоящей курсовой работе для этих целей использовался диалоговый режим, что позволило существенным образом упростить процесс отладки и работы с программой. В качестве языка программирования выбран изучаемый на занятиях по дисциплине “Алгоритмические языки и программирование” язык программирования “Паскаль”. К достоинствам языка следует отнести такие его характеристики, как модульность, универсальность, удобство работы с массивами и т. д.
Целью курсовой работы является приобретение навыков практического применения ЭВМ для реализации численных методов прикладной математики, наиболее часто используемых при решении задач анализа, синтеза и оптимизации радиотехнических устройств и систем:
1) Методы решения трансцендентных и нелинейных алгебраических уравнений применяются в расчетах автогенераторов и усилительных каскадов на безынерционных усилительных приборах.
2) Численное интегрирование широко используется при спектральном анализе сложных модулированных сигналов при рассмотрении прохождения сигнала через линейные цепи, как в частотной области, так и во временной; к вычислению интеграла сводится расчет средней выходной мощности в усилительных каскадах.
Задание 1
1.Анализ задания и математическая постановка задачи
При решении поставленной задачи необходимо выполнить следующие действия:
- Ввод исходных данных.
- Отделение корней, т.е. отыскание достаточно малых областей, в каждой из которых заключён только один корень уравнения.
- Вычисление корней с заданной погрешностью.
- Вывод результатов.
Для нахождения корня уравнения f(x)=0, принадлежащего отрезку [α,β] методом средних, вычисляем функцию не на концах участков а на их серединах. Заменив интеграл суммой площадей полученных прямоугольников, получаем метод средних.
2.Разработка алгоритмов
Учитывая метод нахождения корней, получаем:
s1:=s1+f(x,0.8,1.5);
x:=x+h;
Рис.1 Схема алгоритма основной программы
3.Разработка программы
Программа состоит из следующих частей:
1) Ввод
Данный блок служит для того, чтобы ввести исходные данные.
writeln('Введите коэффициенты a b c d e через пробел');
read(ca,cb,e );
2) Функция, содержащая исходную функцию.
Данная функция служит для удобства реализации программы.
F(x):=exp(x)*(c+sin(d*x))/(1+cos(x));
3) Блок уточнения корней методом половинного деления.
Отыскание и уточнение корней.
for i:=1 to n do
begin
s1:=s1+f(x,0.8,1.5);
x:=x+h;
end;
s1:=s1*h;
4) Вывод
Данный блок служит для того чтобы вывести исходные данные.
writeln('При a=',a:1:3,' b=',b:1:3,' c=',c:1:3,' d=',d:1:3,' x=',s1:1:4);
4. Отладка и тестирование программы
Для отладки и тестирования программы найдем с помощью нее корни простого уравнения:
1)
Корни этого уравнения:
Результат расчета:
При a=-10.00 b=10.00 x=-2.997
Корни уравнения найдены верно.
Далее приведем результат выполнения окончательной программы:
F(x):=exp(x)*(c+sin(d*x))/(1+cos(x));
Введите коэффициенты a b c d e через пробел
0 1.5 0.8 1.5 0.0001
При a=0 b=1.5 c= 0.8 d=1.5 e=0.0001 x=3.1215
Анализируя вышеприведенные результаты, делаем вывод, что программа функционирует верно.
5. Руководство пользователя.
Данная программа предназначена для отыскания корней уравнения с заданной точностью e.
При запуске программы мы видим окно:
Рис. 5 Окно программы после запуска
Для ввода данных соответственно предложению к вводу вводим: коэффициент а, коэффициент b, коэффициент c, коэффициент d, погрешность. После введения нужно нажать клавишу [Enter].
Рис. 6 Окно программы при вводе
При выполнении этих действий мы видим окно с результатами, в соответствии с введенными данными.
Задание 2
1. Анализ задания и математическая постановка задачи
При решении поставленной задачи необходимо выполнить следующие действия:
- Ввод исходных данных.
- Нахождение значения определённого интеграла с использованием метода вычисления по формуле прямоугольников.
- Вывод результатов.
Комбинированный метод хорд и касательных.
При приближении корня уравнения по методу хорд и по методу касательных подходят к значению корня уравнения с противоположных сторон. Поэтому для быстроты нахождения корня удобно применять оба метода одновременно. Т.к. один метод даёт значение корня с недостатком, а другой - с избытком, то достаточно легко получить заданную степень точности корня.
Рис. 1 Схема алгоритма основной программы.
2)Функция расчета.
a:=a-z/z1;
b:=b-h*t;
a:=a-h*z;
b:=b-t/t1;
да
нет
нет
да
Рис. 2 Схема алгоритма функции “Run”
f:=sqr(sin(x))+sqr(cos(x))+a*x-b;
Рис. 3 Схема алгоритма процедуры “f”
3.Разработка программы
Программа состоит из следующих частей:
1) Ввод
Данный блок служит для того чтобы ввести исходные данные.
writeln('Введите коэффициенты a b c d e через пробел');
read(a,b,c,d,e );
2) Функция, содержащая исходную функцию.
Данная функция служит для удобства реализации программы.
function f(x,a,b:real):real;{процедура расчета функции}
begin
f:=sqr(sin(x))+sqr(cos(x))+a*x-b;
end;
3) Функция вычисления интеграла
Эта функция служит для отыскания численных значений интеграла.
function run(a,b:real):real;{расчет комбинированным методом}
begin
n:=1;
repeat
z:=f(a,ca,cb);
z1:=ff(ca);
z2:=fff;
t:=f(b,ca,cb);
t1:=ff(ca);
h:=(b-a)/(t-z);
if z1*z2>0 then
begin
a:=a-z/z1;
b:=b-h*t;
end else begin
a:=a-h*z;
b:=b-t/t1;
end;
n:=n+1;
until b-a<=e*abs(a);
run:=(a+b)/2;
end;
5) Основная программа с вводом коэффициентов.
begin
{ввод данных}
writeln('Уравнение y=sinx2+cosx2+ax-b');
writeln('Введите коэффициенты a b е через пробел');
read(ca,cb);
{вывод результата}
writeln('a=',ca:1:1,' b=',cb:1:2,' e=',e:1:4,' x=',run(ca,cb):1:4);
writeln(n,' итерации');
readln;
writeln('Для завершения нажмите Enter');
readln;
end.
4. Отладка и тестирование программы
Для отладки и тестирования программы
Значение этого интеграла равно 2.
Результат выполнения программы:
Введите коэффициенты a b е через пробел
0 3.14 0.0001
a=0 b=3.14 e=0.0001 x=2
9 итераций
_______________________________
Интеграл найден верно.
Далее приведем результат выполнения окончательной программы:
f:= (sin(sqr( x))+ (cos(sqr( x)))+a*x-b;
Введите коэффициенты a b е через пробел
0.7 0.8 0.001
a=0.7 b=0.8 e=0.001 x=-0.2857
3 итерации
Анализируя вышеприведенные результаты, делаем вывод, что программа функционирует верно.
5. Руководство пользователя.
Данная программа предназначена для вычисления определенного интеграла от a до b с заданной точностью.
После запуска программы мы видим окно:
Рис. 4 Окно программы после запуска
Для ввода данных соответственно предложению к вводу вводим: коэффициент а, коэффициент b, погрешность. После введения нужно нажать клавишу [Enter].
Рис. 5. Окно программы при получении результатов вычисления
Приложение.
Исходный текст программы нахождения корней уравнения:
var a,b,s1,s2,s3,s4,h,x,c,d,e:real;
i,j,n:integer;
function f(xx,c,d:real):real;{процедура расчета функции}
begin
f:=exp(x)*(c+sin(d*x))/(1+cos(x));
end;
begin
{задаём начальные значения}
{вводим коэффициенты}
writeln('Введите коэффициенты a b c d e через пробел');
read(a,b,c,d,e );
n:=round(e*10000);
h:=(b-a)/n ;
x:=a+h/2;
{начинаем расчет (по заданной точности)}
for i:=1 to n do
begin
s1:=s1+f(x,0.8,1.5);
x:=x+h;
end;
s1:=s1*h;
{выводим результат}
writeln('Pri a=',a:1:3,' b=',b:1:3,' c=',c:1:3,' d=',d:1:3,' x=',s1:1:4);
readln;
writeln('Для завершения нажмите Enter');
readln;
end.
Исходный текст программы вычисления интеграла:
var ca,cb,a,b,z,z1,z2,t,t1,x,h,e:real;
i,n:integer;
function f(x,a,b:real):real;{процедура расчета функции}
begin
f:=sqr(sin(x))+sqr(cos(x))+a*x-b;
end;
function ff(a:real):real;{процедура производной от функции}
begin
ff:=a;
end;
function fff:real;{процедура производной от функци = 0 для данной функции}
begin
fff:=0;
end;
function run(a,b:real):real;{расчет комбинированным методом}
begin
n:=1;
repeat
z:=f(a,ca,cb);
z1:=ff(ca);
z2:=fff;
t:=f(b,ca,cb);
t1:=ff(ca);
h:=(b-a)/(t-z);
if z1*z2>0 then
begin
a:=a-z/z1;
b:=b-h*t;
end else begin
a:=a-h*z;
b:=b-t/t1;
end;
n:=n+1;
until b-a<=e*abs(a);
run:=(a+b)/2;
end;
begin
{ввод данных}
writeln('Уравнение y=sinx2+cosx2+ax-b');
writeln('Введите коэффициенты a b е через пробел);
read(ca,cb);
{вывод результата}
writeln('a=',ca:1:1,' b=',cb:1:2,' e=',e:1:4,' x=',run(ca,cb):1:4);
writeln(n,' итерации');
readln;
writeln('Для завершения нажмите Enter');
readln;
end.
Список используемой литературы.
- Решение уравнений и численное интегрирование на ЭВМ. Методические указания к курсовой работе по дисциплине «Информатика». №3003.
- В.С. Новичков, А.Н. Пылькин Алгоритмические языки и программирование. Методические указания к курсовой работе. №3269.