2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите найти ошибку!(питон)
Сообщение01.10.2017, 18:00 
Аватара пользователя
Вот у меня есть задание: нужно найти собственные числа матрицы для вычисления Гамильтониана. Программа худо-бедно, но составлена(надеюсь правильно), но вот беда не запускается! Помогите, пожалуйста, найти ошибку!

код: [ скачать ] [ спрятать ]
Используется синтаксис Python
# -*- coding: utf-8 -*-
"""
Created on Sun Oct  1 16:32:32 2017

@author: Roman
"""

import numpy as np
from math import *
Vxy = 3.71
Vxx = 7.51
Vpp = -8.13
Vss = 5.88
Vsp = 2.31
pi = 3.1415
k = np.array([pi/4, pi/4, pi/4])
E = 7.20
a = 5,4307
i = -1
d1 = np.array([a/4, a/4, a/4])
d2 = np.array([a/4, -a/4, -a/4])
d3 = np.array([-a/4, -a/4, a/4])
d4 = np.array([-a/4, a/4, -a/4])
g1 = exp(i * 1 * (k * d1) + i * 1 * (k * d3) + i *1 * (k * d4))
g2 = exp(i * 1 * (k * d1) + i * 1 * (k * d3) + i *1 * (k * d4))
g3 = exp(i * 1 * (k * d1) + i * 1 * (k * d3) + i *1 * (k * d4))
g4 = exp(i * 1 * (k * d1) + i * 1 * (k * d3) + i *1 * (k * d4))
H = np.array([E, Vss * g1, 0, 0, 0, Vsp * g2, Vsp * g3, Vsp * g4],
             [Vss * (-g1), E, -Vsp * g2, -Vsp * g3, -Vsp * g4, 0],
             [0, -Vsp * g2, E, 0, 0, Vxx * g1, Vxy * g4, Vxy * g3],
             [0, -Vsp * g3, 0, E, 0, Vxy * g4, Vxx * g1, Vxy * g2],
             [0, -Vsp * g4, 0, 0, E, Vxy * g3, Vxy * g2, Vxx * g1],
             [Vsp * (-g2), 0, Vxx * (-g1), Vxy * (-g4), Vxy * (-g3), E, 0, 0],
             [Vsp * (-g3), 0, Vxx * (-g4), Vxy * (-g1), Vxy * (-g2), 0, E, 0],
             [Vsp * (-g4), 0, Vxy * (-g3), Vxy * (-g2), Vxx * (-g1), 0, 0, E])
print(np.linalg.eig(H))

 
 
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 18:24 
Во-первых, она не просто "не запускается", а выдает сообщение об ошибке, не так ли? Во-вторых, если это сообщение почитать, становится ясно, что с одной из переменных что-то не то. Наконец, если внимательно посмотреть на строчку, где эта переменная инициализируется, сразу становится видна опечатка.

-- 01.10.2017, 18:26 --

Потом, кстати, найдутся ошибки "следующего порядка"...

 
 
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 19:05 
Аватара пользователя
Pphantom
Спасибо, да, проблема с переменной
Используется синтаксис Python
d1
, консоль выдает ошибку: line 19 . Я её погуглил, но пока впустую. Я так понял консоль ругается на тип, но не могу понять в чем ошибка, ведь питон-- динамически типизированный язык? Подскажите пожалуйста в чем я заблуждаюсь!

 
 
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 19:33 
Кстати, pi не нужно определять самостоятельно, эта константа как раз есть в math, и вы как раз импортируете оттуда всё.

 
 
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 19:41 
Аватара пользователя
arseniiv
Точно, спасибо!) Не подскажете случаем почему у меня ошибка в переменной: проблема с типом кортежа и переменной что ли?

 
 
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 19:59 
У меня не стоит Python сейчас, а текст ошибки вы не написали, так что не имею даже намёка на представление. Документация по numpy.array ничего страшного не выявила, так что проблема, видимо, в операциях с числами или чём-то подобном, про что я как раз плохо помню.

Нет, теперь пересмотрел код и вижу: ошибка на самом деле не в определении d1, а в определении a: у вас там запятая вместо точки и, кажется, a потому должен присваиваться кортеж (5, 4307), а не 5.4307. Или что-то в том же духе.

 
 
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 20:30 
Romashka97 в сообщении #1252263 писал(а):
a = 5,4307

Точка!

 
 
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 21:02 
Romashka97 в сообщении #1252293 писал(а):
Спасибо, да, проблема с переменной
Нет, проблема не с этой переменной. :-) Она с тем, что Вы пытаетесь в нее поместить.
Romashka97 в сообщении #1252293 писал(а):
консоль выдает ошибку: line 19
Вот прямо так и все? Без каких-либо пояснений?

(Реплика в сторону)

Может, я чего-то не знаю, но мои Python 2.7.13 и Python 3.4.6 несколько более информативны.
arseniiv в сообщении #1252309 писал(а):
Нет, теперь пересмотрел код и вижу: ошибка на самом деле не в определении d1, а в определении a
Вообще-то решать учебные задачи за других нехорошо. :mrgreen:

 
 
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 21:43 

(Решение)

Pphantom в сообщении #1252330 писал(а):
Вообще-то решать учебные задачи за других нехорошо. :mrgreen:
Хм. Но если там оставались ещё ошибки, как вы выше намекали, то уж их я точно не смогу расписать. :-)

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group