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实现简单的多任务mysql转xml的方法
Feb 08 Python
Python向日志输出中添加上下文信息
May 24 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
PyTorch中反卷积的用法详解
Dec 30 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
降低python版本的操作方法
Sep 11 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 Python
python实现马丁策略回测3000只股票的实例代码
Jan 22 Python
Python使用scapy模块发包收包
May 07 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脚本的10个技巧(8)
2006/10/09 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
Python中的Matplotlib模块入门教程
2015/04/15 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
python第三方库学习笔记
2020/02/07 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
个人培训自我鉴定
2014/03/28 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
APP界面设计技巧和注意事项
2022/04/29 杂记