大佬们看看,一个代码作业,弄了好久没有弄出来,报错原因怎么都找不着,我是菜鸟,劳烦帮助一下!

文章介绍了如何使用Python的SymPy库求解数学表达式的导数,并尝试采用二分法寻找导数的根,但遇到问题。作者寻求复盘解决过程中的错误原因。
摘要由CSDN通过智能技术生成
import sympy as sp

x = sp.Symbol('x')

# 定义表达式
expr1 = (x-1)*(x-2)*(x-3)*(x-4)

# 求解表达式的导数
derivative = expr1.diff(x).expand()
print(derivative)

def bisection(a, b, tol):
    if expr1.diff(a) * expr1.diff(b) < 0:
        print("存在实根")
    else:
        print("没有实根")

    while (b - a) / 2 > tol:
        c = (a + b) / 2
        if expr1.diff(c) == 0:
            return c
        elif expr1.diff(c) * expr1.diff(a) < 0:
            b = c
        else:
            a = c

    return (a + b) / 2

a = sp.Symbol('a')
b = sp.Symbol('b')
tol = sp.Symbol('tol')

a = sp.sympify(1)
b = sp.sympify(4)
tol = sp.sympify(1e-6)

x1 = bisection(a, b, tol)
x2 = bisection(x1, b, tol)
x3 = bisection(a, x2, tol)

print("精确值:", x1, x2, x3)

我的做法就是先调用库求导,然后得出那个导数的式子,并且将其展开化简成一般形式,之后我想求出这个导数的根(二分法),但是无论怎么弄都没有正确,一直报错。提交时间已经过去了,我现在是事后回来想复盘一下是什么情况

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值