Пояснительная записка Ккурсовой работе по дисциплине "Алгоритмические языки и программирование" Рязань, 2009 год

Вид материалаПояснительная записка

Содержание


Задание 1 1.Анализ задания и математическая постановка задачи
2.Разработка алгоритмов Учитывая метод нахождения корней, получаем
3.Разработка программы
2) Функция, содержащая исходную функцию.
4. Отладка и тестирование программы
5. Руководство пользователя.
Рис. 5 Окно программы после запуска
Задание 2 1. Анализ задания и математическая постановка задачи
Комбинированный метод хорд и касательных.
3.Разработка программы
2) Функция, содержащая исходную функцию.
3) Функция вычисления интеграла
5) Основная программа с вводом коэффициентов.
4. Отладка и тестирование программы
5. Руководство пользователя.
Рис. 4 Окно программы после запуска
Рис. 5. Окно программы при получении результатов вычисления
Подобный материал:

Федеральное агентство по образованию РФ

Рязанский государственный радиотехнический

университет


Кафедра вычислительной

и прикладной математики


Пояснительная записка


К курсовой работе

по дисциплине


“Алгоритмические языки и программирование”








Рязань, 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.Анализ задания и математическая постановка задачи



При решении поставленной задачи необходимо выполнить следующие действия:
  1. Ввод исходных данных.
  2. Отделение корней, т.е. отыскание достаточно малых областей, в каждой из которых заключён только один корень уравнения.
  3. Вычисление корней с заданной погрешностью.
  4. Вывод результатов.



Для нахождения корня уравнения 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. Нахождение значения определённого интеграла с использованием метода вычисления по формуле прямоугольников.
    3. Вывод результатов.

Комбинированный метод хорд и касательных.


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























Рис. 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.


Список используемой литературы.




  1. Решение уравнений и численное интегрирование на ЭВМ. Методические указания к курсовой работе по дисциплине «Информатика». №3003.
  2. В.С. Новичков, А.Н. Пылькин Алгоритмические языки и программирование. Методические указания к курсовой работе. №3269.