![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
dizzy1984 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 1 Всего: 25 |
Есть функция
и функция
Можно ли создать функцию из которой я могу вызвать любую из этих, заданную в качестве аргумента? пример f3( f1, 1, 2 ); f3( f2, 1) ? |
||||
|
|||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
|
|||
|
||||
dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 1 Всего: 25 |
Т.е получается, что обе функции должны быть оформлены, как функции с переменным числом аргументов?
Вроде такого
|
|||
|
||||
_Viper_ |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 8.11.2006 Репутация: 10 Всего: 11 |
|
||||
|
|||||
dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 1 Всего: 25 |
Спасибо!
|
|||
|
||||
Virtuos86 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 4.12.2009 Где: Томская обл. Репутация: нет Всего: нет |
А что функция apply уже устарела?
Это сообщение отредактировал(а) Virtuos86 - 15.1.2010, 14:38 |
|||
|
||||
Артемий123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 18.1.2010 Репутация: нет Всего: нет |
горю,програмисты! третий день бьюсь над тем, чтобы написать универсальный цикл для поиска максимума функции с n-ным количеством переменных,пришел к тому,что получается цикл while в таком же цикле while n-ое количество раз и каждый цикл со своей переменной. а нужно как-то от этого уйти, может есть какой-то команда которая поможет мне избавиться от этой бесконечности? ниже привожу пример того на чем остановился:
def f(x,z): return sin(x)-cos(z) x2=10*pi z2=5*pi e=0.1*pi y1=f(x,z) ymax=y1 xmax=x zmax=z while x<x2: x=x+e y2=f(x,z) if y2>y1: ymax=f(x,z) xmax=x zmax=z y1=f(x,z) while z<z2: z=z+e y2=f(x,z) if y2>y1: ymax=f(x,z) xmax=x zmax=z y1=f(x,z) print ymax,xmax,zmax это для двух переменных, для трех соответсвенно на один цикл больше и т.д. как это записать? помогите чем можете. Добавлено через 13 минут и 33 секунды ![]() ![]() |
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: нет Всего: 13 |
Артемий123, обычно дать ответ сложнее чем задать вопрос. Может задашь вопрос так, что-бы тебя поняли? Этот кусок кода, который ты привёл, вообще не рабочий, просто
непонятно что вообще за x и z такие. Они нигде не инициализируются. Python обладает большими возможностями, наверняка есть простое решение, только объясни что тебе надо конкретно. Не жди что каждый будет ломать голову в надежде понять что именно ты хочешь. Это сообщение отредактировал(а) Леопольд - 19.1.2010, 01:58 -------------------- вопросов больше чем ответов |
|||
|
||||
Virtuos86 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 4.12.2009 Где: Томская обл. Репутация: нет Всего: нет |
Я так понял, что в лоб будет трудно решить такую задачу.
В решении появляется факториал от числа аргументов функции, т.е. при приличном количестве аргументов время работы программы резко возрастет. Поэтому нужно включать голову.
1. Берем выражение, по которому вычисляется результат - "sin(x) - cos(z)". 2. Находим максимальные значения положительных членов этого выражения. Здесь это "sin(x)", но могут быть и другие. Например, x изменяется от -pi до 5*pi. Куда там x подставляется, в sin? Находим максимум sin(x) для заданного для x интервала. И так по всем членам выражения(sin(x) и остальные члены со знаком плюс). 3. Аналогично находим минимальные значения отрицательных членов выражения(-cos(y) и т.д.) 4. Находим значение выражения, подставляя полученные значения. 5. Вот и результат. |
|||
|
||||
shupg |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 21.6.2006 Репутация: 2 Всего: 2 |
Хотя мне кажется дело не в этом..
Мне кажется, что подобные задачи лучше решать с помощью математики, чем с помощью автоматизированного перебора. Тригонометрия в помощь!
Насчёт того, что аргументов и функция может быть другая может быть много: попробуй почитать что-н-ть типа того: http://radiomaster.ru/articles/view/137/ Просто автоматизируя "на голую". |
||||||
|
|||||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 1 Всего: 97 |
Модератор: Пожалуйста, один топик - один вопрос.
Артемий123, как бы вы ни горели, создайте отдельную тему. Кроме того, для кода нужно использовать подсветку синтаксиса, а так же учитывать, что телепатов здесь нет. Это сообщение отредактировал(а) powerfox - 19.1.2010, 16:45 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |