Python 函數(shù)繪圖及函數(shù)圖像微分與積分
前言
在學(xué)校太閑,就寫(xiě)了這個(gè)程序,可以繪制函數(shù)圖像,并且可以繪制其導(dǎo)函數(shù)圖像和不定積分的圖像,效果非常不錯(cuò)。
效果圖

說(shuō)明
1,程序無(wú)法繪制復(fù)數(shù)圖像,若函數(shù)返回一個(gè)復(fù)數(shù),將自動(dòng)取模作為函數(shù)值進(jìn)行繪制。
2,函數(shù)的表達(dá)式支持Python所有內(nèi)置函數(shù)和math庫(kù),time庫(kù),random庫(kù)的函數(shù)(要求函數(shù)返回的是數(shù)字)。
3,@(“g(x)”)和$(“g(x)”)是g(x)的導(dǎo)函數(shù)和不定積分的固定格式,其中g(shù)(x)是被微函數(shù)的表達(dá)式或者被積函數(shù)的表達(dá)式,”g(x)”或者'g(x)'表示它是個(gè)表達(dá)式而不是數(shù)字,若不加引號(hào)將無(wú)法正常微積分。
4,具體使用方法請(qǐng)看效果圖,并理解代碼。
代碼
# 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.")
注意
這個(gè)程序使用Python 3.x,若需要Python 2.x的程序,請(qǐng)自行修改。
以上這篇Python 函數(shù)繪圖及函數(shù)圖像微分與積分就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決安裝pytorch因網(wǎng)速問(wèn)題失敗的情況
這篇文章主要介紹了解決安裝pytorch因網(wǎng)速問(wèn)題失敗的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
Python?OpenCV實(shí)現(xiàn)任意角度二維碼矯正
這篇文章主要為大家詳細(xì)介紹了如何利用Python?OpenCV實(shí)現(xiàn)任意角度的二維碼快速矯正,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-05-05
最強(qiáng)Python可視化繪圖庫(kù)Plotly詳解用法
數(shù)據(jù)分析離不開(kāi)數(shù)據(jù)可視化。Plotly 是一款用來(lái)做數(shù)據(jù)分析和可視化的在線平臺(tái),功能非常強(qiáng)大,可以在線繪制很多圖形比如條形圖、散點(diǎn)圖、餅圖、直方圖等等2021-11-11
Pycharm在創(chuàng)建py文件時(shí),自動(dòng)添加文件頭注釋的實(shí)例
今天小編就為大家分享一篇Pycharm在創(chuàng)建py文件時(shí),自動(dòng)添加文件頭注釋的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
python使用MkDocs自動(dòng)生成文檔的操作方法
python代碼注釋風(fēng)格有很多,比較主流的有 reStructuredText風(fēng)格、numpy風(fēng)格、Google風(fēng)格,自動(dòng)生成文檔的工具也有很多,常見(jiàn)的有:Pydocs,Sphinx和MkDocs,本文給大家介紹了python使用MkDocs自動(dòng)生成文檔的操作方法,需要的朋友可以參考下2024-06-06
Flask運(yùn)用Xterm實(shí)現(xiàn)交互終端的示例詳解
Xterm是一個(gè)基于X Window System的終端仿真器(Terminal Emulator),Xterm最初由MIT開(kāi)發(fā),它允許用戶(hù)在X Window環(huán)境下運(yùn)行文本終端程序,本文給大家介紹了Flask運(yùn)用Xterm實(shí)現(xiàn)交互終端的示例詳解,文中有詳細(xì)的代碼講解,需要的朋友可以參考下2023-11-11

