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 22 Python
Python中的集合类型知识讲解
Aug 19 Python
python中实现指定时间调用函数示例代码
Sep 08 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
教你使用python实现微信每天给女朋友说晚安
Mar 23 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
Selenium元素定位的30种方式(史上最全)
May 11 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
May 16 Python
Python测试框架pytest高阶用法全面详解
Jun 01 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 什么是PEAR?(第三篇)
2009/03/19 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
python实现多层感知器
2019/01/18 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
妇女儿童发展规划实施方案
2014/03/16 职场文书
爱心捐书活动总结
2014/07/05 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
病房管理制度范本
2015/08/06 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
Vue的生命周期一起来看看
2022/02/24 Vue.js
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js