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 相关文章推荐
python调用opencv实现猫脸检测功能
Jan 15 Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 Python
python命令行工具Click快速掌握
Jul 04 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 Python
基于python二叉树的构造和打印例子
Aug 09 Python
python 并发编程 非阻塞IO模型原理解析
Aug 20 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
python字符串下标与切片及使用方法
Feb 13 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 Python
Python 一键获取电脑浏览器的账号密码
May 11 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 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
thinkphp的c方法使用示例
2014/02/24 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
php+ajax实现异步上传文件或图片功能
2017/07/18 PHP
jquery.validate使用攻略 第一部
2010/07/01 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
js切换光标示例代码
2013/10/10 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
js实现幻灯片轮播图
2020/08/14 Javascript
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
python如何统计代码运行的时长
2019/07/24 Python
python django model联合主键的例子
2019/08/06 Python
python实现tail -f 功能
2020/01/17 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
委托证明的格式
2014/01/10 职场文书
意向书范文
2014/03/31 职场文书
售房协议书范本2014
2014/10/23 职场文书
出差报告怎么写
2014/11/06 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
员工工作心得体会
2019/05/07 职场文书
MySQL里面的子查询的基本使用
2021/08/02 MySQL
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript
Python使用pyecharts控件绘制图表
2022/06/05 Python
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers