Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 22.06.2011, 17:21   #1 (permalink)
ketti868
Новичок
 
Регистрация: 22.06.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задача, Паскаль

Помогите, пожалуйста решить задание.
Ксожалению, в текстовом виде не могу скинуть задание только фото.
На первом изображении задание. На втором данные для выполнения задания.
Решить нужно 3 и 4 вариант, если это возможно. Буду очень благодарна.
Миниатюры
dsc00209.jpg   dsc00210.jpg  
ketti868 вне форума   Ответить с цитированием

Старый 22.06.2011, 17:21
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Имеет смысл пролистать аналогичные посты

Задача про стоки, Паскаль
Паскаль. Задача о сторожах
Паскаль. Задача об элементах вектора
Паскаль, задача
Паскаль. Задача на массивы
Паскаль. Задача о последовательности.

Старый 22.06.2011, 22:52   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ketti868 Посмотреть сообщение
Помогите, пожалуйста решить задание.
Ксожалению, в текстовом виде не могу скинуть задание только фото.
На первом изображении задание. На втором данные для выполнения задания.
Решить нужно 3 и 4 вариант, если это возможно. Буду очень благодарна.
Пожалуйста - уж извините, но все варианты и комбинации "в одном флаконе". Между прочим, вариант 4 - ох, и с покупкой! С подвохом то есть. Дело в том, что четные члены разложения там теоретически равны нулю, потому как при n четном получается множитель Cos(k*Pi/2), что есть 0, и обойти это при задании предела вычисления суммы было не очень просто. Ну вроде как я там придумал, как это обойти.
Код:
CONST
 eps:Array[1..3] of Real=(0.01, 0.001, 0.0001);
VAR
 Xmin,Xmax,Dx,X,S,Y:Real;
 N,Var_f,Var_e,Var_meth:Byte;
 i,j:Integer;

function Nfact(n:LongInt):Extended;
VAR
  i:LongInt;
  fact:Extended;
BEGIN
  IF n=0 THEN fact:=1 ELSE
    BEGIN
      fact:=1;
      FOR i:=1 TO n DO
        fact:=fact*i;
    END;
  Nfact:=fact;
END;

function Y1(x:Real):Real;
begin
 Y1:=Sin(x)/x;
end;

function Y2(x:Real):Real;
begin
 Y2:=Exp(x)*Cos(x)+2;
end;

Function Sign(M:Byte):ShortInt;
begin
 If (M mod 2) = 0 then Sign:=1 else Sign:=-1;
end;

Procedure Sum(f,t:Byte; Xs,e:real; var Ss:Real; var Ns:Byte);
var
 Is:Integer;
 Sss,Ass:Real;
 Nss:Byte;
begin
 If f=1 then
  begin
   If t=1 then
    begin
     Sss:=1;
     Is:=0;
     Repeat
      Inc(Is);
      Ass:=Exp(2*Is*Ln(Xs))/Nfact(2*Is+1)*Sign(Is);
      Sss:=Sss+Ass;
     Until (Abs(Ass)<e) or (Is=200);
    end
   else
    begin
     Sss:=1;
     Is:=0;
     Ass:=1;
     Repeat
      Inc(Is);
      Ass:=-Ass*Sqr(Xs)/(2*Is)/(2*Is+1);
      Sss:=Sss+Ass;
     Until (Abs(Ass)<e) or (Is=200);
    end;
  end
 else
  begin
   If t=1 then
    begin
     Sss:=3;
     Is:=0;
     Repeat
      Inc(Is);
      Ass:=Cos(Pi*Is/4)*Exp(Is*Ln(Xs*Sqrt(2)))/Nfact(Is);
      Sss:=Sss+Ass;
     Until ((Abs(Ass)>e/100) and (Abs(Ass)<e)) or (Is=200);
    end
   else
    begin
     Sss:=3;
     Is:=0;
     Ass:=1;
     Repeat
      Inc(Is);
      Ass:=Ass*Sqrt(2)*(Xs)/Is/Cos(Pi*(Is-1)/4)*Cos(Pi*Is/4);
      Sss:=Sss+Ass;
     Until ((Abs(Ass)>e/100) and (Abs(Ass)<e)) or (Is=200);
    end;
  end;
 Ss:=Sss;
 Ns:=Is;
end;

BEGIN
 Writeln('Enter the number of function:');
 Writeln('             1 - Sin(x)/x');
 Writeln('             2 - Exp(x)*Cos(x)+2');
 Readln(Var_f);
 If Var_f=1 then
  begin
   Xmin:=0.1;
   Xmax:=0.5;
   DX:=0.1;
  end
 else
  begin
   Xmin:=0.1;
   Xmax:=0.7;
   DX:=0.2;
  end;
 Writeln;
 Writeln('Enter the type of calculation:');
 Writeln('             1 - each item separately');
 Writeln('             2 - next from previous');
 Readln(Var_meth);
 Writeln;
 Writeln('Enter the accuracy number:');
 Writeln('             1 - 0.01');
 Writeln('             2 - 0.001');
 Writeln('             3 - 0.0001');
 Readln(Var_e);
 Writeln;
 Writeln('argument   accurate    approximate     number            error');
 Writeln('            value         value       of  items');
 X:=Xmin-DX;
 Repeat
  X:=X+DX;
  If Var_f=1 then Y:=Y1(X) else Y:=Y2(X);
  Sum(Var_f, Var_meth, X, Eps[Var_e], S, N);
  Writeln(X:5:1,Y:14:5,S:15:5,N:9,Y-S:26:12);
 Until X=Xmax;
 Readln
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 20:41.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.