Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 02.03.2009
Сообщений: 23

погрешность функции

19.05.2009, 10:09. Показов 2185. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть прога, которая считает значение косинуса:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program cos_teilor;
var x,stx,cost,e: real;
    i,fakt,z: integer;
Begin
Write('vvedite x: ');
Readln(x);
Write('vvedite tochnost: ');
Readln(e);
 stx:= x*x;
 fakt:= 2;
 cost:= 1;
 i:= 2;
 z:= -1;
while stx/fakt>=e do begin
cost:=cost+z*stx/fakt;
inc(i,2);
stx:=stx*x*x;
fakt:=fakt*(i-1)*i;
z:=z*(-1);
end;
Writeln('kolichestvo elementov v razlozhenii = ',i div 2 + 1);
Writeln('znachenie kosinusa cos(',x:6:6,')= ',cost:6:6);
Writeln('znachenie kompyutera: ',cos(x):6:6);
Readln;
End.
Считает значение косинуса с заданной погрешностью, но погрешность типа 0.001 и т.д. не считает. В чем причина?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.05.2009, 10:09
Ответы с готовыми решениями:

Правильно ли выполнена проверка на погрешность?
Правильно ли выполнена проверка на погрешность? program number15; var a,x,x0,hx,xn,y,e,s,s1,s2:real; n,kn:integer; begin ...

Посчитать значение, найти относительную погрешность
Задали написать прогу в паскале: надо посчитать значение, найти относительную погрешность, величины должны быть читабельны. ...

Как исправить погрешность, чтобы результаты суммы и синуса были равны
Как можно исправить погрешность, чтобы результаты суммы и синуса были равны. Вот сам код: program primer; var x,u,E,s:real; ...

1
7 / 6 / 2
Регистрация: 04.04.2009
Сообщений: 32
19.05.2009, 15:25
переписал программу более читабельно...
но все равно она работает не для всех x...где то до 2,5

просто для больших x число шагов увеличивается и факториал вычислить в диапазоне лонгинт становится не возможным..можешь попробовать поэкспериментировать с типами может что и выйдет.. у меня не получилось( но пробывал не долго)..




Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
program cos_teilor;
{$N+}
var x,e: real;
 
function fact(i:integer):longint;
begin
if i=0 then fact:=1
       else fact:=i*fact(i-1);
 
end;
 
function power(a:real;b:integer):real;
begin
power:=exp(ln(a)*b);
end;
 
function mycos(x,e:real):extended;
var
cost:extended;
i,z:integer;
begin
 
 cost:= 1;  {первый элемент в разложении}
 i:= 1;  {счётчик}
 z:= -1;  {знак элемента}
 while (power(x,i*2)/fact(2*i))>=e do
 begin  {до тех пор, пока элемент в разложении не меньше точности}
        cost:=cost+z*power(x,i*2)/fact(2*i);
        inc(i);
        z:=z*(-1);  {смена знака}
 end;
 
 Writeln('Количество элементов в разложении = ',fact(2*i) );
 mycos:=cost;
end;
 
Begin
Write('Введите x: ');
Readln(x);
Write('Введите точность e: ');
Readln(e);
Writeln('Значение cos(',x:6:6,')= ',mycos(x,e):6:6);
Writeln('Значение компьютера: ',cos(x):6:6);
Readln;
End.
Добавлено через 29 минут 56 секунд
исправил просто исходя из периодичности функции
Prolog
1
%строчка где х-pi
))) при прогоне ошибок не заметил)))


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
program cos_teilor;
{$N+}
var x,e: real;
 
function fact(i:integer):longint;
begin
 if i=0 then fact:=1
        else fact:=i*fact(i-1);
end;
 
function power(a:real;b:integer):real;
begin
     power:=exp(ln(a)*b);
end;
 
function mycos(x,e:real):extended;
var
   cost:extended;
   i,z,j:integer;
begin
 z:= -1;  {знак элемента}
 J:=1;    {знак переода..}
 while x > pi do begin j:=j*(-1); x:=x-pi;end;      {while x> pi do begin j:=j*(-1); x:=x-pi;end;}
 cost:= 1;  {первый элемент в разложении}
 i:= 1;  {счётчик}
 
 while (power(x,i*2)/fact(2*i))>=e do
 begin  {до тех пор, пока элемент в разложении не меньше точности}
        cost:=cost+z*power(x,i*2)/fact(2*i);
        inc(i);
        z:=z*(-1);  {смена знака}
 end;
 Writeln('Количество элементов в разложении = ',i);
 mycos:=j*cost;
end;
 
Begin
Write('Введите x: ');
Readln(x);
Write('Введите точность e: ');
Readln(e);
 
Writeln('Значение cos(',x:6:6,')= ',mycos(x,e):6:6);
Writeln('Значение компьютера: ',cos(x):6:6);
Readln;
End.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2009, 15:25
Помогаю со студенческими работами здесь

Отредактировать код(есть некая погрешность )
Вот сам код uses crt; const N=40; type x=array of integer; var a:x; i:integer; k:integer; begin clrscr;

Вычислить значение ряда с точностью е = 0.001, найти абсолютную погрешность
Используя данное представление (см. в таблице с вариантами) вычислить значение, соответствующее значению функции для указанного значения x0...

Вычислить погрешность...
Помогите решить пожалуйста...

Как оценить погрешность данных вычилений
вот мо программки:

Нужно найти погрешность eps=0.001
Помогите найти погрешность eps = 0.001 для данной программы Program N11; var n,i,c,f,a:integer; d,y,z: real; begin ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru