Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.16.218.62] |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток.Нужно написать программу, которая преобразовывает последовательности чисел вида 1,2,3,4.. к такой записи: 1-4, 7-8. Нужно использовать split. Как это реализовать через split?
|
Сообщ.
#2
,
|
|
|
Это Python?
list(map(int, s.split(','))) даст тебе список чисел в строке А дальше ищешь монотонные последовательности вида n, n+1, n+2 (анализируя разности соседних чисел, новая последовательность начинается там, где эта разность не равна 1) и формируешь выходную строку. n -> 'n' n, m -> 'n,m' n, ..., m -> 'n-m' Я предпочитаю list(map(int, s.replace(',',' ').split())), так можно после запятых пробелы вставлять. |
Сообщ.
#3
,
|
|
|
Помогите с программой
|
Сообщ.
#4
,
|
|
|
Помогите пожалуйста знатоки.. Надо сделать так чтобы модуль sg1 заработал. выдает вот такую ошибку
/usr/bin/python /home/kardashevskiy/PycharmProjects/tests/qwe1.py Traceback (most recent call last): File "/home/kardashevskiy/PycharmProjects/tests/qwe1.py", line 51, in <module> v, info = sg1(B, b,tol=1.e-08) File "/home/kardashevskiy/PycharmProjects/tests/sg1.py", line 13, in sg1 r[i]=np.dot(B[i,0:n],x[0:n])-b[i] File "/usr/lib/python2.7/dist-packages/scipy/sparse/compressed.py", line 193, in __sub__ raise NotImplementedError('adding a scalar to a sparse ' NotImplementedError: adding a scalar to a sparse matrix is not supported Process finished with exit code 1 import numpy as np from scipy import sparse def sg1(B,b,tol=1.0e-8): """ Solve the linear system Ax=b by conjugate gradient method """ n=len(b) x=np.zeros((n),'float') r=np.copy(b) for i in range(n): r[i]=np.dot(B[i,0:n],x[0:n])-b[i] s=np.copy® As=np.zeros((n),'float') for k in range(n): for i in range(n): As[i]=np.dot(B[i,0:n],s[0:n]) alpha=np.dot(r,r)/np.dot(s,As) x=x-alpha*s for i in range(n): r[i]=np.dot(B[i,0:n],x[0:n])-b[i] if np.dot(r,r)<tol**2: break else: beta=-np.dot(r,As)/np.dot(s,As) s=r+beta*s return x,k #Hyperbolic equation import numpy as np from scipy import sparse from scipy.sparse import linalg from sg1 import sg1 import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import time def f(x, y, r): return 2*c*(y-y**2+r*(x**2-x)) def poisson(n, h, r): V = [] I = [] J = [] b = [] for j in range(n): for i in range(n): k = i+n*j b.append(h**2*f(i*h+h, j*h+h, r)) V.append(2.-2*r) I.append(k) J.append(k) if i>0: V.append(-1.) I.append(k) J.append(k-1) if i<n-1: V.append(-1.) I.append(k) J.append(k+1) if j>0: V.append® I.append(k) J.append(k-n) if j<n-1: V.append® I.append(k) J.append(k+n) # return ((V, (I,J))), b return sparse.coo_matrix((V, (I,J))), b # return() N =100 h = 1./N c = 4. r = 0.4 tst = time.clock() A, b = poisson(N-1, h, r) B = A.tocsr() v, info = sg1(B, b,tol=1.e-08) dt = time.clock() - tst if iter == 0: print "N = %i, time solution = %1.3e" % (N, dt) fig = plt.figure() ax = Axes3D(fig) x = np.linspace(h/2, 1.-h/2, N-1) y = np.linspace(h/2, 1.-h/2, N-1) X,Y = np.meshgrid(x, y) Z = np.reshape(v, (N-1, N-1)) ax.plot_surface(X, Y, Z, rstride=2, cstride=2, cmap='spectral') plt.show() #x = np.linspace(h/2, 1.-h/2, N-1) |
Сообщ.
#5
,
|
|
|
Urung, и кто будет с отступами разбираться?
|
Сообщ.
#6
,
|
|
|
Мне больше трейдмарки в коде доставляют
|
Сообщ.
#7
,
|
|
|
Это автозамена работает. Ещё один повод заключать код в тэги, помимо сохранения отступов и подсветки.
|
Сообщ.
#8
,
|
|
|
Помогите запустить
import numpy as np from scipy import sparse from scipy.sparse import linalg from sg1 import sg1 import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import time def f(x, y, r): return 2*c*(y-y**2+r*(x**2-x)) def poisson(n, h, r): V = [] I = [] J = [] b = [] for j in range(n): for i in range(n): k = i+n*j b.append(h**2*f(i*h+h, j*h+h, r)) V.append(2.-2*r) I.append(k) J.append(k) if i>0: V.append(-1.) I.append(k) J.append(k-1) if i<n-1: V.append(-1.) I.append(k) J.append(k+1) if j>0: V.append(r) I.append(k) J.append(k-n) if j<n-1: V.append(r) I.append(k) J.append(k+n) return sparse.coo_matrix((V, (I,J))), b N =100 h = 1./N c = 4. r = 0.4 tst = time.clock() A, b = poisson(N-1, h, r) B = A.tocsr() v, info = sg1(B, b,tol=1.e-08) dt = time.clock() - tst if iter == 0: print "N = %i, time solution = %1.3e" % (N, dt) fig = plt.figure() ax = Axes3D(fig) x = np.linspace(h/2, 1.-h/2, N-1) y = np.linspace(h/2, 1.-h/2, N-1) X,Y = np.meshgrid(x, y) Z = np.reshape(v, (N-1, N-1)) ax.plot_surface(X, Y, Z, rstride=2, cstride=2, cmap='spectral') plt.show() А вот модуль sg1 который не работает import numpy as np from scipy import sparse def sg1(B,b,tol=1.0e-8): """ Solve the linear system Ax=b by conjugate gradient method """ n=len(b) x=np.zeros((n),'float') r=np.copy(b) for i in range(n): r[i]=np.dot(B[i,0:n],x[0:n])-b[i] s=np.copy(r) As=np.zeros((n),'float') for k in range(n): for i in range(n): As[i]=np.dot(B[i,0:n],s[0:n]) alpha=np.dot(r,r)/np.dot(s,As) x=x-alpha*s for i in range(n): r[i]=np.dot(B[i,0:n],x[0:n])-b[i] if np.dot(r,r)<tol**2: break else: beta=-np.dot(r,As)/np.dot(s,As) s=r+beta*s return x,k |