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函数学习笔记
Oct 07 Python
Python运行的17个时新手常见错误小结
Aug 07 Python
Python中的with...as用法介绍
May 28 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
django框架模板中定义变量(set variable in django template)的方法分析
Jun 24 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
python数据预处理 :数据抽样解析
Feb 24 Python
python实现简单坦克大战
Mar 27 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
python db类用法说明
Jul 07 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实现一个多功能购物网站的案例
2017/09/13 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
javascript脚本编程解决考试分数统计问题
2008/10/18 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
在Pycharm中修改文件默认打开方式的方法
2019/01/17 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
python实现共轭梯度法
2019/07/03 Python
python实现最大优先队列
2019/08/29 Python
Python实现异步IO的示例
2020/11/05 Python
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
为什么会有内存对齐
2016/10/10 面试题
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
党课培训心得体会
2014/09/02 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
给领导敬酒词
2015/08/12 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
详解JVM系列之内存模型
2021/06/10 Javascript
linux中nohup和后台运行进程查看及终止
2021/06/24 Python