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 13 Python
Python创建系统目录的方法
Mar 11 Python
Python写入CSV文件的方法
Jul 08 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
python中异常报错处理方法汇总
Nov 20 Python
python3实现域名查询和whois查询功能
Jun 21 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
Python操作rabbitMQ的示例代码
Mar 19 Python
Python基础学习之函数方法实例详解
Jun 18 Python
python求最大值最小值方法总结
Jun 25 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
Django封装交互接口代码
Jul 12 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
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
微博短链接算法php版本实现代码
2012/09/15 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Python实现在线音乐播放器
2017/03/03 Python
Python虚拟环境项目实例
2017/11/20 Python
django加载本地html的方法
2018/05/27 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
django实现日志按日期分割
2020/05/21 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Django中使用Celery的方法步骤
2020/12/07 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
小班教师个人总结
2015/02/05 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
Python开发五子棋小游戏
2022/05/02 Python