2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Помогите найти ошибку!(питон)
Сообщение01.10.2017, 18:00 
Аватара пользователя


31/07/16
106
Вот у меня есть задание: нужно найти собственные числа матрицы для вычисления Гамильтониана. Программа худо-бедно, но составлена(надеюсь правильно), но вот беда не запускается! Помогите, пожалуйста, найти ошибку!

код: [ скачать ] [ спрятать ]
Используется синтаксис 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 
Заслуженный участник


09/05/12
25179
Во-первых, она не просто "не запускается", а выдает сообщение об ошибке, не так ли? Во-вторых, если это сообщение почитать, становится ясно, что с одной из переменных что-то не то. Наконец, если внимательно посмотреть на строчку, где эта переменная инициализируется, сразу становится видна опечатка.

-- 01.10.2017, 18:26 --

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

 Профиль  
                  
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 19:05 
Аватара пользователя


31/07/16
106
Pphantom
Спасибо, да, проблема с переменной
Используется синтаксис Python
d1
, консоль выдает ошибку: line 19 . Я её погуглил, но пока впустую. Я так понял консоль ругается на тип, но не могу понять в чем ошибка, ведь питон-- динамически типизированный язык? Подскажите пожалуйста в чем я заблуждаюсь!

 Профиль  
                  
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 19:33 
Заслуженный участник


27/04/09
28128
Кстати, pi не нужно определять самостоятельно, эта константа как раз есть в math, и вы как раз импортируете оттуда всё.

 Профиль  
                  
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 19:41 
Аватара пользователя


31/07/16
106
arseniiv
Точно, спасибо!) Не подскажете случаем почему у меня ошибка в переменной: проблема с типом кортежа и переменной что ли?

 Профиль  
                  
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 19:59 
Заслуженный участник


27/04/09
28128
У меня не стоит Python сейчас, а текст ошибки вы не написали, так что не имею даже намёка на представление. Документация по numpy.array ничего страшного не выявила, так что проблема, видимо, в операциях с числами или чём-то подобном, про что я как раз плохо помню.

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

 Профиль  
                  
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 20:30 
Заслуженный участник


04/03/09
906
Romashka97 в сообщении #1252263 писал(а):
a = 5,4307

Точка!

 Профиль  
                  
 
 Re: Помогите найти ошибку!(питон)
Сообщение01.10.2017, 21:02 
Заслуженный участник


09/05/12
25179
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 
Заслуженный участник


27/04/09
28128

(Решение)

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group