当前位置: 首页 > news >正文

Python自动化小技巧07——符号计算求方程解、二重积分

平时做高数数分的作业,手算定积分二重积分什么的太复杂了,虽然scipy能实现在方程和定积分上面求数值解,但是很多时候我们的题目里面都会带着a、x等未知参数,这个时候涉及符号运算,需要用到Python的sympy库。下面我们介绍这个库的使用,方程的求解,积分的运算。


定义符号变量

字符是题目里面的未知量,但是我们不能直接把它传入代码,因为就变成了字符串.....

我们需要先使用sympy去定义符号变量:

import sympy as sp
a,x=sp.symbols('a,x')

#或者
sp.var('a ,x ,y')

y=sp.Function('y')   #符号函数

上面代码展示 了两种可以把变量定义为符号变量的方法,还展示了一种定义符号函数的方法。


解方程组

我们拿最经典的一元二次方程ax^2+bx+c=0 求解试试:

import sympy as sp
a,b,c,x=sp.symbols('a,b,c,x')

x0=sp.solve(a*x**2+b*x+c,x)
print(x0)

输出结果没问题


求定积分

还是拿一个简单的定积分来做案例,这样好验证对错。

我们对函数‘a*sin(x)’  在0到π上进行积分,学过最简单的高数应该知道就是正弦函数一个拱门和x轴围城的面积,理论值应该是2a。

import sympy as sp
a,x=sp.symbols('a,x')
x0=sp.integrate(sp.sin(x)*a,(x,0,sp.pi))
print(x0)

 sp.integrate()里面第一个参数是要积分的函数,第二个参数是一个元组(),里面有三个参数,第一个是积分的变量,后面两个参数是这个变量的积分区间。

 运行没问题。


求二重积分

这次拿一个复杂一点的函数,定义在代码里面。

import sympy as sp
sp.var('a ,x ,d')
f = sp.cos (x) *3*a/2+sp.sin(x)*(3**0.5+2)*a/2+d/2*1-sp.sin(2*x+5*sp.pi/12)*2**2*d/2
p=sp.integrate(f, (x, 0, 2), (d, 0, sp.asin(x)))
print (p)

  

可以看到sp.integrate()里面这次是三组参数,第一个依旧是求积分的函数,第二个是x变量和其区间,第三个是d变量和其区间。

三重积分同理,就是多一组参数。

相关文章:

  • js获取本周的周一、周日和上周的周一、周日
  • 基于Php幼儿园管理系统
  • 基于Spring Boot+MySQL的半自动标注系统(人、车、人脸的自动检测)设计与实现
  • 置顶汇总:OpenGL图形学、Shader进阶、Android-RTC视频处理、学术讨论群。
  • SpringBoot项目配置postgresql数据库(配置多数据源)
  • idea分析栈帧链
  • IAR9.30以上版本安装、注册、新建工程和配置过程详细介绍
  • UML测试题(用例图基础b)
  • kvm虚拟机基本管理和网络管理
  • 从零实现深度学习框架——衡量算法的基本指标
  • 【SQL注入】(1)原理,框架
  • 第十六:Fiddler抓包教程(16)-Fiddler如何充当第三者,再识AutoResponder标签-上篇
  • 最优化理论与方法1
  • NR 物理层编码6 - slide 汉明循环码
  • 华为认证WLAN高级工程师 HCIP-WLAN V2.0(中文版)预发布通知
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【译】理解JavaScript:new 关键字
  • 3.7、@ResponseBody 和 @RestController
  • CSS魔法堂:Absolute Positioning就这个样
  • HTML-表单
  • Python中eval与exec的使用及区别
  • SpringCloud集成分布式事务LCN (一)
  • 初识 beanstalkd
  • 浅谈Golang中select的用法
  • 项目管理碎碎念系列之一:干系人管理
  • 正则表达式
  • 积累各种好的链接
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 达梦数据库知识点
  • (06)Hive——正则表达式
  • (C++20) consteval立即函数
  • (C语言)fgets与fputs函数详解
  • (Forward) Music Player: From UI Proposal to Code
  • (java)关于Thread的挂起和恢复
  • (利用IDEA+Maven)定制属于自己的jar包
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • []常用AT命令解释()
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [Android Studio 权威教程]断点调试和高级调试
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [BT]BUUCTF刷题第4天(3.22)
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [C++]STL之map