• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

R语言和Python实现分数次幂微积分计算(主要是Python)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

分数次幂微积分计算

引例

       首先,网上目前有很多微积分的实现。例如下面2个以Python示例的微积分计算。

示例1:
from sympy import *
x = Symbol('x')
y = integrate(x*2,(x,-1,1))

示例2:
from sympy import *
t = Symbol('t')
x = Symbol('x')
m = integrate(sin(t)/(pi-t),(t,0,x))
n = integrate(m,(x,0,pi))

       这两种微积分的计算形式其实已经可以解决大多数的微积分计算问题。

       但是后来本人发现有一种微积分形式的出现(也是朋友问我的问题):例如下面两个微积分中出现分数次幂且在分母中的形式,要如何用编程的方式实现计算。

       大家可以先自己实现一下,看看会出现什么问题。其实本文的内容也不是多么高深的实现方式,只是实现计算的一个总结吧。

R语言实现

       在R语言中的实现方式基本不会有太多问题,毕竟R语言本身的数学计算实现能力还是可以的。

# 微积分1
formule1 <- function(x){x/((5-2*x)^0.5)}
integrate(formule1,lower = -2,upper = 2)
# 微积分2
formule1 <- function(x){x/((5-2*x)^(5/2))}
integrate(formule1,lower = -2,upper = 2)

       运行结果:

Python实现

       Python的实现方式开始采用sympy库一直计算不出来。先来计算第一个微积分。

import sympy
x = sympy.Symbol('x')
y = x/((5-2*x)**0.5)
print(sympy.integrate(y,(x,-2,2)))

       运行后会出现报错:

_CoeffExpValueError: expr not of form a*x**b: 0.252313252202016

第一次修改:(失败)

       也就是微积分中的函数形式不能为“a*x**b”。那么如果我将代码中y = x/((5-2*x)**0.5)的次幂部分用pow函数(次幂函数)修改为y = x/pow(5-2*x,0.5),是否可行呢?

y = x/pow(5-2*x,0.5)
print(sympy.integrate(y,(x,-2,2)))

       运行结果会发现还是一样的报错:

_CoeffExpValueError: expr not of form a*x**b: 0.252313252202016

       那是因为虽然采用了pow函数,但是运行之后的函数形式并没有发生变化。

第二次修改:(成功)

       那如果用sqrt函数进行开方呢?即将y = x/((5-2*x)**0.5)的次幂部分用sqrt函数(开方函数)修改为y = x/sympy.sqrt(5-2*x)。

y = x/sympy.sqrt(5-2*x)
print(sympy.integrate(y,(x,-2,2)))

新问题:

       虽然已经运行出结果,但又出现新的问题:上面计算出来的是第一个微积分,它的分母是开方形式,而第二个微积分的分母不是开方形式的函数,而是5/2的形式。

       这时是不能采用sqrt函数,本人尝试使用了很多表达方式,最终在函数中都会转换为“a*x**b”。

       因此,最后还是放弃了sympy库,而使用了SciPy库实现。

from scipy import integrate,sqrt
x1 = lambda x: x/sqrt(5-2*x)
integrate.quad(x1,-2,2)
x2 = lambda x: x/(5-2*x)**0.5
integrate.quad(x2,-2,2)
x3 = lambda x: x/(5-2*x)**(5/2)
integrate.quad(x3,-2,2)

 

文章未经博主同意,禁止转载!

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap