• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Лабораторная работа

  • Автор темы Автор темы Niko23
  • Дата начала Дата начала

Niko23

Ученик
Регистрация
29 Мар 2013
Сообщения
4
Реакции
0
Баллы
0
Лабораторная работа

Составить циклическую программу вычисления функции Y=f(xi), где Xi заданно в виде массива, и значение искомых переменных A3, R2, R3, G0, min, G3.

Y=(x*x*cos(x)-700*exp(sin(x)))/(1.6+0.9*1e0.9*x*x) ,если exp(sin(x))>1.5
и
Y=0.00567*exp(1/3*ln(abs(x)))+2.14*exp(sin(x)) ,если exp(sin(x))<=1.5
G0 - среднее герметрическое для всех y
A3 - среднее арифметическое для y>v v=2.1
G3 - среднее геометрическое для y>v v=2.1
Min - минимальный по абсолютной величине результат
R2 - массив результатов y не меньших w w=0.5
R3 - массив отрицательных значений y

Массив X (0.01) (0.02) (-0.5) (2.31) (0) (1) (0) (-1.25) (-1) (-0.77) (0)
В конце программы вывести A3, R2, R3, G0, min, G3.

Заранее благодарю.
 
И классика: язык программирования?
 
0.9 умножить на 10 в степени 0.9 и умножить на икс в квадрате
Тогда так:
Код:
Const
 X:Array[1..11] of Real=(0.01,0.02,-0.5,2.31,0,1,0,-1.25,-1,-0.77,0);
 v=2.1;
 w=0.5;

Var
 Y,R2,R3:Array[1..11] of Real;
 G0,A3,G3,Min:Real;
 i,NA3,NR2,NR3:Byte;

Function F(z:real):real;
begin
 If exp(sin(z))>1.5 then
  F:=(z*z*cos(z)-700*exp(sin(z)))/(1.6+0.9*exp(0.9*ln(10))*z*z)
 else
  begin
   if abs(z)>0 then
    F:=0.00567*exp(1/3*ln(abs(z)))+2.14*exp(sin(z))
   else
    F:=2.14*exp(sin(z));
  end;
end;

Begin
 For i:=1 to 11 do
  begin
   Y[i]:=F(X[i]);
   Writeln('X= ',X[i]:8:3,'     Y= ',Y[i]:8:3);
  end;
 Writeln;
 NR2:=0;
 NR3:=0;
 Min:=Abs(Y[1]);
 G0:=1;
 A3:=0;
 G3:=1;
 For i:=1 to 11 do
  begin
   G0:=G0*Y[i];
   if Y[i]>v then
    begin
     Inc(NA3);
     A3:=A3+Y[i];
     G3:=G3*Y[i];
    end;
   if Abs(Y[i])<Min then Min:=Abs(Y[i]);
   if Y[i]>=w then
    begin
     Inc(NR2);
     R2[NR2]:=Y[i];
    end;
   if Y[i]<0 then
    begin
     Inc(NR3);
     R3[NR3]:=Y[i];
    end;
  end;
 Write('G0: ');
 If G0>0 then writeln(exp((1/11)*ln(G0)):10:5) else writeln('Incorrect value!');
 Write('A3: ');
 If NA3>0 then writeln(A3/NA3:10:5) else writeln('Incorrect value!');
 Write('G3: ');
 If (NA3>0) and (G3>0) then writeln(exp((1/NA3)*ln(G3)):10:5) else writeln('Incorrect value!');
 Writeln('Min:',Min:10:5);
 Write('R2: ');
 If NR2>0 then for i:=1 to NR2 do write(R2[i]:8:3) else write('No such elements!');
 Writeln;
 Write('R3: ');
 If NR3>0 then for i:=1 to NR3 do write(R3[i]:15:5) else write('No such elements!');
 Readln
End.

Дополнительное ветвление функции связано с тем, что при нулевом аргументе множитель exp(1/3*ln(abs(x))) создает ошибку из-за логарифма. Пришлось поставить обход.
 
Назад
Сверху