Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2009, 11:01   #1
molodzo
Пользователь
 
Регистрация: 19.11.2007
Сообщений: 10
По умолчанию Помогите понять как решать...

Есть задача:

k изменяется от 0 до бесконечности ((4k+1)! / [(2k)!]^2) * x^2k = =1/2*[(1-4x)^(-3/2) + (1+4x)^(-3/2)]

X принадлежит интервалу [-1/4 ; 1/4)

Найти мин. k, которое будет удовлетворять условию:
abs(правая часть - левая часть) < 10^(-15)

Вопрос: как проверить все значения X, принадлежащие интервалу???
molodzo вне форума Ответить с цитированием
Старый 28.02.2009, 15:46   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Вопрос: как проверить все значения X, принадлежащие интервалу???
Все значения х проверить невозможно, ибо их бесконечное количество.
По приведенному условию возможны 2 варианта.
1. При вводе х с клавиатуры проверяется принадлежность х указанному интервалу:
Код:
repeat
write('x=');
readln(x);
until (x>=-1/4)and(x<=1/4);
2. Задается шаг табуляции, например 0,05 и в цикле while или repeat считайте значение для правой части при х=-0,25; -0.2; -0.15; -0.1; -0.05; 0; 0.05; 0.1; 0.15; 0.2; 0.25.
puporev вне форума Ответить с цитированием
Старый 28.02.2009, 18:04   #3
NeshSoft
Максим Николаев
Форумчанин
 
Аватар для NeshSoft
 
Регистрация: 15.02.2009
Сообщений: 170
По умолчанию

Если Х не нужно вводить, то можно поступить по следующим соображениям: 10^(-15) - это не что иное, как точность вычисления, т.е. считать Х из интервала с шагом 10^(-15)
NeshSoft. Программирование на заказ для студентов. Delphi/Pascal. Подробнее на сайте neshsoft.narod.ru
NeshSoft вне форума Ответить с цитированием
Старый 01.03.2009, 11:19   #4
molodzo
Пользователь
 
Регистрация: 19.11.2007
Сообщений: 10
По умолчанию

Вроде написал... тока ошибку выдает! Помогите исправить, пожалуйста!

Вот код:

Код:
Var p3,x,x2,sum1,sum2,sravn,p4,p5,p6,p7,p8:real;
    k,p,ch,p2,znam,znam1:integer;

function factorial(n:integer):integer;
   begin
      if n<=1 then factorial:=1
      else factorial:=n*factorial(n-1);
   end;

function stepen(a,n:real):real;
   begin
      if n=0 then stepen:=1
      else stepen:=a*stepen(a,n-1);
   end;

BEGIN
k:=-1;
x2:=stepen(1/10,15);
repeat
      x:=-1/4;
      k:=k+1;
      p:=4*k+1;
      ch:=factorial(p);
      p2:=2*k;
      znam:=factorial(p2);
      znam1:=znam*znam;
         repeat
            x:=x+x2;
            if (2*k>=0) then p3:=(stepen(x,2*k))
            else p3:=(1/stepen(x,abs(2*k)));
            sum1:=ch/znam1*p3;

            p4:=1-4*x;
            p5:=(1/stepen(p4,3/2));
            p6:=1+4*x;
            p7:=(1/stepen(p6,3/2));
            p8:=p5+p7;
            sum2:=1/2*p8;
            sravn:=stepen(1/10,15);
         until ((x>=1/4) or (abs(sum1-sum2)<sravn));
         if(abs(sum1-sum2)<sravn) then
            begin
               writeln('Sum1=',sum1);
               writeln('Sum2=',sum2);
               writeln('K=',k);
               break;
            end
         else continue;
until(abs(sum1-sum2)<sravn);
END.

Последний раз редактировалось Stilet; 02.03.2009 в 08:48.
molodzo вне форума Ответить с цитированием
Старый 02.03.2009, 08:49   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Какую ошибку? Учись отлаживать программы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.03.2009, 17:16   #6
molodzo
Пользователь
 
Регистрация: 19.11.2007
Сообщений: 10
По умолчанию

Ошибка:
ERROR 202: Stack overflow error!!!
А как исправить - не знаю...
molodzo вне форума Ответить с цитированием
Старый 02.03.2009, 17:32   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот кто научил Вас с таким шагом табулировать от большого ума, пусть он Вас и учит как избавляться от переполнения. Вы что, думаете что взяли такой маленький шаг и таким образом вычислили значения для ВСЕХ значений х? Вы сильно ошибаетесь. Вам указан интервал х как интервал допустимых значений аргумента, т.е. при вводе х Вы должны проверить, не выходит ли он за пределы интервала. А считать надо только для одного значения х, которое введете. Как сказал классик, нельзя объять необъятное.
puporev вне форума Ответить с цитированием
Старый 02.03.2009, 17:47   #8
molodzo
Пользователь
 
Регистрация: 19.11.2007
Сообщений: 10
По умолчанию

Ну да же, если и так, ошибку это не исправляет!!!
А шаг -10^15 - это погрешность, с которой нужно считать...
molodzo вне форума Ответить с цитированием
Старый 02.03.2009, 17:58   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Шаг табуляции и погрешность вычислений это абсолютно разные вещи. Хотя, если Вы учитесь на сапожника, то это Вам ни к чему.
puporev вне форума Ответить с цитированием
Старый 02.03.2009, 18:02   #10
molodzo
Пользователь
 
Регистрация: 19.11.2007
Сообщений: 10
По умолчанию

Ну, в общем, если лень объяснить - так и скажите!
Всего хорошего!
molodzo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу понять как решать(( что и как(( дурачок же я )) durachok) Паскаль, Turbo Pascal, PascalABC.NET 0 25.12.2008 14:45
Как это понять If Not Intersect valerij Microsoft Office Excel 18 21.06.2008 12:57
Помогите понять как это реализовать! krasovskiy Фриланс 6 15.05.2008 14:13
помогите до решать задачу на Множества pelsh Помощь студентам 2 05.01.2008 16:02