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

Нахождение наибольшего и наименьшего значения функции

27.05.2014, 10:39. Показов 2163. Ответов 15
Метки нет (Все метки)

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

Кодим мы вроде на 77 фортране, но я точно не уверен(сорри). Код написал, вроде все ровно, но когда запускаю программу и ввожу n то после этого прога падает, и выдает ошибку:
Нахождение наибольшего и наименьшего значения функции

Помогите решить проблему ни получается, вот уверен проблема где-то перед носом, но не вижу
(код конечно примитивный, можно было использовать подпрограмму, но с ней возникли проблемы , главное чтобы программа дала правильный ответ, и даже если код написан не рациональным способом Буду очень благодарен, если вы сможете мне помочь)
Fortran
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
REAL :: a,b
print*,'Vvedite n'
read*,n
pi=3.14159
a=-(pi/2)
b=pi/2
y=tan(a)
xmin=a
xmax=a
fmin=y
fmax=y
do x=a,b,((b-a)/n)  
  if (tan(x).gt.0) then
   y=tan(x)
  end if
  if (tan(x).le.0) then  
   y=(-2)**tan(x)
  end if
  if(y.gt.fmax) then
   fmax=y
   xmax=x
  end if
  if (y.lt.fmin) then
   fmin=y
   xmin=x
  end if
end do      
print*,'Naibolshee zna4enie fynkcii=',fmax,' pri x=',xmax
print*,'Naimenshiee znachenie funkcii=',fmin,' pri x=',xmin
pause
stop
end
п.с. Я первый раз пишу на этом форуме, если что-то не так делаю то простите
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2014, 10:39
Ответы с готовыми решениями:

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

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

Нахождение наименьшего и наибольшего абсолютного значения
Написать программу, которая находит наименьшее и наибольшее абсолютное значение среди трех заданных...

нахождение наименьшего и наибольшего абсолютного значения
Написать программу, которая находит наименьшее и наибольшее абсолютное значение среди трех заданных...

15
6818 / 4881 / 2061
Регистрация: 02.02.2014
Сообщений: 13,035
27.05.2014, 10:48 2
Цитата Сообщение от NiKeyZ only Посмотреть сообщение
print*,'Vvedite n'
read*,n
зачем вводить? достаточно задать константой.
Fortran
1
n=50
в любом случаем (хоть ручной ввод,хоть константой) в Compaq Visual Fortran 6.6 программа работает.
правильность алгоритма не проверялась.
0
0 / 0 / 0
Регистрация: 25.05.2014
Сообщений: 5
27.05.2014, 10:58  [ТС] 3
Спасибо, но к преподу со своим ноутом не подойдешь, ему надо показать именно на их доисторических компах
Вот для другого варианта, алгоритм тот же был, только там не было тригонометрических функции и числа Пи, все работало и выдавало ответ, может для того фортрана как-то по другому надо искать тангенс? (какой фортран там точно сказать не могу, кажется 77, но компы старые, на хп, лет 15-20 им точно есть D) о нашел "Microsoft Fortran PowerStation 4.0" вот в такой мы кодим)
0
6818 / 4881 / 2061
Регистрация: 02.02.2014
Сообщений: 13,035
27.05.2014, 11:22 4
NiKeyZ only,
пока поправим текст программы..
замените
Fortran
1
2
3
4
5
6
  if (tan(x).gt.0) then
   y=tan(x)
  end if
  if (tan(x).le.0) then  
   y=(-2)**tan(x)
  end if
на

Fortran
1
2
3
4
5
  if (tan(x).gt.0.) then
    y=1/tan(x)
  else
    y=(-2)**tan(x)
  end if
0
0 / 0 / 0
Регистрация: 25.05.2014
Сообщений: 5
27.05.2014, 11:26  [ТС] 5
Ой, описался, спасибо) в 7-ой строке тоже исправил
0
6818 / 4881 / 2061
Регистрация: 02.02.2014
Сообщений: 13,035
27.05.2014, 11:43 6
Цитата Сообщение от NiKeyZ only Посмотреть сообщение
y=(-2)**tan(x)
проблема в ней...

для проверки версии напишите
Fortran
1
y=(-2)+tan(x)
так программа посчитается у вас?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36357 / 20236 / 4211
Регистрация: 12.02.2012
Сообщений: 33,512
Записей в блоге: 13
27.05.2014, 11:46 7
Krasme, рациональнее:

Fortran
1
2
3
4
5
6
tanx=tan(x)
if (ttan(x).gt.0.) then
    y=1/ttan(x)
  else
    y=(-2)**ttan(x)
  end if
0
6818 / 4881 / 2061
Регистрация: 02.02.2014
Сообщений: 13,035
27.05.2014, 12:18 8
Лучший ответ Сообщение было отмечено NiKeyZ only как решение

Решение

Catstail, в чем же рациональность? вдобавок в спешке опечатались..

Добавлено через 25 минут
NiKeyZ only, фу ты, черт...
скобки ни к селу, ни к городу, а я и не обратила внимания.
вот так надо...
Fortran
1
2
3
4
5
  if (tan(x).gt.0.) then
    y=1/tan(x)
  else
    y=-2**tan(x)
  end if
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36357 / 20236 / 4211
Регистрация: 12.02.2012
Сообщений: 33,512
Записей в блоге: 13
27.05.2014, 12:23 9
Лучший ответ Сообщение было отмечено NiKeyZ only как решение

Решение

Ой... Я вот что имел в виду:

Fortran
1
2
3
4
5
6
tanx=tan(x)
if (tanx.gt.0.) then
    y=1/tanx
  else
    y=(-2)**tanx
  end if
Выигрыш вполне очевиден: вместо трех вычислений тангенса - одно.
0
0 / 0 / 0
Регистрация: 25.05.2014
Сообщений: 5
27.05.2014, 13:01  [ТС] 10
Сорри, мне надо было бежать в универ, а ноут бук я с собой не взял, если получится пробраться в кабинет информатики, то обязательно проверю и отпишу, спасибо!))
0
6818 / 4881 / 2061
Регистрация: 02.02.2014
Сообщений: 13,035
27.05.2014, 13:12 11
Цитата Сообщение от Catstail Посмотреть сообщение
Выигрыш вполне очевиден: вместо трех вычислений тангенса - одно.
в маленькой задаче, соглашусь, красиво смотрится. но не стоит привыкать к этому, т.к. привычка может отразиться в больших задачах, типа такой...
Fortran
1
2
3
4
5
6
...
ttan=tan(x)
y=ttan
...
!где-то почти в конце длинной программы
z=ttan ! а что это за ttan?
а если еще использовать подпрограммы по старым версиям фортрана с их common-ами... молчу-молчу...
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36357 / 20236 / 4211
Регистрация: 12.02.2012
Сообщений: 33,512
Записей в блоге: 13
27.05.2014, 13:42 12
Цитата Сообщение от Krasme Посмотреть сообщение
красиво смотрится
- да это не ради красоты... Кстати, возможно, что хороший оптимизирующий компилятор сделает это автоматически. Что же до именования переменных, то есть венгерская нотация. Она позволяет давать объектам внятные, "говорящие" имена.
0
Krasme
27.05.2014, 13:58
  #13

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
венгерская нотация
у любой вещи свои плюсы и минусы, основной минус для меня (цитата из вики)
При изменении типа потребуется изменять имя переменной (не все редакторы кода могут делать это автоматически)
впрочем, каждый программист вырабатывает свою систему написания текста, главное, практика, практика и еще раз практика.. а новичкам слушать всех, и мотать на ус то, что работает :)

0
0 / 0 / 0
Регистрация: 25.05.2014
Сообщений: 5
27.05.2014, 19:23  [ТС] 14
Цитата Сообщение от Krasme Посмотреть сообщение
скобки ни к селу, ни к городу, а я и не обратила внимания.
вот так надо...
Вот как раз убрав скобки программа стала работать, а со скобками вылетает с ошибкой (показанной в шапке)
Спасибо еще раз за помощь
Цитата Сообщение от Catstail Посмотреть сообщение
Выигрыш вполне очевиден: вместо трех вычислений тангенса - одно.
И вам тоже спасибо
0
126 / 113 / 56
Регистрация: 05.12.2012
Сообщений: 463
30.05.2014, 12:29 15
Цитата Сообщение от Catstail Посмотреть сообщение
Выигрыш вполне очевиден: вместо трех вычислений тангенса - одно.
если быть точнее, то
+ вместо двух вычислений - одно
- выделение памяти под переменную
(думаю для этой задачи проблема рациональности играет далеко не первую роль )
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36357 / 20236 / 4211
Регистрация: 12.02.2012
Сообщений: 33,512
Записей в блоге: 13
30.05.2014, 13:40 16
Не соглашусь. При вычислении результата обращение к программе спецфункции в цикле "весит" больше, чем 8 байтов памяти. Вот если бы я предлагал создать массив размером в 100Кб - еще был бы повод для сомнений...
0
30.05.2014, 13:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2014, 13:40
Помогаю со студенческими работами здесь

Нахождение наибольшего и наименьшего значения ф-ции в указаном интервале.
функция имеет вид: ln(x)/x интервал (0,2;4,5)

Нахождения наибольшего и наименьшего значения функции
Добро времени суток! Можете ли помочь понять как мне выполнять поставленную пере домной задачу?...

Написать программу нахождения наибольшего и наименьшего значения функции
Написать программу нахождения наибольшего и наименьшего значения функции y=3x*x+x-4 на интервале c...

Чему равна сумма наибольшего и наименьшего значения функции
сумма наибольшего и наименьшего значения функции y=(\frac{1}{5}sin5x+\frac{1}{5}cos5x)^{2} ...


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

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

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