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 04 Python
全面理解Python中self的用法
Jun 04 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 Python
Python多继承原理与用法示例
Aug 23 Python
Python3中函数参数传递方式实例详解
May 05 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
Jun 11 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
python异步编程 使用yield from过程解析
Sep 25 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
详解pandas获取Dataframe元素值的几种方法
Jun 14 Python
python中numpy数组与list相互转换实例方法
Jan 29 Python
Django显示可视化图表的实践
May 10 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 Cookie的使用教程详解
2013/06/03 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
PHP会话控制实例分析
2016/12/24 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
Python中使用动态变量名的方法
2014/05/06 Python
python与C互相调用的方法详解
2017/07/14 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
Python初学者常见错误详解
2019/07/02 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Python hashlib模块加密过程解析
2019/11/05 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
蒂娜商店:Tiina the Store
2019/12/07 全球购物
JPA的特点
2014/10/25 面试题
大学校园招聘会感想
2015/08/10 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
redis数据一致性的实现示例
2022/03/18 Redis
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers