Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69

Вычисления значения функций

11.10.2022, 16:00. Показов 4172. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите разобраться проблемой.
1.Нужно написать программу вычисляющие значение функций:
(x / ln(x))*(-x/cos(x)), если x < -6;
x*3*x+cos(x)/lg(x), если -6 <=x<1;
cos(x)/x^3, если 1<=x<4;
cos(2*x)*68+lg(x)/x^3, если 4<=x.
2.Вычислить значение функций на интервале [-8,6] с шагом 0.1
Я написала следующее
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
program Firtlab;
uses crt,math;
var x,y:real;
 k:integer;
 begin
        clrscr;
        x:=-8;
        k:=0;
        while x<=6 do
        begin
        if x<-6 then writeln ('x=', y:0:1,' y= not defined ')
        else if x<1 then
        begin
        y:=cos(x);
        writeln('x=',x:0:1,'y=',y:6:3)
        end
        else if x<4 then
        begin
        if x<=0 then writeln('x=',x:0:1,' y= not defined')
        else
        begin
        y:=cos(x)/sqr(x);
        writeln('x=',x:0:1,'y=',y:6:3);
        end
        end
        else
        begin
        y:=cos(2*x)*68+ln(x)/sqr(3);
        writeln('x=',x:0:1,' y=not defined ',y:6:3)
        end;
        x:=x+0.1;
        inc(k);
        if k mod 20=0 then
        begin
        write('Press Enter');
        readln
        end;
        end;
        readln
        end.
И программа мне выдает вот это
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
Press Enter

Помогите разобраться в чем дело.Оно не так должно работать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2022, 16:00
Ответы с готовыми решениями:

Составить программу вычисления значения функций

Составить программу для вычисления значения функций f(x)
Заранее спасибо :)

Написать программу для вычисления значения заданных функций
Помогите с решением, написать программу для вычисления значения заданных функций.

53
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
07.11.2022, 23:49  [ТС]
Студворк — интернет-сервис помощи студентам
Изменила код -
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
program Firtlab;
 
uses
  crt,
  Math;
 
var
  x, y: real;
  k:    integer;
begin
  clrscr;
  x := -8;
  k := 0;
  while x <= 6 do
  begin
    if x <= 0  then
      writeln('x=', x: 0: 1, ' y= No defined ')
    else
    begin
       if x < -6 then
     y :=(x / ln(x)) * (-x / cos(x))
    else if x < 1 then
      y := (x*x*x)*x+cos(x)/ln(x) / ln(10)
      else  if x < 4 then
          y :=cos(x) / (x*x*x)
    else
      y := cos(2 * x) * 68 + ln(x) / (x*x*x);
      writeln('x=', x: 0: 1, ' y= ', y: 6: 3);
    end;
    x := x + 0.1;
    Inc(k);
    if k mod 20 = 0 then
    begin
      Write('Press Enter');
      readln;
    end;
  end;
  readln;
end.
Получилься такой результат -
Кликните здесь для просмотра всего текста

x=-8.0 y= No defined
x=-7.9 y= No defined
x=-7.8 y= No defined
x=-7.7 y= No defined
x=-7.6 y= No defined
x=-7.5 y= No defined
x=-7.4 y= No defined
x=-7.3 y= No defined
x=-7.2 y= No defined
x=-7.1 y= No defined
x=-7.0 y= No defined
x=-6.9 y= No defined
x=-6.8 y= No defined
x=-6.7 y= No defined
x=-6.6 y= No defined
x=-6.5 y= No defined
x=-6.4 y= No defined
x=-6.3 y= No defined
x=-6.2 y= No defined
x=-6.1 y= No defined
Press Enter
x=-6.0 y= No defined
x=-5.9 y= No defined
x=-5.8 y= No defined
x=-5.7 y= No defined
x=-5.6 y= No defined
x=-5.5 y= No defined
x=-5.4 y= No defined
x=-5.3 y= No defined
x=-5.2 y= No defined
x=-5.1 y= No defined
x=-5.0 y= No defined
x=-4.9 y= No defined
x=-4.8 y= No defined
x=-4.7 y= No defined
x=-4.6 y= No defined
x=-4.5 y= No defined
x=-4.4 y= No defined
x=-4.3 y= No defined
x=-4.2 y= No defined
x=-4.1 y= No defined
Press Enter
x=-4.0 y= No defined
x=-3.9 y= No defined
x=-3.8 y= No defined
x=-3.7 y= No defined
x=-3.6 y= No defined
x=-3.5 y= No defined
x=-3.4 y= No defined
x=-3.3 y= No defined
x=-3.2 y= No defined
x=-3.1 y= No defined
x=-3.0 y= No defined
x=-2.9 y= No defined
x=-2.8 y= No defined
x=-2.7 y= No defined
x=-2.6 y= No defined
x=-2.5 y= No defined
x=-2.4 y= No defined
x=-2.3 y= No defined
x=-2.2 y= No defined
x=-2.1 y= No defined
Press Enter
x=-2.0 y= No defined
x=-1.9 y= No defined
x=-1.8 y= No defined
x=-1.7 y= No defined
x=-1.6 y= No defined
x=-1.5 y= No defined
x=-1.4 y= No defined
x=-1.3 y= No defined
x=-1.2 y= No defined
x=-1.1 y= No defined
x=-1.0 y= No defined
x=-0.9 y= No defined
x=-0.8 y= No defined
x=-0.7 y= No defined
x=-0.6 y= No defined
x=-0.5 y= No defined
x=-0.4 y= No defined
x=-0.3 y= No defined
x=-0.2 y= No defined
x=-0.1 y= No defined
Press Enter
x=-0.0 y= No defined
x=0.1 y= -0.188
x=0.2 y= -0.263
x=0.3 y= -0.337
x=0.4 y= -0.411
x=0.5 y= -0.487
x=0.6 y= -0.572
x=0.7 y= -0.691
x=0.8 y= -0.946
x=0.9 y= -1.906
x=1.0 y= -19752729881681.059
x=1.1 y= 0.341
x=1.2 y= 0.210
x=1.3 y= 0.122
x=1.4 y= 0.062
x=1.5 y= 0.021
x=1.6 y= -0.007
x=1.7 y= -0.026
x=1.8 y= -0.039
x=1.9 y= -0.047
Press Enter
x=2.3 y= -0.055
x=2.4 y= -0.053
x=2.5 y= -0.051
x=2.6 y= -0.049
x=2.7 y= -0.046
x=2.8 y= -0.043
x=2.9 y= -0.040
x=3.0 y= -0.037
x=3.1 y= -0.034
x=3.2 y= -0.030
x=3.3 y= -0.027
x=3.4 y= -0.025
x=3.5 y= -0.022
x=3.6 y= -0.019
x=3.7 y= -0.017
x=3.8 y= -0.014
x=3.9 y= -0.012
Press Enter
x=4.0 y= -0.010
x=4.1 y= -23.042
x=4.2 y= -35.292
x=4.3 y= -46.135
x=4.4 y= -55.137
x=4.5 y= -61.940
x=4.6 y= -66.274
x=4.7 y= -67.964
x=4.8 y= -66.945
x=4.9 y= -63.255
x=5.0 y= -57.044
x=5.1 y= -48.558
x=5.2 y= -38.135
x=5.3 y= -26.192
x=5.4 y= -13.204
x=5.5 y= 0.311
x=5.6 y= 13.814
x=5.7 y= 26.767
x=5.8 y= 38.653
x=5.9 y= 48.998
Press Enter
x=6.0 y= 57.390
Можно ли считать что алгоритм теперь правильно решим?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
08.11.2022, 00:07
cos(x) / ln(x) / ln(10) равносильно cos(x) / ( ln(x) * ln(10) ), а это далеко не то, что требуется. Расставляйте скобки для корректных вычислений.

Добавлено через 2 минуты
И для x>=4 нужно умножать на lg(x), а не ln(x).

Добавлено через 35 секунд
Перепроверьте все формулы.

Добавлено через 2 минуты
А структура программы - похожа на правильную.
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
08.11.2022, 00:21  [ТС]
ФедосеевПавел, Исправила
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
program Firtlab;
 
uses
  crt,
  Math;
 
var
  x, y: real;
  k:    integer;
begin
  clrscr;
  x := -8;
  k := 0;
  while x <= 6 do
  begin
    if x <= 0  then
      writeln('x=', x: 0: 1, ' y= No defined ')
    else
    begin
       if x < -6 then
     y :=(x / ln(x)) * (-x / cos(x))
    else if x < 1 then
      y := (x*x*x)*x+cos(x)/((ln(x) / ln(10)))
      else  if x >= 4 then
          y :=cos(x) / (x*x*x)
    else
      y := cos(2 * x) * 68 + ln(x) / (x*x*x);
      writeln('x=', x: 0: 1, ' y= ', y: 6: 3);
    end;
    x := x + 0.1;
    Inc(k);
    if k mod 20 = 0 then
    begin
      Write('Press Enter');
      readln;
    end;
  end;
  readln;
end.
Получилось -
Кликните здесь для просмотра всего текста

x=-8.0 y= No defined
x=-7.9 y= No defined
x=-7.8 y= No defined
x=-7.7 y= No defined
x=-7.6 y= No defined
x=-7.5 y= No defined
x=-7.4 y= No defined
x=-7.3 y= No defined
x=-7.2 y= No defined
x=-7.1 y= No defined
x=-7.0 y= No defined
x=-6.9 y= No defined
x=-6.8 y= No defined
x=-6.7 y= No defined
x=-6.6 y= No defined
x=-6.5 y= No defined
x=-6.4 y= No defined
x=-6.3 y= No defined
x=-6.2 y= No defined
x=-6.1 y= No defined
Press Enter
x=-6.0 y= No defined
x=-5.9 y= No defined
x=-5.8 y= No defined
x=-5.7 y= No defined
x=-5.6 y= No defined
x=-5.5 y= No defined
x=-5.4 y= No defined
x=-5.3 y= No defined
x=-5.2 y= No defined
x=-5.1 y= No defined
x=-5.0 y= No defined
x=-4.9 y= No defined
x=-4.8 y= No defined
x=-4.7 y= No defined
x=-4.6 y= No defined
x=-4.5 y= No defined
x=-4.4 y= No defined
x=-4.3 y= No defined
x=-4.2 y= No defined
x=-4.1 y= No defined
Press Enter
x=-4.0 y= No defined
x=-3.9 y= No defined
x=-3.8 y= No defined
x=-3.7 y= No defined
x=-3.6 y= No defined
x=-3.5 y= No defined
x=-3.4 y= No defined
x=-3.3 y= No defined
x=-3.2 y= No defined
x=-3.1 y= No defined
x=-3.0 y= No defined
x=-2.9 y= No defined
x=-2.8 y= No defined
x=-2.7 y= No defined
x=-2.6 y= No defined
x=-2.5 y= No defined
x=-2.4 y= No defined
x=-2.3 y= No defined
x=-2.2 y= No defined
x=-2.1 y= No defined
Press Enter
x=-2.0 y= No defined
x=-1.9 y= No defined
x=-1.8 y= No defined
x=-1.7 y= No defined
x=-1.6 y= No defined
x=-1.5 y= No defined
x=-1.4 y= No defined
x=-1.3 y= No defined
x=-1.2 y= No defined
x=-1.1 y= No defined
x=-1.0 y= No defined
x=-0.9 y= No defined
x=-0.8 y= No defined
x=-0.7 y= No defined
x=-0.6 y= No defined
x=-0.5 y= No defined
x=-0.4 y= No defined
x=-0.3 y= No defined
x=-0.2 y= No defined
x=-0.1 y= No defined
Press Enter
x=-0.0 y= No defined
x=0.1 y= -0.995
x=0.2 y= -1.401
x=0.3 y= -1.819
x=0.4 y= -2.289
x=0.5 y= -2.853
x=0.6 y= -3.591
x=0.7 y= -4.697
x=0.8 y= -6.780
x=0.9 y= -12.929
x=1.0 y= -104726961236479.300
x=1.1 y= -39.946
x=1.2 y= -50.037
x=1.3 y= -58.149
x=1.4 y= -63.948
x=1.5 y= -67.199
x=1.6 y= -67.769
x=1.7 y= -65.634
x=1.8 y= -60.879
x=1.9 y= -53.692
Press Enter
x=2.0 y= -44.361
x=2.1 y= -33.258
x=2.2 y= -20.825
x=2.3 y= -7.558
x=2.4 y= 6.013
x=2.5 y= 19.348
x=2.6 y= 31.913
x=2.7 y= 43.210
x=2.8 y= 52.785
x=2.9 y= 60.259
x=3.0 y= 65.332
x=3.1 y= 67.803
x=3.2 y= 67.572
x=3.3 y= 64.649
x=3.4 y= 59.150
x=3.5 y= 51.295
x=3.6 y= 41.395
x=3.7 y= 29.847
x=3.8 y= 17.110
x=3.9 y= 3.692
Press Enter
x=4.0 y= -9.872
x=4.1 y= -0.008
x=4.2 y= -0.007
x=4.3 y= -0.005
x=4.4 y= -0.004
x=4.5 y= -0.002
x=4.6 y= -0.001
x=4.7 y= -0.000
x=4.8 y= 0.001
x=4.9 y= 0.002
x=5.0 y= 0.002
x=5.1 y= 0.003
x=5.2 y= 0.003
x=5.3 y= 0.004
x=5.4 y= 0.004
x=5.5 y= 0.004
x=5.6 y= 0.004
x=5.7 y= 0.005
x=5.8 y= 0.005
x=5.9 y= 0.005
Press Enter
x=6.0 y= 0.004
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
08.11.2022, 15:54  [ТС]
Мой преподаватель показал мне ошибки и я исправила код( функций не там стояли -
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
program Firtlab;
 
uses
  crt,
  Math;
 
var
  x, y: real;
  k:    integer;
begin
  clrscr;
  x := -8;
  k := 0;
  while x <= 6 do
  begin
    if x <= 0  then
      writeln('x= ', x: 0: 1, ' y= no defined ')
    else
    begin
       if x < -6 then
     y :=(x / ln(x)) * (-x / cos(x))
     else
   if x < 1 then
      y := cos(x) / (x*x*x)
      else
      if x >= 4 then
          y := cos(2 * x) * 68 + ln(x) / (x*x*x);
      writeln('x= ', x: 0: 1, ' y= ', y: 6: 3);
    end;
   x := x + 0.1;
    Inc(k);
    if k mod 20 = 0 then
    begin
      Write('Press Enter');
 
      readln;
    end;
  end;
 readln;
end.
Но есть еще ошибка, которая появляется после if x >= 4 then - результат не тот
Кликните здесь для просмотра всего текста

x= -0.0 y= no defined
x= 0.1 y= 995.004
x= 0.2 y= 122.508
x= 0.3 y= 35.383
x= 0.4 y= 14.392
x= 0.5 y= 7.021
x= 0.6 y= 3.821
x= 0.7 y= 2.230
x= 0.8 y= 1.361
x= 0.9 y= 0.853
x= 1.0 y= 0.540
x= 1.1 y= 0.540
x= 1.2 y= 0.540
x= 1.3 y= 0.540
x= 1.4 y= 0.540
x= 1.5 y= 0.540
x= 1.6 y= 0.540
x= 1.7 y= 0.540
x= 1.8 y= 0.540
x= 1.9 y= 0.540
Press Enter
x= 2.0 y= 0.540
x= 2.1 y= 0.540
x= 2.2 y= 0.540
x= 2.3 y= 0.540
x= 2.4 y= 0.540
x= 2.5 y= 0.540
x= 2.6 y= 0.540
x= 2.7 y= 0.540
x= 2.8 y= 0.540
x= 2.9 y= 0.540
x= 3.0 y= 0.540
x= 3.1 y= 0.540
x= 3.2 y= 0.540
x= 3.3 y= 0.540
x= 3.4 y= 0.540
x= 3.5 y= 0.540
x= 3.6 y= 0.540
x= 3.7 y= 0.540
x= 3.8 y= 0.540
x= 3.9 y= 0.540
Press Enter

x= 4.0 y= 0.540 - это не тот результат который нужен
x= 4.1 y= -23.042
x= 4.2 y= -35.292
x= 4.3 y= -46.135
x= 4.4 y= -55.137
x= 4.5 y= -61.940
x= 4.6 y= -66.274
x= 4.7 y= -67.964
x= 4.8 y= -66.945
x= 4.9 y= -63.255
x= 5.0 y= -57.044
x= 5.1 y= -48.558
x= 5.2 y= -38.135
x= 5.3 y= -26.192
x= 5.4 y= -13.204
x= 5.5 y= 0.311
x= 5.6 y= 13.814
x= 5.7 y= 26.767
x= 5.8 y= 38.653
x= 5.9 y= 48.998
Press Enter
x= 6.0 y= 57.390
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
08.11.2022, 18:23
Внимательнее нужно быть
Pascal
26
27
28
29
      else  if x < 4 then
          y :=cos(x) / (x*x*x)
    else
      y := cos(2 * x) * 68 + ln(x) / (x*x*x);
и автоформаттером пользоваться для публикации и сдачи кода преподавателю.
1
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
09.11.2022, 20:37  [ТС]
Мне не нравиться вот этот ответ

x=0.8 y= -6.780
x=0.9 y= -12.929
x=1.0 y= -104726961236479.300 как от этого избавить?
x=1.1 y= 0.341
x=1.2 y= 0.210
x=1.3 y= 0.122
x=1.4 y= 0.062
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
09.11.2022, 20:55
Скорее, всего - никак. При x чуть меньшем 1 вычисления по формуле x*3*x+cos(x)/lg(x), если -6 <=x<1;, т.е. lg(1)=0 и производится деление на 0.

Можно попробовать ввести целочисленную переменную i, которая меняется на 1 в каждой итерации цикла, и значение x вычислять сразу после while ... do begin x:=-8+i*0.1
Может, повезёт и переменная x будет чуть больше или равна 1 и тогда вычисления будут по другой формуле.
1
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
09.11.2022, 23:48  [ТС]
Понятно, спасибо что помогаете мне.
0
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
10.11.2022, 09:21
Цитата Сообщение от Lari76 Посмотреть сообщение
как от этого избавить?
избавиться можно с помощью дополнительной проверки - проверяй знаменатель дроби, что он по модулю больше некоего заведомо маленького числа
if abs(ln(x))<0.000000001 then -> undefined (ну или https://www.cyberforum.ru/cgi-bin/latex.cgi?+ \infty или https://www.cyberforum.ru/cgi-bin/latex.cgi?- \infty)
но, по хорошему, тогда тебе везде, где есть дробь, нужно проверять знаменатель.
0
Модератор
10477 / 5772 / 3412
Регистрация: 17.08.2012
Сообщений: 17,533
10.11.2022, 20:22
Лучший ответ Сообщение было отмечено Lari76 как решение

Решение

mr-Crocodile, нет, это ничего не исправит. Дело в усечении чисел при переводе в двоичную форму.
Цитата Сообщение от Lari76 Посмотреть сообщение
Мне не нравиться вот этот ответ
Это всё потому, что при (якобы) x=1 у Вас вычисляется y :=(x / ln(x)) * (-x / cos(x)), а не cos(x)/x^3, как планировалось.

Так происходит потому, что -8 + 90 раз по 0.1 получится не равным 1, а чуть меньшим 1, из-за ошибок усечения и накопения этих ошибок при суммировании. Происходит такое потому, что число 0.1 не может быть представлено точно с помощью типа real.

Тест:
Pascal
1
2
3
4
5
6
7
var
  x: real;
begin
  x := 0.1;
  writeln(x);
  readln;
end.
Результат теста: 1.0000000000000001E-001

Как видите, 0.1 на самом деле в машинной форме равен 0.10000000000000001. Это потому, что десятичное 0.1 эквивалентно бесконечной двоичной дроби 0.0(0011), а бесконечное количество цифр люди запоминать не умеют. Поэтому 0.1 при переводе в двоичную форму заменяется двоичным числом, которое влезает в мантису типа real и максимально близкое к 0.1, оно равно в двоичной форме
0.000110011001100110011001100110011001100110011001101
как видите, в конце числа вместо бесконечного 0011 присутствует урезанное 01.

Посмотрим, чему на самом деле равны Ваши значеия "x". Тест:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  x: real;
begin
  x := 0.1;
  writeln(x);
  writeln;
  x := -8;
  while x <= 6 do
    begin
      writeln(x);
      x := x + 0.1;
    end;
  readln;
end.
Результаты теста
-8.0000000000000000E+000
-7.9000000000000004E+000
-7.8000000000000007E+000
-7.7000000000000011E+000
-7.6000000000000014E+000
-7.5000000000000018E+000
-7.4000000000000021E+000
-7.3000000000000025E+000
-7.2000000000000028E+000
-7.1000000000000032E+000
-7.0000000000000036E+000
-6.9000000000000039E+000
-6.8000000000000043E+000
-6.7000000000000046E+000
-6.6000000000000050E+000
-6.5000000000000053E+000
-6.4000000000000057E+000
-6.3000000000000060E+000
-6.2000000000000064E+000
-6.1000000000000068E+000
-6.0000000000000071E+000
-5.9000000000000075E+000
-5.8000000000000078E+000
-5.7000000000000082E+000
-5.6000000000000085E+000
-5.5000000000000089E+000
-5.4000000000000092E+000
-5.3000000000000096E+000
-5.2000000000000099E+000
-5.1000000000000103E+000
-5.0000000000000107E+000
-4.9000000000000110E+000
-4.8000000000000114E+000
-4.7000000000000117E+000
-4.6000000000000121E+000
-4.5000000000000124E+000
-4.4000000000000128E+000
-4.3000000000000131E+000
-4.2000000000000135E+000
-4.1000000000000139E+000
-4.0000000000000142E+000
-3.9000000000000141E+000
-3.8000000000000140E+000
-3.7000000000000139E+000
-3.6000000000000139E+000
-3.5000000000000138E+000
-3.4000000000000137E+000
-3.3000000000000136E+000
-3.2000000000000135E+000
-3.1000000000000134E+000
-3.0000000000000133E+000
-2.9000000000000132E+000
-2.8000000000000131E+000
-2.7000000000000131E+000
-2.6000000000000130E+000
-2.5000000000000129E+000
-2.4000000000000128E+000
-2.3000000000000127E+000
-2.2000000000000126E+000
-2.1000000000000125E+000
-2.0000000000000124E+000
-1.9000000000000123E+000
-1.8000000000000123E+000
-1.7000000000000122E+000
-1.6000000000000121E+000
-1.5000000000000120E+000
-1.4000000000000119E+000
-1.3000000000000118E+000
-1.2000000000000117E+000
-1.1000000000000116E+000
-1.0000000000000115E+000
-9.0000000000001157E-001
-8.0000000000001159E-001
-7.0000000000001161E-001
-6.0000000000001164E-001
-5.0000000000001166E-001
-4.0000000000001168E-001
-3.0000000000001170E-001
-2.0000000000001170E-001
-1.0000000000001169E-001
-1.1690647094050183E-014
9.9999999999988307E-002
1.9999999999998830E-001
2.9999999999998828E-001
3.9999999999998825E-001
4.9999999999998823E-001
5.9999999999998821E-001
6.9999999999998819E-001
7.9999999999998817E-001
8.9999999999998814E-001
9.9999999999998812E-001
1.0999999999999881E+000
1.1999999999999882E+000
1.2999999999999883E+000
1.3999999999999884E+000
1.4999999999999885E+000
1.5999999999999885E+000
1.6999999999999886E+000
1.7999999999999887E+000
1.8999999999999888E+000
1.9999999999999889E+000
2.0999999999999890E+000
2.1999999999999891E+000
2.2999999999999892E+000
2.3999999999999893E+000
2.4999999999999893E+000
2.5999999999999894E+000
2.6999999999999895E+000
2.7999999999999896E+000
2.8999999999999897E+000
2.9999999999999898E+000
3.0999999999999899E+000
3.1999999999999900E+000
3.2999999999999901E+000
3.3999999999999901E+000
3.4999999999999902E+000
3.5999999999999903E+000
3.6999999999999904E+000
3.7999999999999905E+000
3.8999999999999906E+000
3.9999999999999907E+000
4.0999999999999908E+000
4.1999999999999904E+000
4.2999999999999901E+000
4.3999999999999897E+000
4.4999999999999893E+000
4.5999999999999890E+000
4.6999999999999886E+000
4.7999999999999883E+000
4.8999999999999879E+000
4.9999999999999876E+000
5.0999999999999872E+000
5.1999999999999869E+000
5.2999999999999865E+000
5.3999999999999861E+000
5.4999999999999858E+000
5.5999999999999854E+000
5.6999999999999851E+000
5.7999999999999847E+000
5.8999999999999844E+000
5.9999999999999840E+000

Как видите, для Ваших x не получается ни одного верного числа, кроме -8.

Что же делать? Можно, конечно, воспользоваться эпсилон-костылём, наподобие того, как предложил mr-Crocodile, но это приведёт только к неоправданному усложнению программы.

Поскольку у Вас границы кусков функци целые, можно воспользоваться целочисленным счётчиком от -80 до 60, получать "x" делением счётчика на 10, а куски функции выбирать по счётчику, а не по "x", поскольку при выборе по "x" наступим ровно на те же "грабли усечения"

Мой вариант:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
program Firtlab;
 
uses
  crt,
  Math;
 
var
  x, y: real;
  k:    integer;
begin
  clrscr;
  for k := -80 to 60 do
    begin
      x := k / 10;
      if k <= 0  then
        writeln('x = ', x:4:1, ', y is undefined')
      else
        begin
          if k < 10 then
            y := x * x * x * x + cos(x) / ln(x) / ln(10)
          else
            if k < 40 then
              y := cos(x) / x / x / x
            else
              y := cos(2 * x) * 68 + ln(x) / x / x / x;
          writeln('x = ', x:4:1, ', y = ', y:7:3)
        end;
        if (k > -80) and (k mod 20 = 0) then
          begin
            Write('Press Enter');
            readln
          end
      end;
  readln
end.
2
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
10.11.2022, 23:33  [ТС]
mr-Crocodile,
Вау спасибо вам, не много исправила свой код и действительно теперь другой результат!
Большое спасибо
0
Модератор
10477 / 5772 / 3412
Регистрация: 17.08.2012
Сообщений: 17,533
11.11.2022, 00:01
Lari76, я Cyborg Drone.

Добавлено через 24 минуты
Кстати... При k, кратном 10, частное k/10 будет посчитано точно. Значит, куски функции можно выбирать по x:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
program Firtlab;
 
uses
  crt,
  Math;
 
var
  x, y: real;
  k:    integer;
begin
  clrscr;
  for k := -80 to 60 do
    begin
      x := k / 10;
      if x <= 0  then
        writeln('x = ', x:4:1, ', y is undefined')
      else
        begin
          if x < 1 then
            y := x * x * x * x + cos(x) / ln(x) / ln(10)
          else
            if x < 4 then
              y := cos(x) / x / x / x
            else
              y := cos(2 * x) * 68 + ln(x) / x / x / x;
          writeln('x = ', x:4:1, ', y = ', y:7:3)
        end;
        if (k > -80) and (k mod 20 = 0) then
          begin
            Write('Press Enter');
            readln
          end
      end;
  readln
end.
2
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
11.11.2022, 00:14  [ТС]
Cyborg Drone,
Извините, перепутала.
Простите за мою грубость.
0
Модератор
10477 / 5772 / 3412
Регистрация: 17.08.2012
Сообщений: 17,533
11.11.2022, 00:17
Lari76, ничего страшного.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.11.2022, 00:17

Составить программу вычисления значения функций F(x)=cosa/sina
Составить программу вычисления значения функций F(x)=cosa/sina на отрезке в точках {X}_{i}=A+iH, где H=(B*A)/M A=пи/4 B=пи/2 M=15

Дополните программу на языке Паскаль для вычисления значения функций
Здравствуйте! Помогите, пожалуйста, решить задачу по информатике 8 класса для сына, т.к. я в этом вообще ничего не соображаю ( Дана...

Написать программу вычисления заданных функций. На экран вывести значения x, y, z в следующем виде:
Написать программу вычисления заданных функций. На экран вывести значения x, y, z в следующем виде: y=(sin x - cos x)/(x^2 +x+2) z=lg...

Составить программу вычисления N значений функций Y для X, изменяющегося от начального значения Х1 c шагом dx
Помогите пожалуйста решить

Составить программу вычисления N значений функций Y для X, изменяющегося от начального значения Х1 c шагом dx
помогите пожалуйста,заранее спасибо:)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
54
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru