![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Crazy R |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вобщем задача такая:
Для аргумента , изменяющегося от –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 - 6.12.2009 17:42 |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
26 строка:
Цитата f1:=((exp(3*ln(x)))/12)+(((exp(4*ln(x)))-1)/16)*abs(ln((1+x)/(1-x))-2*arctan(x));
|
Crazy R |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
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) всеравно получиться ошибка. |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата из-за (1+x)/(1-x) всеравно получиться ошибка. Неправда, не будет там ошибки, отрицательного значения под логарифмом нет. Ошибка будет ниже по тексту, там, где ты опять возводишь X в степень 4*k1+3. Возводи по-другому, не через эту формулу. |
Crazy R |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Неправда, не будет там ошибки, отрицательного значения под логарифмом нет. Ошибка будет ниже по тексту, там, где ты опять возводишь X в степень 4*k1+3. Возводи по-другому, не через эту формулу. ![]() Спасибо буду пробовать завтра (сегодня уезжаю:() отпишу как что получиться |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 20:58 |