F#表达式积分

简介: 如何用F#对数学公式进行不定积分(x^3)-x => (0.25*x^4)-(0.5*x^2)

     前面一篇博文,介绍了F#对数学表达式进行求导运算,这里再介绍一下如何用F#对数学表达式求积分。求符号积分比求导要复杂一点,其复杂不在于原理,而在于求导的规则少,而求积分的规则非常多,要想相对全面的涵盖是比较难的。

  这里只是探索一个求积分的思路,而不会实现一个功能完备的积分引擎。首先还是定义一个数据类型:

typeExpr=|CstFoffloat|Varofstring|AddofExpr*Expr// +|SubofExpr*Expr// -|MulofExpr*Expr// *|DivofExpr*Expr// / |PowofExpr*Expr// ^ |SinofExpr|CosofExpr|NegofExpr

   再次,给出一个包含少数积分规则的求积分函数:

letrecintfe=matchewith|CstFf->Mul(CstFf, Var"x")
|Varx->Mul(CstF0.5, Pow(Varx,CstF2.))
|Add(e1, e2)           ->Add(intfe1, intfe2)
|Sub(e1, e2)           ->Sub(intfe1, intfe2)
|Pow(Varx,CstFa)     ->Mul(CstF (1./(a+1.)),Pow(Varx,CstF (a+1.)))
|e->e

  这里主要就是最后一条,即 x ^ a 求积分为 x^(a+1)/(a+1) 。同样的,给出DSL字符串输出的函数:

letrecprintExpr2e=matchewith|CstFf->stringf|Varx->x|Add(e1 , e2) ->"("+ (printExpr2e1) +"+"+ (printExpr2e2) +")"|Sub(e1 , e2) ->"("+ (printExpr2e1) +"-"+ (printExpr2e2) +")"|Mul(e1 , e2) ->"("+ (printExpr2e1) +"*"+ (printExpr2e2) +")"|Div(e1 , e2) ->"("+ (printExpr2e1) +"/"+ (printExpr2e2) +")"|Pow(e1 , e2) ->"("+ (printExpr2e1) +"^"+ (printExpr2e2) +")"|Sin(e1) ->"sin("+ (printExpr2e1) +")"|Cos(e1) ->"cos("+ (printExpr2e1) +")"|Neg(e1) ->"-("+ (printExpr2e1) +")"|_->failwith"unknown operation";;

  最后,计算一下数学公式(x^3)-x的积分值:

lete1=Sub(Pow(Var"x", CstF3.0), Var"x");; 
printExpr2e1+" => "+printExpr2 (intfe1) ;; 

  运行此示例,输出结果如下:

1628574321590046518.jpg

(x^3)-x的积分表达式为: 0.25*x^4 - 0.5*x^2 。

相关文章
|
3月前
|
存储 人工智能 并行计算
AI算力选择终极指南:如何像配电脑一样,配好你的大模型“发动机”
博主maoku为你详解AI算力配置:用“计算—存储—网络”铁三角模型,通俗类比GPU显存(油箱)、互联带宽(传动轴)、存储分层(粮仓+传送带)等核心概念;提供四步实战指南——需求诊断、GPU选型、部署模式(云主机/容器/裸金属)、成本优化,并教你看懂利用率、吞吐量与真实成本。助你告别CUDA OOM焦虑,高效构建高性价比大模型环境。
|
11月前
|
边缘计算 人工智能 5G
5G引领家庭网络升级:速度、稳定性与智能化的新时代
5G引领家庭网络升级:速度、稳定性与智能化的新时代
741 69
|
3月前
|
人工智能 搜索推荐 机器人
2026AI数字人国高技术企业介绍
截至2026年,AI数字人迈向“价值创造”新阶段:多模态融合大模型与AIGC,实现自然交互与内容自动生成;应用场景从展示延伸至电商、教育、政务等生产力领域;微调与RAG技术并行,平衡知识稳定性与实时性;用户体验更重情感化、个性化与跨端一致。工具平民化推动竞争转向提示词工程与运营优化,数字人正成为具备智能决策与持续学习能力的新型数字员工,加速产业落地。
|
4月前
|
传感器 人工智能 物联网
数字孪生项目的开发
数字孪生不仅是3D建模,更是物理实体、实时数据与仿真模型的深度融合。通过IoT感知、多层架构与引擎渲染,实现虚实同步、动态交互与智能预测,广泛应用于工业、医疗与城市数字化。#数字孪生 #智慧系统开发
|
安全 算法 量子技术
【HTTPS】中间人攻击和证书的验证
【HTTPS】中间人攻击和证书的验证
346 1
|
存储 自动驾驶 开发工具
在进行YOLOv3模型部署时,如何评估和选择最适合的硬件平台?
在进行YOLOv3模型部署时,如何评估和选择最适合的硬件平台?
【科研技巧】简单的在Office Word 2019中设置页脚的页码从指定页(正文)开始
如何在Microsoft Word 2019中设置页码从指定页面(通常是正文开始页)启动的方法。
745 2
|
消息中间件 运维 监控
Linux命令ipcs详解:IPC对象的全面洞察
`ipcs`命令详解:Linux下用于洞察IPC(消息队列、信号量、共享内存)对象的工具。它列出系统中的IPC资源,显示详细信息,如ID、所有者、权限等。参数如`-m`、`-q`、`-s`分别显示共享内存、消息队列和信号量信息。结合`-l`或`-c`可调整输出格式。定期检查IPC状态有助于系统管理和性能优化。需注意权限和谨慎操作。
|
安全 网络架构
什么是 ESS?
【8月更文挑战第24天】
3246 0
|
存储 移动开发 C#
一篇文章讲明白MIME详解
一篇文章讲明白MIME详解
827 0