Помощь - Поиск - Пользователи - Календарь
Полная версия: Суммирование рядов функций
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Валерия19
Ребят,помогите,прошу!
Вот постановка задачи:
Требуется разработать программу, позволяющую выполнять расчёт значений для некоторого набора функций в заданной точке с заданной погрешностью за счёт разложения этих функций в ряд Тейлора.
В дальнейшем под точностью понимается модуль разницы эталонного значения функции, полученного с помощью встроенной функции Pascal, и подсчитанной вами суммы. Под погрешностью понимается модуль разницы двух последних элементов ряда.

Программа должна работать в двух режимах:
Однократный расчет функции в заданной точке.
Серийный эксперимент.

При работе в режиме 1 пользователь должен иметь возможность:
выбрать функцию,
задать точку x, в которой необходимо вычислить значение,
задать точность вычисления (от 0.000001 и больше)
задать число элементов ряда для выполнения расчета (от 1 до 100).

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

При работе в режиме 2 пользователь должен иметь возможность:
выбрать функцию,
задать точку x, в которой необходимо вычислить значение,
задать максимальное число элементов ряда для выполнения расчета (NMax - от 1 до 100).
По результатам расчета программа должна вывести следующую информацию:
эталонное значение (полученное с использованием встроенных математических функций Pascal),
таблицу из NMax строк со следующими столбцами: число слагаемых слагаемых, вычисленную оценку значения функции, разницу между оценкой и эталонным значением.
Технические требования:
В программе должны быть использованы процедуры и/или функции.
В программе должен быть использован процедурный тип данных.
В программе должны быть использованы модули.
Каждый студент должен реализовать расчет функций sin(x), cos(x), exp(x) и одной уникальной функции из списка ниже.
Валерия19
 
Program Lab2;
uses Crt,My_lib2;
var 
   SumSin:real;
   SumCos:real;
   SumLog:real;
   SumExpon:real;
   x,eps:real;
   count,b,numberfunc,countmax,i:integer;
   
   
   procedure Casefunc();
   begin
 case numberfunc of
   1: begin
       while (x<0)  do
       x:=x+2*pi;
       while (x>=2*pi) do
       x:=x-2*pi;
   Sum1(a0sin,qsin,x,countmax,eps,sumsin,count);
   write ('|',sin(x)
6,'  |');
   write(sumsin:12:6,'     |');
   end;
   2: begin
       while (x<0)  do
       x:=x+2*pi;
       while (x>=2*pi) do
       x:=x-2*pi;
   Sum1(a0cos,qcos,x,countmax,eps,sumcos,count);
   write ('|',cos(x)
6,'  |');
   write(sumcos:12:6,'     |');
   end;
   3: begin
    Sum1(a0expon,qExpon,x,countmax,eps,sumexpon,count);
    write ('|',exp(x)
6,'  |');
   write(sumexpon:12:6,'     |');
   end;
   4: begin
     Sum1(a0log,qlog,x,countmax,eps,sumlog,count);
     write ('|',ln(x)
6,'  |');
   write (sumlog:12:6,'     |');
    end;
   end;
   end;
   
   procedure Casefunc2();
   begin
 case numberfunc of
   1: begin
       while (x<0)  do
       x:=x+2*pi;
       while (x>=2*pi) do
       x:=x-2*pi;
   Sum1(a0sin,qsin,x,i,eps,sumsin,count);
   write('|',sumsin:6:4,'           |');
   end;
   2: begin
       while (x<0)  do
       x:=x+2*pi;
       while (x>=2*pi) do
       x:=x-2*pi;
   Sum1(a0cos,qcos,x,i,eps,sumcos,count);
    write('|',sumcos:6:4,'           |');
   end;
   3: begin
    Sum1(a0expon,qExpon,x,i,eps,sumexpon,count);
   write('|',sumexpon:6:4,'           |');
   end;
   4: begin
     Sum1(a0log,qlog,x,i,eps,sumlog,count);
   write('|',sumlog:6:4,'           |');
    end;
   end;
   end;
begin
   
   writeln ('Выберите режим');
   writeln(' 1.Однократный расчет функции в заданной точке.');
   writeln(' 2.Серийный эксперимент');
   readln(b);
   if b=1 then
   begin
    repeat
   numberfunc:=Viborfunc();
   writeln ('Введите x');
   readln(x);
   writeln('Введите точность');
   readln(eps);
   writeln('Введите максимальное число слагаемых');
   readln(countmax);
   


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