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 14 Python
python 全文检索引擎详解
Apr 25 Python
Collatz 序列、逗号代码、字符图网格实例
Jun 22 Python
Python星号*与**用法分析
Feb 02 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
给我一面国旗 python帮你实现
Sep 30 Python
Python数据处理篇之Sympy系列(五)---解方程
Oct 12 Python
python manage.py runserver流程解析
Nov 08 Python
提升python处理速度原理及方法实例
Dec 25 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
Pycharm Git 设置方法
Sep 15 Python
python如何修改文件时间属性
Feb 05 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如何调用webservice应用介绍
2012/11/24 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
ES6之模版字符串的具体使用
2018/05/17 Javascript
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python松散正则表达式用法分析
2016/04/29 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
python hough变换检测直线的实现方法
2019/07/12 Python
Python while循环使用else语句代码实例
2020/02/07 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
优秀毕业生就业推荐信
2014/05/22 职场文书
厕所文明标语
2014/06/11 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
小学教师师德整改措施
2014/09/29 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
户外亲子活动总结
2015/05/08 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers