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中optionParser模块的使用方法实例教程
Aug 29 Python
详解Django通用视图中的函数包装
Jul 21 Python
浅谈python中set使用
Jun 30 Python
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
Python实现Youku视频批量下载功能
Mar 14 Python
python list排序的两种方法及实例讲解
Mar 20 Python
python解决pandas处理缺失值为空字符串的问题
Apr 08 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
Python零基础入门学习之输入与输出
Apr 03 Python
DRF使用simple JWT身份验证的实现
Jan 14 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
Python IO文件管理的具体使用
Mar 20 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
php异步多线程swoole用法实例
2014/11/14 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
domReady的实现案例
2016/11/23 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
python中xrange用法分析
2015/04/15 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
python动态加载包的方法小结
2016/04/18 Python
python使用Matplotlib画饼图
2018/09/25 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
django model object序列化实例
2020/03/13 Python
python自定义函数def的应用详解
2020/06/03 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
医护人员英文求职信范文
2013/11/26 职场文书
总结表彰大会主持词
2014/03/26 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript