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

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

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

 
 Ответить  Открыть новую тему 
> Вычислить 20 значений функций.
сообщение
Сообщение #1





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

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


Вобщем задача такая:
Для аргумента , изменяющегося от –0.6 с шагом 0.05 вычислить 20 значений функций.
Вычислить значения функций f1(x) и f2(x) для значений аргументов, указанных в вариантах заданий № 1 – 30 по первой работе. Функцию f2(x) вычислить для ряда точностей . Для указанных точностей определить количество N элементов ряда, суммируемых для достижения заданной точности. Результаты расчетов свести в следующую таблицу.
Прикрепленное изображение

И вот что я тут нарешал:


uses
crt;

Const
eps1 = 0.01; { Точность 10-2}
eps2 = 0.01; { Точность 10-3 }
eps3 = 0.001; { Точность 10-4 }
a = -0.6; { Начальное значение Х}
b = 0.05; { Шаг}
N = 20; { Количество значений функции }
Var
k1, k2, k3, i: Integer; {Вспомогательные переменные}
f1, f2_1, f2_2, f2_3, step, slag, x: Real;

begin
ClrScr;
{Рисуется шапка таблицы}
writeln('___________________________________________________________');
writeln('| | | e=0.01 | e=0.001 | e=0.0001 |');
writeln('| x | f1(x) |----------|-----------|------------|');
writeln('| | | f2(x)| N | f2(x) | N | f2(x) | N |');
writeln('|_______|_____________|______|___|_______|___|________|___|');
x := a; {Начальное значение Х}
for i:=1 to N do
f1:=((exp(3*ln(x)))/12)+(((exp(4*ln(x)))-1)/16)*abs(ln((1+x)/(1-x))-2*arctan(x));
step:=x; {Начальное значение степени Х}
f2_1:=0; {Начальное значение функции f2_1}
k1:=0;
repeat {Итерационный цикл для точности 10-2}
inc(k1);
step:=Exp(ln(x)*(4+K1+7)); {Наращивается степень}
slag:=step/((4*k1+3)*(4*k1+7)); {Считается очередное слагаемое}
f2_1:=f2_1+slag; {Считается значение f2_1}
until abs(slag)<=eps1; {Выход из цикла, когда слагаемое становится меньше точности 10-2}
f2_2:=f2_1;
k2:=k1;
repeat {Итерационный цикл для точности 10-3}
inc(k2);
step:=Exp(ln(x)*(4+K2+7)); {Наращивается степень}
slag:=step/((4*k2+3)*(4*k2+7)); {Считается очередное слагаемое}
f2_2:=f2_2+slag;
until abs(slag)<=eps2; {Выход из цикла, когда слагаемое становится меньше точности 10-3}
f2_3:=f2_2;
k3:=k2;
repeat {итерационный цикл для точности 10-4}
inc(k3);
step:=Exp(ln(x)*(4+K3+7)); {Наращивается степень}
slag:=step/((4*k3+3)*(4*k3+7)); {Считается очередное слагаемое}
f2_3:=f2_3+slag;
until abs(slag)<=eps3; {Выход из цикла, когда слагаемое становится меньше точности 10-4}
{ Вывод результатов}
writeln('| ', x:5:2,' | ',f1:12:9,'| ',f2_1:5:2,'| ',
k1:2,'| ',f2_2:6:3,'| ',k2:2,'| ',f2_3:7:4,'| ', k3:2,'|');
x:=x+b;

{ завершение таблицы }
write('-------------------------------------------------------------------');

readkey;
end.


Выдаёт ошибку.help me.

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


Гость






26 строка:
Цитата
f1:=((exp(3*ln(x)))/12)+(((exp(4*ln(x)))-1)/16)*abs(ln((1+x)/(1-x))-2*arctan(x));
- проблемная. Ln(X) при X = -0.6 даст тебе ошибку. Теперь ты знаешь, ГДЕ и ПОЧЕМУ возникает ошибка. Переделывай.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Цитата(volvo @ 6.12.2009 16:46) *

26 строка: - проблемная. Ln(X) при X = -0.6 даст тебе ошибку. Теперь ты знаешь, ГДЕ и ПОЧЕМУ возникает ошибка. Переделывай.

можно заменить эту строку такой но
 ((x*x*x)/12+0.0625*((x*x*x*x)-1))*((Ln((1+x)/(1-x)))-(arctan(x)));

из-за (1+x)/(1-x) всеравно получиться ошибка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
из-за (1+x)/(1-x) всеравно получиться ошибка.
Неправда, не будет там ошибки, отрицательного значения под логарифмом нет. Ошибка будет ниже по тексту, там, где ты опять возводишь X в степень 4*k1+3. Возводи по-другому, не через эту формулу.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


Цитата(volvo @ 6.12.2009 17:33) *

Неправда, не будет там ошибки, отрицательного значения под логарифмом нет. Ошибка будет ниже по тексту, там, где ты опять возводишь X в степень 4*k1+3. Возводи по-другому, не через эту формулу.


smile.gif ну да)
Спасибо буду пробовать завтра (сегодня уезжаю:() отпишу как что получиться
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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