Gnuplot:在循环中绘制不同的函数

时间:2015-05-17 11:33:57

标签: function loops gnuplot

我想在相同的图中绘制Hermite多项式,而不必使用循环逐个输入它们。我尝试过这样的事情:

    H0(x) = 1 
    H1(x) = 2*x 
    H2(x) = 4*x*x-2 
    H3(x) = 8*x**3-12*x 
    H4(x) = 16*x**4-48*x**2+12 
    H5(x) = 32*x**5-160*x**3+120*x

    plot for[i=0:5] H.i(x)

但它不起作用,它会说:undefined variable: H。我已经看到变量i可以用作字符串,但我无法找到在调用函数时是否有办法将其用作字符串。

2 个答案:

答案 0 :(得分:3)

尝试不同的方法,包括索引i作为函数的参数:

H(i,x) = (i == 0 ? 1 : \
          i == 1 ? 2*x : \
          i == 2 ? 4*x*x-2 : \
          i == 3 ? 8*x**3-12*x : \
          i == 4 ? 16*x**4-48*x**2+12 : \
          i == 5 ? 32*x**5-160*x**3+120*x : 1/0)

plot for[i=0:5] H(i,x)

enter image description here

答案 1 :(得分:0)

可以改善

set term wxt persist

set xrange[-1:1]

H(i,x) = (i == 0 ? 1 : \
      i == 1 ? 2*x : \
      i == 2 ? 4*x*x-2 : \
      i == 3 ? 8*x**3-12*x : \
      i == 4 ? 16*x**4-48*x**2+12 : \
      i == 5 ? 32*x**5-160*x**3+120*x : 1/0)

plot for[i=0:5] H(i,x) title sprintf("H(").sprintf('%d',i).sprintf(",x)")

Hermite

enter image description here