Я пытаюсь разработать сюжет для моего класса гелиосейсмологии, и вопрос предоставил кусочную функцию, описывающую динамику «жидкостей» в звезде, как будто это одна вещь его это и, если его другое, это. Я получаю снова и снова этот 'Mul' object cannot be interpreted as an integer
, но я работаю с числами в действиях, а не только с целым набором. Я не знаю, как обойти это и нужно руководство. Код выглядит следующим образом.Как определить кусочную функцию в Python с несколькими переменными
import sympy as sy
from sympy import *
from sympy.physics.units import Unit
import numpy as np
import sys
import math
import scipy as sp
from scipy import special
phi = Symbol('phi', Variable = True)
x = Symbol('x', Variable = True, Real = True)
t = Symbol('t', Variable = True, Real = True)
xi = Symbol('xi', Function = True)
Solar_Radius = Symbol('R', Constant = True, unit = "meters")
Sound_Speed = Symbol('c', Constant = True, unit = "meters per second", Real = True)
gamma = Symbol('gamma', Constant = True)
gravity = Symbol('g', Constant = True, unit = "meters per second per second")
Solar_Radius = 6.963 * 10 ** 6
gamma = 5/3
g = 274.8265625336
gas_constant = 8201.25
c = 8.1 * 10 ** 3
for t in range(0,x/c):
xi[x,t] = 0
for t in range(x/c,00):
xi[x,t] = (1/2)*sy.exp(gamma*g*x/(2*c**2))*mpmath.besselj(0, (gamma*g/(2*c)*sy.sqrt(t**2 - ((x/c)**2))),derivative = 0)
Полный Traceback:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-50-3506376f1686> in <module>()
----> 1 for t in range(0,x/c):
2 xi[x,t] = 0
3 for t in range(x/c,00):
4 xi[x,t] = (1/2)*sy.exp(gamma*g*x/(2*c**2))*mpmath.besselj(0, (gamma*g/(2*c)*sy.sqrt(t**2 - ((x/c)**2))),derivative = 0)
TypeError: 'Mul' object cannot be interpreted as an integer
очистить свой импорт. Затем разбейте этот сложный оператор на несколько шагов, чтобы увидеть, в какой строке будет возникать ошибка, пока вы не узнаете, какая операция или объект виноват. – Harrichael
каждый из трех основных «рекламных роликов» разделен, мне жаль, если это вводит в заблуждение. проблема начинается в цикле for, и я не знаю, почему. Я не буду знать, является ли функция бессела ясной или нет, пока я не получу это с первого взгляда. – anabstudent
Кажется, что (x/c) нельзя интерпретировать как целое число. Вы посмотрели, что это за объект? Имеет ли смысл иметь целочисленное значение? Если это так, посмотрите тип объекта с типом (x/c), найдите библиотеку, которая определяет этот тип, и общее представление типа «тип библиотеки». – Harrichael