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轻松实现代码编码格式转换
Mar 26 Python
详解Python在七牛云平台的应用(一)
Dec 05 Python
简单了解Django模板的使用
Dec 20 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
Python3处理HTTP请求的实例
May 10 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
Python检测端口IP字符串是否合法
Jun 05 Python
Python bisect模块原理及常见实例
Jun 17 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 Python
python 实现性别识别
Nov 21 Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 14 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 - Html Transfer Code
2006/10/09 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
js导航菜单(自写)简单大方
2013/03/28 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
Python应用库大全总结
2018/05/30 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
python 实现list或string按指定分段
2019/12/25 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
分厂厂长岗位职责
2013/12/29 职场文书
股权投资意向书
2014/04/01 职场文书
安装工程师岗位职责
2015/02/13 职场文书
卫生主题班会
2015/08/14 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang