Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 1
Регистрация: 09.09.2014
Сообщений: 39

Цикл Python

29.05.2018, 15:30. Показов 920. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не получается сделать цикл. Идея такая, нужно посчитать q[N] и pogr в точках x0=от 0 до 0.9. Например в точке 0.1, 0.2 и тд.
Я попробовал сделать, но у меня получаются не те результаты. Если задать x0=0.9 и сделать все без цикла, то результат q[N] должен быть 1.219...
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/python
import numpy as np 
import pylab as py
import sympy as sp
myeps=0.001
xn=sp.Symbol('xn')
xm=sp.Symbol('xm')
yn=sp.Symbol('yn')
ym=sp.Symbol('ym')
Phi=(1/(2*sp.pi))*sp.log(1/(sp.sqrt((xn-xm)**2+(yn-ym)**2)))
#pprint(Phi)
N=100;Rp=1; Rc=0.001; x0=0; y0=0; xc=x0+Rc; yc=y0; C1=1;
theta=np.linspace(2*np.pi, 0, N+1, endpoint=True)
x=np.array([Rp*np.sin(theta),Rp*np.cos(theta)])
 
 
 
def withoutZero(sFunct=None,minDist=myeps):
    def vectorFunct(A,B,C,D):
        gd=((A-B)**2+(C-D)**2)>minDist**2
        AA=A.copy(); AA[np.logical_not(gd)]+=1
        result=np.zeros_like(A)
        result[gd]=sp.lambdify((xn,xm,yn,ym),sFunct,modules='numpy')(AA,B,C,D)[gd]
        return result
    return vectorFunct
  
def Normal(x1):
    n=x1[0].shape[0]-1
    return np.array([-x1[1,1:]+x1[1,:n],x1[0,1:]-x1[0,:n]])
def last(sFunct=None):
    def vectorFunct(A,B,C,D):
       return sp.lambdify((xn,xm,yn,ym),sFunct,modules='numpy')(A,B,C,D)
    return vectorFunct
with open ('skv.txt', 'w') as skv:
    with open ('pogr.txt', 'w') as pog:
        for x0 in np.linspace(0,1,10, endpoint=False):
      h1=np.array([x[1,:N]/2.+x[1,1:]/2.,x[0,:N]/2.+x[0,1:]/2.])
      Xn,Xm=np.meshgrid(h1[1],h1[1])
      Yn,Ym=np.meshgrid(h1[0],h1[0])
      KF0=withoutZero(sp.diff(Phi,xn),myeps)(Xn,Xm,Yn,Ym)
      KF1=withoutZero(sp.diff(Phi,yn),myeps)(Xn,Xm,Yn,Ym)
      norm=Normal(x)
      Matrix=KF0*norm[0]+KF1*norm[1]
      Matrix=-2*Matrix+np.eye(N)
      XN=h1[1]
      YN=h1[0]
      Kf0=last(sp.diff(Phi,xn))(XN,xc,YN,yc)
      Kf1=last(sp.diff(Phi,yn))(XN,xc,YN,yc)
      stroka=Kf0*norm[0]+Kf1*norm[1]
      Phi0=1/(2*np.pi)*np.log(1/Rc)
      Phi2=2*(1/(2*np.pi)*np.log(1/(np.sqrt((h1[1]-x0)**2+(h1[0]-y0)**2))))
      Phi2=np.append(Phi2,Phi0)
      c = np.row_stack((Matrix,stroka))
      c = np.column_stack((c, Phi2))
      b = np.zeros(N)
      b = np.append(b,C1)
      q = np.linalg.solve(c, b)
      q0=(2*np.pi*C1)/np.log(Rp/Rc)
      pogr=(q[N]/q0-1)
      print q[N]
      #print q0
      #print pogr
      pog.write(str(pogr)+'\n')
      skv.write(str(x0)+'\n')
    
 
skv.close()
pog.close()
data_x = []
with open("skv.txt") as f:
   for line in f:
     data_x.append([float(x) for x in line.split()])
data_y = []
with open("pogr.txt") as f:
   for line in f:
     data_y.append([float(y) for y in line.split()])
#py.plot(data_x, data_y, 'r')
#py.show()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.05.2018, 15:30
Ответы с готовыми решениями:

Цикл в Python
Здравствуйте. Не могу закрыть цикл. Как сделать так чтобы при вводе двух вещественных чисел программа вышла из цикла и продолжила работу? ...

Python, цикл While
Помогите пожалуйста с задачей: Напишите цикл while который позволяет пользователю ввести число. Число должно быть умножено на 10 и...

Python и цикл
import sys import os s = raw_input() a = os.system("python hb.py " + s) Есть вот такая штучка на python, как запускать 'a'...

9
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
29.05.2018, 15:42
Строка 36 и последующие. Что с отступами?? Что в теле цикла for ?
0
1 / 1 / 1
Регистрация: 09.09.2014
Сообщений: 39
29.05.2018, 15:45  [ТС]
Сбились при копировании, скорее всего
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
29.05.2018, 16:07
Не знаю, но так как приведено в посте - цикл for не выполняется ни разу!
0
1 / 1 / 1
Регистрация: 09.09.2014
Сообщений: 39
29.05.2018, 16:18  [ТС]
Исправил отступы, но этот цикл все равно не работает не так как надо
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/python
import numpy as np 
import pylab as py
import sympy as sp
myeps=0.001
xn=sp.Symbol('xn')
xm=sp.Symbol('xm')
yn=sp.Symbol('yn')
ym=sp.Symbol('ym')
Phi=(1/(2*sp.pi))*sp.log(1/(sp.sqrt((xn-xm)**2+(yn-ym)**2)))
#pprint(Phi)
N=100;Rp=1; Rc=0.001; x0=0; y0=0; xc=x0+Rc; yc=y0; C1=1;
theta=np.linspace(2*np.pi, 0, N+1, endpoint=True)
x=np.array([Rp*np.sin(theta),Rp*np.cos(theta)])
 
 
 
def withoutZero(sFunct=None,minDist=myeps):
    def vectorFunct(A,B,C,D):
        gd=((A-B)**2+(C-D)**2)>minDist**2
        AA=A.copy(); AA[np.logical_not(gd)]+=1
        result=np.zeros_like(A)
        result[gd]=sp.lambdify((xn,xm,yn,ym),sFunct,modules='numpy')(AA,B,C,D)[gd]
        return result
    return vectorFunct
  
def Normal(x1):
    n=x1[0].shape[0]-1
    return np.array([-x1[1,1:]+x1[1,:n],x1[0,1:]-x1[0,:n]])
def last(sFunct=None):
    def vectorFunct(A,B,C,D):
       return sp.lambdify((xn,xm,yn,ym),sFunct,modules='numpy')(A,B,C,D)
    return vectorFunct
with open ('skv.txt', 'w') as skv:
    with open ('pogr.txt', 'w') as pog:
        for x0 in np.linspace(0,1,10, endpoint=False):
           h1=np.array([x[1,:N]/2.+x[1,1:]/2.,x[0,:N]/2.+x[0,1:]/2.])
           Xn,Xm=np.meshgrid(h1[1],h1[1])
           Yn,Ym=np.meshgrid(h1[0],h1[0])
           KF0=withoutZero(sp.diff(Phi,xn),myeps)(Xn,Xm,Yn,Ym)
           KF1=withoutZero(sp.diff(Phi,yn),myeps)(Xn,Xm,Yn,Ym)
           norm=Normal(x)
           Matrix=KF0*norm[0]+KF1*norm[1]
           Matrix=-2*Matrix+np.eye(N)
           XN=h1[1]
           YN=h1[0]
           Kf0=last(sp.diff(Phi,xn))(XN,xc,YN,yc)
           Kf1=last(sp.diff(Phi,yn))(XN,xc,YN,yc)
           stroka=Kf0*norm[0]+Kf1*norm[1]
           Phi0=1/(2*np.pi)*np.log(1/Rc)
           Phi2=2*(1/(2*np.pi)*np.log(1/(np.sqrt((h1[1]-x0)**2+(h1[0]-y0)**2))))
           Phi2=np.append(Phi2,Phi0)
           c = np.row_stack((Matrix,stroka))
           c = np.column_stack((c, Phi2))
           b = np.zeros(N)
           b = np.append(b,C1)
           q = np.linalg.solve(c, b)
           q0=(2*np.pi*C1)/np.log(Rp/Rc)
           pogr=(q[N]/q0-1)
           print q[N]
           #print q0
           #print pogr
           pog.write(str(pogr)+'\n')
           skv.write(str(x0)+'\n')
    
 
skv.close()
pog.close()
data_x = []
with open("skv.txt") as f:
   for line in f:
     data_x.append([float(x) for x in line.split()])
data_y = []
with open("pogr.txt") as f:
   for line in f:
     data_y.append([float(y) for y in line.split()])
#py.plot(data_x, data_y, 'r')
#py.show()
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
30.05.2018, 14:40
А "как надо"? Сие известно только тому, кто эту программу писал. С точки зрения остальных программа работает в точности так, как это описано в коде и никак иначе.
0
1 / 1 / 1
Регистрация: 09.09.2014
Сообщений: 39
30.05.2018, 14:52  [ТС]
Как она должна работать по моей задумке, я описал выше, если в ручную перебирать значения x0, то все работает норм, но когда я делаю это в цикле, то прога выдает совсем другое
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
30.05.2018, 14:55
Дебагером пользовались? Изменение переменных по шагам проследили?
Что показала отладка? Где конкретно возникло расхождение ожидаемых и полученных результатов? На каком шаге цикла, в какой операции?

но когда я делаю это в цикле, то прога выдает совсем другое
- подсказка: внутри цикла у вас ошибка в формулах
0
1 / 1 / 1
Регистрация: 09.09.2014
Сообщений: 39
30.05.2018, 17:54  [ТС]
Не знаком со всеми этими вещами, я пробовал через np.linspace разбить x0 от 0 до 0.9, потом задавал цикл for x0 in x0.flat, но все равно результат не верен, хотя х0 вроде бы принимает те значения которые я ему даю
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
31.05.2018, 09:09
Повторю - ошибка в ваших формулах.
Если решили заняться программированием - дебегингом придется заниматься, на каком языке вы бы не программировали. Благо на Python это просто и даже приятно.
По-русски это называется "процесс отладки". Отладка - это 80% работы программиста. Делать это за вас врят-ли кто захочет - мало того, что надо вникать в ваш не шибко красивый код, искать где вместо плюса вы минус поставили, где отсупы неправильно вывели, где лишнюю запятую втулили. Так еще и в вашей задаче разбираться. В общем - самое время начать осваивать.
Удачи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.05.2018, 09:09
Помогаю со студенческими работами здесь

Python цикл
Всем привет! Подскажите пожалуйста, как сделать так, что бы после 6 строки цикл начался по новой ? Спасибо большое. x=input('Would...

Цикл For (python)

Цикл из списка python
здравствуйте, подскажите кому не сложно - как правильно написать цикл. Есть апи запрос на получение списка групп group_id ="" ...

Простейший цикл в python
Прикрепляю схему, не понимаю как реализовать нужный цикл(начинается с 26 строчки): #поиск с помощью библиотечных функций import...

Цикл в цикле Python
делаю так : f = open(format (sys.argv )) ff = open(format (sys.argv )) for line in f: for line2 in ff: print line+' '+line2...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru