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通过imaplib模块读取gmail里邮件的方法
May 08 Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
Python绘制3D图形
May 03 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 Python
Python八皇后问题解答过程详解
Jul 29 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
Python实现对adb命令封装
Mar 06 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
python中delattr删除对象方法的代码分析
Dec 15 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 Python
python基础之文件处理知识总结
May 23 Python
Python3.10的一些新特性原理分析
Sep 15 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面向对象全攻略 (九)访问类型
2009/09/30 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
修复ie8&amp;chrome下window的resize事件多次执行
2011/10/20 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
2017/02/28 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
python中的五种异常处理机制介绍
2014/09/02 Python
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
详解Python中的动态属性和特性
2018/04/07 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
如何更优雅地写python代码
2019/07/02 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
校友会欢迎辞
2014/01/13 职场文书
大学生咖啡店创业计划书
2014/01/21 职场文书
研发工程师岗位职责
2014/04/28 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
学校联谊协议书
2014/09/16 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
2016党员入党决心书
2015/09/22 职场文书
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL