IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Значение функции для ряда точностей.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Арсений

Репутация: -  0  +


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

ФУНКЦИИ
Прикрепленное изображение

Для аргумента X, изменяющегося от 0 с шагом 0.04 вычислить 20 значений функций:

Функцию f2(x) вычислить для ряда точностей - е=0.01, е=0.001, е=0.0001. Для указанных точностей определить количество N элементов ряда, суммируемых для достижения заданной точности. При составлении алгоритма использовать рекуррентные зависимости между соседними компонентами итераций (каждый член итерационного ряда считать через предыдущий член). Результаты расчетов свести в таблицу.

Вот тут есть пример, как подобное делается, но пример гораздо проще, без факториалов и степеней.
docs.google.com/Doc?docid=0AWCsLtJmOPr4ZGQ2dDlucnRfNWNwbTI3Mmc2&hl=en

Заранее спасибо.

program fun;

const
eps1 = 0.01;
eps2 = 0.001;
eps3 = 0.0001;
a = 0;
b = 0.04;
N = 20;

Var
z,stmn,k1, k2, k3, i, fac2_2, fac1, fac2: Integer;
fac1_1, mnoj,x, f1, f2_1, f2_2, f2_3, func1, func2, func3, step, step1, step2, slag : Real;

begin
x := a; {Начальное значение Х}
for i := 1 to N do
begin
f1:=ln(1+sqrt(1+sqr(x))); {значение функции f1}
{далее вычисляется f2}

{-----------Итерационный цикл для точности 10-2-------------}
k1:=0;
func1:=0;

repeat
inc(k1);

if (k1 mod 2)=0 then {вычисляю степень числа -1}
step:=1
else
step:=-1; {1 если степень четная и -1 если степень нечетная}

fac1_1:=1; { вычисляю факториал (2k-1)! }
fac1:=2*k1-1;
repeat
fac1_1:=fac1_1*fac1;
fac1:=fac1-1;
until fac1=0; {fac1_1 - мой полученный факториал}

step1:=exp(ln(2)*(2*k1)); {step1 - результат 2^2k}

fac2_2:=1; { вычисляю факториал k! }
fac2:=k1;
repeat
fac2_2:=fac2_2*fac2;
fac2:=fac2-1;
until fac2=0; {fac2_2 - мой полученный факториал}

step2:=fac2_2*fac2_2; {вычисляю степень (k!)^2}

stmn:=2*k1; {вычисляю множитель после дроби}
mnoj:=1;
for z:=1 to stmn do mnoj:=mnoj*x; {mnoj - мой множитель}

slag:=(step*fac1_1*mnoj)/(step1*step2);
func1:=func1+slag;
until abs(func1)<=eps1;
{-----------Итерационный цикл для точности 10-2-------------}
{-----------Итерационный цикл для точности 10-3-------------}
k2:=k1;
func2:=func1;
repeat
inc(k2);

if (k2 mod 2)=0 then {вычисляю степень числа -1}
step:=1
else
step:=-1; {1 если степень четная и -1 если степень нечетная}

fac1_1:=1; { вычисляю факториал (2k-1)! }
fac1:=2*k2-1;
repeat
fac1_1:=fac1_1*fac1;
fac1:=fac1-1;
until fac1=0; {fac1_1 - мой полученный факториал}

step1:=exp(ln(2)*(2*k2)); {step1 - результат 2^2k}

fac2_2:=1; { вычисляю факториал k! }
fac2:=k2;
repeat
fac2_2:=fac2_2*fac2;
fac2:=fac2-1;
until fac2=0; {fac2_2 - мой полученный факториал}

step2:=fac2_2*fac2_2; {вычисляю степень (к!)^2}

stmn:=2*k2; {вычисляю множитель после дроби}
mnoj:=1;
for z:=1 to stmn do mnoj:=mnoj*x; {mnoj - мой множитель}

slag:=(step*fac1_1*mnoj)/(step1*step2);
func2:=func2+slag;
until abs(func2)<=eps2;
{-----------Итерационный цикл для точности 10-3-------------}
{-----------Итерационный цикл для точности 10-4-------------}
k3:=k2;
func3:=func2;
repeat
inc(k3);

if (k3 mod 2)=0 then {вычисляю степень числа -1}
step:=1
else
step:=-1; {1 если степень четная и -1 если степень нечетная}

fac1_1:=1; { вычисляю факториал (2k-1)! }
fac1:=2*k3-1;
repeat
fac1_1:=fac1_1*fac1;
fac1:=fac1-1;
until fac1=0; {fac1_1 - мой полученный факториал}

step1:=exp(ln(2)*(2*k3)); {step1 - результат 2^2k}

fac2_2:=1; { вычисляю факториал k! }
fac2:=k3;
repeat
fac2_2:=fac2_2*fac2;
fac2:=fac2-1;
until fac2=0; {fac2_2 - мой полученный факториал}

step2:=fac2_2*fac2_2; {вычисляю степень (к!)^2}

stmn:=2*k3; {вычисляю множитель после дроби}
mnoj:=1;
for z:=1 to stmn do mnoj:=mnoj*x; {mnoj - мой множитель}

slag:=(step*fac1_1*mnoj)/(step1*step2);
func3:=func3+slag;
until abs(func3)<=eps3;
{-----------Итерационный цикл для точности 10-4-------------}
x:=x+b;
end;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Арсений

Репутация: -  0  +


Владимир, огромное спасибо Вам, good.gif сейчас сяду, попробую написать новое "сочинение" на тему почему я люблю высшую математику, совмещенную с паскалем. Нет, на самом деле это очень познавательно и нужно. Просто только начал, еще не втянулся на 100%. Еще раз спасибо.

Сообщение отредактировано: Jabbson -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.09.2025 5:24
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name