鱼C论坛

 找回密码
 立即注册
查看: 1955|回复: 1

[已解决]运行不了,请问这个求解方程组的代码应该怎么样解决bug

[复制链接]
发表于 2023-5-23 20:31:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import numpy as np

from sympy import symbols
b = symbols('b')
z= symbols('z')

import math
result_1 = math.e**(b*z)
result_2 = math.e**(-b*z)

# 求解四元一次方程组Ax = B
A = np.array([[1, b, b**2, b**3], [1, -b, b**2, -b**3], [0, 1, 2*b, 3*b**2], [0, 1, -2*b, 3*b**2]])
B = np.array([[result_1], [result_2], [z*result_1], [z*result_2]])
# 调用numpy中的solve函数求解方程组
x = np.linalg.solve(A, B)
# 输出结果
print("方程组的解为:")
print(x)
@不二如是
最佳答案
2023-5-23 20:33:36
代码中的主要问题是试图将 sympy 符号用于数学和 numpy 操作,这是不允许的。SymPy 是一个用于符号计算的 Python 库,它的操作与 math 或 numpy 模块中的操作不允许混用。在你的代码中,你定义了  b  和  z  为符号变量,然后试图将它们用于  math.e**(-b*z)  这样的表达式,以及构建 numpy 数组  A ,这是不可行的。

如果你需要解符号方程,你需要使用 SymPy 的功能,如下:
from sympy import symbols, Eq, solve, exp

b, z = symbols('b z')

result_1 = exp(b*z)
result_2 = exp(-b*z)

eq1 = Eq(b**3 - b**2 + b - 1, result_1)
eq2 = Eq(-b**3 - b**2 + b - 1, result_2)
eq3 = Eq(3*b**2 - 2*b + 1, z*result_1)
eq4 = Eq(3*b**2 - 2*b + 1, z*result_2)

solutions = solve((eq1,eq2,eq3,eq4), (b, z))

print("方程组的解为:")
for sol in solutions:
    print(sol)

请注意,这只是一个例子,我假设你的方程的形式,你可能需要根据你的实际问题来修改这些方程。

如果你实际上正在处理数值问题,那么你需要为  b  和  z  提供具体的数值。例如:
import numpy as np
import math

b = 2 # 赋值
z = 3 # 赋值

result_1 = math.e**(b*z)
result_2 = math.e**(-b*z)

# 求解四元一次方程组Ax = B
A = np.array([[1, b, b**2, b**3], [1, -b, b**2, -b**3], [0, 1, 2*b, 3*b**2], [0, 1, -2*b, 3*b**2]])
B = np.array([[result_1], [result_2], [z*result_1], [z*result_2]])

# 调用numpy中的solve函数求解方程组
x = np.linalg.solve(A, B)

# 输出结果
print("方程组的解为:")
print(x)

在这个例子中,我假设  b  和  z  的值为2和3,你需要根据你的实际问题来选择合适的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-23 20:33:36 | 显示全部楼层    本楼为最佳答案   
代码中的主要问题是试图将 sympy 符号用于数学和 numpy 操作,这是不允许的。SymPy 是一个用于符号计算的 Python 库,它的操作与 math 或 numpy 模块中的操作不允许混用。在你的代码中,你定义了  b  和  z  为符号变量,然后试图将它们用于  math.e**(-b*z)  这样的表达式,以及构建 numpy 数组  A ,这是不可行的。

如果你需要解符号方程,你需要使用 SymPy 的功能,如下:
from sympy import symbols, Eq, solve, exp

b, z = symbols('b z')

result_1 = exp(b*z)
result_2 = exp(-b*z)

eq1 = Eq(b**3 - b**2 + b - 1, result_1)
eq2 = Eq(-b**3 - b**2 + b - 1, result_2)
eq3 = Eq(3*b**2 - 2*b + 1, z*result_1)
eq4 = Eq(3*b**2 - 2*b + 1, z*result_2)

solutions = solve((eq1,eq2,eq3,eq4), (b, z))

print("方程组的解为:")
for sol in solutions:
    print(sol)

请注意,这只是一个例子,我假设你的方程的形式,你可能需要根据你的实际问题来修改这些方程。

如果你实际上正在处理数值问题,那么你需要为  b  和  z  提供具体的数值。例如:
import numpy as np
import math

b = 2 # 赋值
z = 3 # 赋值

result_1 = math.e**(b*z)
result_2 = math.e**(-b*z)

# 求解四元一次方程组Ax = B
A = np.array([[1, b, b**2, b**3], [1, -b, b**2, -b**3], [0, 1, 2*b, 3*b**2], [0, 1, -2*b, 3*b**2]])
B = np.array([[result_1], [result_2], [z*result_1], [z*result_2]])

# 调用numpy中的solve函数求解方程组
x = np.linalg.solve(A, B)

# 输出结果
print("方程组的解为:")
print(x)

在这个例子中,我假设  b  和  z  的值为2和3,你需要根据你的实际问题来选择合适的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 10:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表