首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何求方程f(x)=0的所有可能形式x=p(x)

如何求方程f(x)=0的所有可能形式x=p(x)
EN

Stack Overflow用户
提问于 2018-01-16 12:26:57
回答 2查看 75关注 0票数 0
代码语言:javascript
运行
复制
x**3-2*x-5=0

得到以下形式x= p(x),其中p(x)是连续可微的:

代码语言:javascript
运行
复制
x=5/(x**2-2)

x=(2*x+5)**(1/3)

x=(x**3-5)/2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-16 21:02:46

这只是一个粗略的解决方案..

代码语言:javascript
运行
复制
from  sympy import *
import numpy as np
var('x')
expr=sympify('x**3-2*x-5')
p = poly(expr);

p1=factor(p-(p).coeff_monomial(1))
for i in p1.args:
    if (poly(i).is_monomial):
        z=(np.prod([j for j in p1.args if j!=i]))
        p2=(-(p).coeff_monomial(1)/z)**(1/degree(i));
        v=i.coeff(x)
        if p2:print(p2)
        elif v:
                p2=(-z/v)
                print(p2)
for i in (p.all_terms())[:-1]:
    if i[1]:
        p3= ((i[1]*x**i[0][0]-expr)/i[1])**(1/Integer(i[0][0])) ;print(p3);

'''o
5/(x**2 - 2)
(2*x + 5)**(1/3)
x**3/2 - 5/2
'''
票数 0
EN

Stack Overflow用户

发布于 2018-01-16 13:11:07

给定一个假设为零的表达式,例如expr = x**3-2*x-5,可以以多种方式形成方程x= p(x)。最简单的方法是将x加到两边:Eq(x, expr + x)

这将如预期的那样打印:pprint(Eq(x, expr + x))

代码语言:javascript
运行
复制
     3        
x = x  - x - 5

几个更有趣的重写:

牛顿法的迭代:Eq(x, simplify(x - expr/diff(expr, x)))

代码语言:javascript
运行
复制
       3    
    2⋅x  + 5
x = ────────
       2    
    3⋅x  - 2

将前导项单独放在一边,然后扎根:

代码语言:javascript
运行
复制
p = poly(expr)
Eq(x, (LM(p) - expr)**(1/degree(p))) 

    3 _________
x = ╲╱ 2⋅x + 5 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48274101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档