Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Лабораторная работа (http://www.tehnari.ru/f41/t86941/)

Niko23 29.03.2013 17:34

Лабораторная работа
 
Составить циклическую программу вычисления функции 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.

Заранее благодарю.

Léon 29.03.2013 17:36

И классика: язык программирования?

Niko23 29.03.2013 18:41

Цитата:

Сообщение от 11Angelav (Сообщение 888221)
И классика: язык программирования?

На паскале

Vladimir_S 29.03.2013 20:27

Вот это вот расшифруйте, пожалуйста:
Цитата:

Сообщение от Niko23 (Сообщение 888220)
0.9*1e0.9*x*x


Niko23 30.03.2013 16:25

Цитата:

Сообщение от Vladimir_S (Сообщение 888311)
Вот это вот расшифруйте, пожалуйста:

0.9 умножить на 10 в степени 0.9 и умножить на икс в квадрате

Vladimir_S 30.03.2013 21:14

Цитата:

Сообщение от Niko23 (Сообщение 888700)
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))) создает ошибку из-за логарифма. Пришлось поставить обход.


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.