0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 20
1

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

10.03.2015, 13:38. Показов 2824. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: используя оператор условия (if … then), составить программу для вычисления составной (сложной) функции, имеющей различный вид на разных участках аргумента
Все исходные данные, необходимые для проведения вычислений, вводить с клавиатуры.

Функция

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
y=\begin{cases}\cos x+\operatorname{tg}x & \text{, } -1\leq x< -0.5\\ 2\,\arcsin x+1.4 & \text{, } -0.5\leq x<0.5\\ -x^6\,\ln(1+x)+2.45 & \text{, } 0.5\leq x<1\\ -3(x-1.6)^2+2.8 & \text{, }1\leq x\leq 2\end{cases}<br />

Добавлено через 14 часов 42 минуты
Помогите сделать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2015, 13:38
Ответы с готовыми решениями:

Составить программу для вычисления составной (сложной) функции
Помогите пожалуйста. Используя, оператор условия (if … then), составить программу для...

Оператор условия. Составить программу для вычисления составной (сложной) функции
Помогите пожалуйста... Используя оператор условия (if … then ... else), составить программу для...

Используя оператор условия (if … then), составить программу для вычисления составной (сложной) функции
Задание: используя оператор условия (if … then), составить программу для вычисления составной...

Используя оператор условия (if … then), составить программу для вычисления составной (сложной) функции
Задание: используя оператор условия (if … then), составить программу для вычисления составной...

5
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 20
10.03.2015, 14:25  [ТС] 3
Я составил, но увы, не уверен, что правильно:
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
uses crt;
var
   x,y:real;
   
function tg(n:real):real;
begin
tg:=sin(n)/cos(n);
writeln(sin(n),' || ', cos(n));
end;
 
function arcsin (x : real) : real;
begin
Arcsin := arctan(x/Sqrt(1-sqr(x)));
end;
   
begin
write('Input x: ');
readln(x);
if (x>=1)and(x<-0.5) then
y:=cos(x)+tg(x);
if (x>=-0.5)and(x<0.5) then
y:=2*arcsin(x)+1.4;
if (x>=0.5)and(x<1) then
y:=exp(ln(-x)*(1/6))*ln(1+x)+2.45;
if (x>=1)and(x<=2) then
y:=-3*sqrt(x-1.6)+2.8;
writeln('y=',y:0:2);
end.
0
Модератор
9950 / 5307 / 3326
Регистрация: 17.08.2012
Сообщений: 16,198
10.03.2015, 14:33 4
Цитата Сообщение от shemshur2014 Посмотреть сообщение
Pascal
24
y:=exp(ln(-x)*(1/6))*ln(1+x)+2.45;
Не понял, что Вам нужно вычислить:

1) (-x)6
2) -x6
3) https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt[6]{\begin{matrix}\\\\ -x\end{matrix}}
0
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 20
10.03.2015, 18:13  [ТС] 5
Второй вариант
0
Модератор
9950 / 5307 / 3326
Регистрация: 17.08.2012
Сообщений: 16,198
10.03.2015, 19:15 6
Тогда должно быть
Pascal
24
y:=-exp(ln(x)*6)*ln(1+x)+2.45;
Однако, при целочисленных показателях степени n не следует увлекаться exp(n∙ln(x)), тем более, что ln(x) при x ≤ 0 не определён, что частенько вызывает ошибку при работе программы. Вот, одна из дискуссий насчёт возведения в степень с помощью логарифмирования/потенцирования: Напишите программу, которая вводит два вещественных числа (x и y) и вычисляет значение x^y. Возведение в целую степень, тем более, в небольшую, лучше делать с помощью умножения, в крайнем случае, умножения в цикле. Ну да, с логарифмом вроде как красивше, но и всего лишь.

Ещё. Пользуйтесь редактором формул.

При исправлении сообщения #1, кстати, я исправил несуразное условие 1<=x<-0.5 (никогда не выполнится) на очевидное -1<=x<-0.5.

Преступим. Вы написали (за исключением неточности с логарифмом) вполне рабочий код. Условный оператор проще составной применить. Незачем писать в программе uses crt; если ничего из модуля crt в программе не используется. У Вас неправильная реакция программы в случае ввода аргумента, не входящего в область определения функции. Вот, подправил:
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
var x, y: real;
 
function tg(n: real): real;
begin
  tg := sin(n) / cos(n)
end;
 
function arcsin(x: real): real;
begin
  arcsin := arctan(x / sqrt(1 - x * x))
end;
 
begin
  write('x = ');
  readln(x);
  if (x < -1) or (x > 2)
  then writeln('Function is undefined')
  else
    begin
      if (-1 <= x) and (x < -0.5)
        then y := cos(x) + tg(x)
        else if x < 0.5
          then y := 2 * arcsin(x) + 1.4
          else if x < 1
            then y := -x * x * x * x * x * x * ln(1 + x) + 2.45
            else if x <= 2
              then y := -3 * sqrt(x - 1.6) + 2.8;
      writeln('y = ', y:0:5)
    end
end.
Ещё на будущее. В данном случае этого не требуется, но для функций, определённых не на всей числовой оси, нужно делать проверку на допустимость аргумента. И при недопустимом аргументе не передавать его функции, а производить адекватные действия в программе, например, вывести сообщение об ошибке. У Вас из таких функций применяются тангенс, арксинус, натуральный логарифм и квадратный корень.
0
10.03.2015, 19:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2015, 19:15
Помогаю со студенческими работами здесь

Используя, оператор условия (if … then), составить программу для вычисления составной (сложной) функции
Используя, оператор условия (if … then), составить программу для вычисления составной (сложной)...

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

Используя оператор условия, составить программу для вычисления составной функции
Используя, оператор условия (if … then), составить программу для вычисления составной (сложной)...

Составить программу для вычисления составной функции, имеющей различный вид на разных участках аргумента
Всем доброе время суток! Очень нужна помощь! Задание: используя оператор условия (if … then),...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru