Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 03.10.2018
Сообщений: 57

Функция не видит переменные

23.04.2020, 23:11. Показов 4135. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Функция не видит переменные, какую бы не вставил вместо c0.Как это можно пофиксить?Фотография 1
И еще такой вопрос, правильно ли я сделал систему?То есть мне нужно одной функцией посчитать x2 и подставить во вторую.Если нет,то подскажите как надо, пожалуйста.Фотография 2
Python
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
import numpy as np
import scipy.integrate as integrate
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
 
#define universal variables
c0 = 0.03
c1 = 10
c3 = 3
m0=1
m1=2
m=m0/m1
#just a little extra, quite unimportant
def f(x):
    f = ((-m)*x)+(1/2)*((m0+m1)/m1)*(abs(x+1.0)-abs(x-1.0))
    return f
#the actual function calculating
def x(G):
    return np.array([(-c1/c3)*f(G[1]-G[0]),
                     (-1/c3)*(f(G[1]-G[0])+G[2]),
                     c3*G[1]])
def dH_dt(H, t=0):
    return np.array([(-c1/c3)*f(H[1]-H[0]),
                     (-1/c3)*(f(H[1]-H[0])+H[2])+(с03)*(G[1]-H[1]),
                     c3*H[1]])
#computational time steps
t = np.linspace(0, 500, 4000)
#x, y and z initial conditions
G0 = [0.7, 0.7, 0.7]
H0 = [0.7, 0.7, 0.7]
H, infodict = integrate.odeint(dH_dt, H0, t, full_output=True)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(H[:,0], H[:,1], H[:,2])
plt.show()
Миниатюры
Функция не видит переменные   Функция не видит переменные  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.04.2020, 23:11
Ответы с готовыми решениями:

функция MAIL(не видит переменные с формы)
Здравствуйте, подскажите пожалуйста в чем проблема.. Вот форма в html-странице: <form action="mail_go.php"...

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

Форма передает данные, скрипт видит переменные, но не видит их значение
Доброго времени суток всем! У меня проблема, если не трудно- помогите plz! Форма передает данные, скрипт видит переменные, но не видит их...

25
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
24.04.2020, 13:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от sqrt322 Посмотреть сообщение
def y(x):
    x1=(c1/с3)*f(x2-x1),
    x2=(-1/с3)*(f(x2-x1)+x3),
    x3=c3*x2
    print('x равно', x2)
    return x2
тоже вызывает вопросы:
1) зачем есть аргумент х, ты его нигде внутри функции не используешь
2) зачем мы рассчитываем х3 - нигде потом не используем
3) х1 и х2 в своем рассчете используют друг друга, это вообще по идее не должно работать никак

попробуй просто функцию у(игрек) вызвать с каим то аргументом -разве она работает?
0
0 / 0 / 0
Регистрация: 03.10.2018
Сообщений: 57
24.04.2020, 13:52  [ТС]
Welemir1,Вот если кракто,то система имеет вид(картинка 1),то есть мы считаем в первой системе х2 с точкой и подставляем во вторую систему.Зачем мы считаем х3 мне тоже не особо ясно,но так видимо надо.Я немного переделал код, по моей ужасной логике-так правильнее.Но возникает ошибка, которую я писал выше.
Python
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
41
42
43
44
import numpy as np
import scipy.integrate as integrate
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
 
#define universal variables
с0 = 0.03
c1 = 10
c3 = 3
m0=1
m1=2
m=m0/m1
x=1
x2=2
x3=3
x1=1
 
#just a little extra, quite unimportant
def f(x):
    f = ((-m)*x)+(1/2)*((m0+m1)/m1)*(abs(x+1.0)-abs(x-1.0))
    return f
#the actual function calculating
def y(x1,x2,x3):
    x11=(c1/c3)*f(x2-x1),
    x22=(-1/c3)*(f(x2-x1)+x3),
    x33=c3*x2
    print('x равно', x22)
    return x22
 
 
def dH_dt(H, t=0):
    return np.array([(-c1/c3)*f(H[1]-H[0]),
                     (-1/c3)*(f(H[1]-H[0])+H[2])+(с0/c3)*(y(x1,x2,x3)-H[1]),
                     c3*H[1]])
#computational time steps
t = np.linspace(0, 500, 4000)
#x, y and z initial conditions
G0 = [0.7, 0.7, 0.7]
H0 = [0.7, 0.7, 0.7]
H, infodict = integrate.odeint(dH_dt, H0, t, full_output=True)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(H[:,0], H[:,1], H[:,2])
plt.show()
Миниатюры
Функция не видит переменные  
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.04.2020, 18:33
Лучший ответ Сообщение было отмечено sqrt322 как решение

Решение

Цитата Сообщение от sqrt322 Посмотреть сообщение
Но возникает ошибка, которую я писал выше
Все элементы массива numpy должны быть одного типа. Иначе они нафиг не нужны, ибо становятся типа object.
Что у вас в массиве мне неизвестно и как его кастануть к одному типу не скажу.
Попробуйте его вывести принтом и посмотреть что у вас там. Если там инты вперемешку с флоатами и чем-то еще - приводите все к одному типу.
И еще массив numpy не должен быть рваным, то иметь разную размерность по числу элементов в строках.

То есть вот та кнормально:
Python
1
2
>>> np.array([(0,1.3),(0, 1.2)]).dtype
dtype('float64')
Вот так плохо:
Python
1
2
3
>>> np.array([(0,1.3,0),(0, 1.2)]).dtype
dtype('O')
>>>

P.S. Перестаньте давать переменным и функциям математич. имена.
Программирование это не мелом по доске черкать.
Если вы хотите, чтобы ваш код прочитали - давайте человекочитаемые имена переменным.
И делайте, пожалуйста, пробелы между переменными и операторами.

Добавлено через 27 минут
В общем вы написали такой страшный говнокод, что я понял где ошибка только переписав функцию dH_dt с разбивкой на вычислительные части.
Оказалось что y_result, то есть результат возврата функции y это кортеж, а не число.
Кортеж, потому что в функции y вас стоит случайная запятая после x22=(-1/c3)*(f(x2-x1)+x3),
Таким образом x22 превращается в кортеж из одного числа.
Кортеж, естественно нельзя умножать или складывать с числами, из-за него менялся тип numpy массива на object и т.д.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def dH_dt(H, t=0):
    y_result = y(x1, x2, x3)
    f_result = f(H[1] - H[0])
    f_result2 = f_result + H[2]
    f_result3 = y_result - H[1]
    
    arr = [
        (-c1/c3) * f_result,
        (-1/c3) * f_result2 + (с0/c3) * f_result3,
        c3 * H[1]
    ]
    
    return np.array(arr)
1
0 / 0 / 0
Регистрация: 03.10.2018
Сообщений: 57
24.04.2020, 21:37  [ТС]
Garry Galler, У меня возникла новая проблема с это же программой, не могли бы помочь еще раз, пожалуйста.В это раз сложнее чем с случайной запятой...
Если кратко,то должна быть взаимосвязанная картинка.У меня получилось построить для каждой системы отдельно(как вы прислали, и два графика на одной картинке),но как можно построить взаимосвязанные?Насколько я понял, в конечном счете должно получится что-то такое.То есть по логике, нужно чтобы был массив из функции y(x1,x2,x3),но при этом нужно из этого массива передавать х22(как было до этого) в функцию dH_dt.
Миниатюры
Функция не видит переменные  
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
24.04.2020, 21:58
Welemir1, После того, как ТС вместо того , что бы поблагодарить, что с ним неучем возятся, он еще в грубой форме заявляет что это Вы плохо понимаете, я бы после этого перестал помогать.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
24.04.2020, 22:25
Viktorrus, всегда есть надежда...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2020, 22:25
Помогаю со студенческими работами здесь

Не видит переменные
Здравствуйте. Я тут небольшой код написал и когда вводишь в textbox 1/2 значения, при нажатии на кнопку "Вычислить" он пишет 00....

Скрипт не видит переменные
Привет, друзья. Подскажите, почему переменные не видит скрипт в массиве которые. Ниже скрипт: for ($x=0; $x<2; $x++) { ...

Программа не видит переменные
помогите пожалуйста, я возвращаю в методе maxIndex и mixIndex но в Main он их не видит, как правильно сделать?using System; using...

Include не видит переменные
Здравствуйте властелины php. Подключаю файл с помощью include, в нем используется переменные $pages и $y, но он не видит их значений, зато...

Среда не видит переменные
А чего - это так и должно быть - среда не видит переменные в следующем цикле for? Первый цикл for, в него вложен второй цикл. Потом ещё...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru