Автор работы: Пользователь скрыл имя, 22 Января 2013 в 08:05, курсовая работа
Решение математических задач с помощью вычислительной техники очень распространено в наше время. Для вычисления часто используются основные элементарные функции, такие как синус, косинус, тангенс, и т.д.
Однако алгоритмы нахождения функций скрыты от пользователя.
В данной программе описан алгоритм для нахождения функции Arctg реализованый через ряды Тейлора.
1. Введение 3
2. Постановка задачи 4
3. Руководство пользователя 5
4. Руководство программиста 6
5. Заключение 8
6. Литература 8
7. Приложение 8
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное
образовательное
учреждение высшего профессионального
образования
Нижегородский государственный университет им. Н.И. Лобачевского
Факультет вычислительной математики и кибернетики
Отчет по лабораторной работе №1
Суммирование рядов
Выполнил: студент группы 8101
_______________ Артемов К.С.
Подпись
Научный руководитель:
Доцент кафедры МО ЭВМ
________________ Баркалов А.В.
Подпись
Нижний Новгород
2012
Содержание
Содержание
Решение математических задач с помощью вычислительной техники очень распространено в наше время. Для вычисления часто используются основные элементарные функции, такие как синус, косинус, тангенс, и т.д.
Однако алгоритмы нахождения функций скрыты от пользователя.
В данной программе описан алгоритм для нахождения функции Arctg реализованый через ряды Тейлора.
Требуется разработать программу, позволяющую выполнять расчёт значений для некоторого набора функций в заданной точке с вычислением погрешности за счёт разложения этих функций в ряд Тейлора.
Программа должна:
Расчет оценки значения выбранной функции выполняется до исчерпания введенного числа слагаемых. По результатам расчета программа должна вывести следующую информацию:
Аргумент, Значение
функции, Идеальное Значение Функции
(полученное с использованием встроенных
математических функций Pascal) и разница
значений между идеальным значением и
значением функции.
Нужно ввезти начальные значения аргумента, если модуль этого значения будет больше 1 то программа выдаст ошибку и запросит выполнить действие заного.
Аналогичные действия происходят при вводе конечного аргумента.
После чего . Программа выведет сводную таблицу, где будет показаны аргумент функции её значение, эталоное значение, разница значений..
Программа состоит из 1 дополнительных модуля, а также одной функции. Ниже приведен список используемого модуля и процедуры и их описание.
Модули:
type
index=1..nPoint;
vector=array[index] of real;
const
nPoint=10; количество точек
var
a,b,h:real; //граница области уменшения аргумента и шаг
i,n:integer; количество слагаемых
diference,arg,func:vector; разница значений, аргумент, функция
x:double;
Алгоритмы для вычисления
функций, реализованных в программе,
расположены в отдельном
Обозначение: <…> - здесь необходимо вставить название функции.
Арктангенс :
Вводим значение аргумента функции присваиваем его к переменным и высчитываем первоначальное значение функции
x:=arg;
d:=x;
S:=x;
for k := 2 to n do
begin
d:=(-1)*d*x*x;
c:=d/(2*k-1);
s:=s+c;
result:=s;
Далее высчитываем шаг функции h:=(b-a)/(nPoint-1);
И присваиваем значения каждому элементу массива
arg[i]:=a+(i-1)*h;
func[i]:=MyFunc(arg[i]);
Diference[i]:=abs(arctan(arg[
В результате работы была написана программа, позволяющая вычислить значения функции арктангенс без помощи встроенных.
По ходу исследования
было выяснено, что значения арктангеса
вычисляемые при помощи разложения рядов
Тейлора не так уж далеки от «идеала»
.
program asdsad;
{$APPTYPE CONSOLE}
uses
SysUtils,
Math;
const
nPoint=10;
type
index=1..nPoint;
vector=array[index] of real;
var
a,b,h:real;
i,n:integer;
diference,arg,func:vector;
x:double;
function Myfunc(arg:real):real;
var s,d,c:real;
k:integer;
begin
x:=arg;
d:=x;
S:=x;
for k := 2 to n do
begin
d:=(-1)*d*x*x;
c:=d/(2*k-1);
s:=s+c;
result:=s;
end;
end;
begin
writeln('Enter the calculate argument at the start of the function');
readln(a);
while (a <=-1) or (a >= 1) do
begin
writeln('Input Error. Please, Try again.');
readln(a);
end;
writeln ('enter the argument at the end of the function');
readln(b);
while (b < -1) or (b >= 1) do
begin
writeln('Input Error. Please, Try again.');
readln(b);
end;
writeln('---------------------
writeln('| Step | Value |Ideal Value |Difference| ');
writeln('---------------------
for i := 1 to nPoint do
begin
n:=10;
h:=(b-a)/(nPoint-1);
arg[i]:=a+(i-1)*h;
func[i]:=MyFunc(arg[i]);
Diference[i]:=abs(arctan(arg[
end;
for i := 1 to nPoint do
begin
writeln('| ',arg[i]:4:4,' | ',func[i]:4:8,' |',arctan(arg[i]):4:8,' |',Diference[i]:4:8,'|');
writeln('---------------------
end;
readln;
end.