如何在一些易于访问的开源工具中绘制分段定义的函数?

计算科学 软件 Python 可视化 gnuplot
2021-12-23 23:19:33

我想情节

fn(x)={xnfor nxn+12x+nfor n+1xn+20否则。

如何使用开源软件绘制像这样的分段函数?

4个回答

#!/usr/bin/env python
import numpy as np
import matplotlib.pyplot as plt 

def fun (n, x): 
    if n <= x <= n + 1:
        return float(x) - n 
    elif n + 1 <= x <= n + 2:
        return 2.0 - x + n 
    return 0.0 

vfun = np.vectorize(fun)

x = np.linspace(0, 10, 1000)    
y = vfun(3, x)

plt.plot(x, y, '-')
plt.show()

如果您只是想可视化您的数据,您可以尝试将其导出到文本文件中,以便使用gnuplot进行可视化。对于您的简单示例,您可以尝试直接在 gnuplot 中绘制它,如本示例所示

在 Matlab/Octave 中,如果您将函数作为数据对 x1/y1 和 x2/y2,您可以使用plot( x1 , y1 , x2 , y2 ).

另一种选择是在 Python中使用matplotlib包。您可以创建一个函数 f(n, x) 来相当容易地评估该函数,然后针对一组点对其进行评估。生成的绘图命令非常类似于 MATLAB,因此如果您了解 MATLAB,那么在 matplotlib 中的工作将非常容易。

如果你是学生,你可以获得一个免费的、易于安装的 Python 学术版本,其中包含 NumPy、matplotlib 和一大堆通过Enthought Python Distribution预安装的其他包。它非常有用,并且在安装核心 Python 包方面消除了很多猜测。

SymPy能够绘制您的分段函数:

from sympy import *
x = Symbol('x')
n = 2 # you have to choose some explicit number for n
f = Piecewise((0, n<=x), (x-n, x<=n+1), (2-x+n, x<=n+1), (0, True))
plot(f)