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深入学习之闭包
Aug 31 Python
简单解析Django框架中的表单验证
Jul 17 Python
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
python3+PyQt5实现拖放功能
Apr 24 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
python3.6生成器yield用法实例分析
Aug 23 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 Python
python+mysql实现个人论文管理系统
Oct 25 Python
Python grequests模块使用场景及代码实例
Aug 10 Python
python中使用asyncio实现异步IO实例分析
Feb 26 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的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
java直接调用python脚本的例子
2014/02/16 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
python openpyxl使用方法详解
2019/07/18 Python
Python作用域与名字空间原理详解
2020/03/21 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
捷克时尚网上商店:OTTO
2018/03/15 全球购物
应届生法律求职信
2013/10/22 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
校园文明标语
2014/06/13 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
行政介绍信范文
2015/05/04 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
Python机器学习之决策树和随机森林
2021/07/15 Javascript
pandas求平均数和中位数的方法实例
2021/08/04 Python