Python 函数绘图及函数图像微分与积分


Posted in Python onNovember 20, 2019

前言

在学校太闲,就写了这个程序,可以绘制函数图像,并且可以绘制其导函数图像和不定积分的图像,效果非常不错。

效果图

Python 函数绘图及函数图像微分与积分

说明

1,程序无法绘制复数图像,若函数返回一个复数,将自动取模作为函数值进行绘制。

2,函数的表达式支持Python所有内置函数和math库,time库,random库的函数(要求函数返回的是数字)。

3,@(“g(x)”)和$(“g(x)”)是g(x)的导函数和不定积分的固定格式,其中g(x)是被微函数的表达式或者被积函数的表达式,”g(x)”或者'g(x)'表示它是个表达式而不是数字,若不加引号将无法正常微积分。

4,具体使用方法请看效果图,并理解代码。

代码

# Python 3.x
import turtle
from random import *
from math import *
from time import *

def draw():
  turtle.pencolor(random(), random(), random())
  global n, sf
  n = 0
  sf = 0
  while n > width / (-2 * zoom):
    f = evale(express, n)
    drawf(n, f)
    n -= (1 / zoom)
  n = 0
  sf = 0
  while n < width / (2 * zoom):
    f = evale(express, n)
    drawf(n, f)
    n += (1 / zoom)

def drawf(n, f):
  if n == 0 or isnan(f.real):
    turtle.penup()
  else:
    turtle.pendown()
  if isnan(f.real):
    f = 0
  elif n.imag != 0:
    f = abs(f)
  if hight / -zoom < f.real < hight / zoom:
    turtle.goto(n * zoom, f.real * zoom)

def drawxy():
  turtle.clear()
  turtle.pencolor(0, 0, 0)
  turtle.penup()
  turtle.goto(0, 0)
  turtle.pendown()
  turtle.goto(width / -2, 0)
  turtle.goto(width / 2, 0)
  turtle.goto(0, 0)
  turtle.goto(0, hight / 2)
  turtle.goto(0, hight / -2)

def format(s):
  s = s.replace("^","**")
  s = s.replace("@","differentiate")
  s = s.replace("$","integral")
  return s

def evale(s, n):
  x = n
  try:
    return eval(s)
  except BaseException:
    return nan

def differentiate(s):
  dx = 0.1 / zoom
  f1 = evale(s, n)
  df = evale(s, n + dx) - f1
  return df / dx

def integral(s):
  global sf
  dx = copysign(1 / zoom, n)
  f1 = evale(s, n)
  df = (f1 + evale(s, n + dx)) / 2
  sf = sf + df * dx
  return sf

def rezoom(n):
  global zoom
  zoom = n
  drawxy()
  draw()

zoom = eval(input("zoom = "))
width = 1280
hight = 720

turtle.setup(width, hight)
turtle.hideturtle()
turtle.delay(0)
turtle.pensize(2)
drawxy()

while True:
  express = format(input("f(x) = "))
  draw()

  while True:
    i = input(": ")
    if i == "break":
      break
    else:
      try:
        print(eval(i))
      except BaseException:
        print("Input error.")

注意

这个程序使用Python 3.x,若需要Python 2.x的程序,请自行修改。

以上这篇Python 函数绘图及函数图像微分与积分就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
python sys.argv[]用法实例详解
May 25 Python
神经网络相关之基础概念的讲解
Dec 29 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 Python
python 星号(*)的多种用途
Sep 21 Python
python 实现一个图形界面的汇率计算器
Nov 09 Python
Python闭包的定义和使用方法
Apr 11 Python
python抓取多种类型的页面方法实例
Nov 20 #Python
Python超越函数积分运算以及绘图实现代码
Nov 20 #Python
python自动化实现登录获取图片验证码功能
Nov 20 #Python
python通过链接抓取网站详解
Nov 20 #Python
python爬虫之遍历单个域名
Nov 20 #Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 #Python
python中Lambda表达式详解
Nov 20 #Python
You might like
Zend的MVC机制使用分析(二)
2013/05/02 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
node.js从数据库获取数据
2016/05/08 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
原生JS实现前端本地文件上传
2018/09/08 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
pycharm安装图文教程
2017/05/02 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
Python装饰器用法与知识点小结
2020/03/09 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
售后服务承诺书
2014/03/26 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
2015年酒店工作总结
2015/04/28 职场文书
三国演义读书笔记
2015/06/25 职场文书
运动会加油稿50字
2015/07/21 职场文书
推广普通话主题班会
2015/08/17 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫