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解析文件示例
Jan 23 Python
初步讲解Python中的元组概念
May 21 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
简单谈谈python中的语句和语法
Aug 10 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
详解Python并发编程之创建多线程的几种方法
Aug 23 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
利用python绘制数据曲线图的实现
Apr 09 Python
Python selenium爬取微信公众号文章代码详解
Aug 12 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 Python
Python之多进程与多线程的使用
Feb 23 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 spl_autoload_register实现自动加载研究
2011/12/06 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
php的4种常用运行方式详解
2016/12/22 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
numpy.linspace 生成等差数组的方法
2018/07/02 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
瑞士国际航空官网:SWISS
2016/07/21 全球购物
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
求职自荐信
2013/12/14 职场文书
跳槽求职信范文
2014/05/26 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
年会主持人开场白台词
2015/05/29 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
anaconda python3.8安装后降级
2021/06/11 Python