2016-07-26 64 views
0

我做了一個函數RC(n),給定任意n根據規則改變n的數字。函數如下不能使用python繪製函數

def cfr(n): 
    return len(str(n))-1 


def n_cfr(k,n): 
    J=str(k) 
    if "." in J: 
     J2=J.replace(".", "") 
     return J2[n-1] 
    else: 
     return J[n] 

def RC(n): 
    if "." not in str(n): 
     return n+1 
    sum=0 
    val=0 
    for a in range(1,cfr(n)+1): 
     O=(int(n_cfr(n,a)))*10**(-a+1) 
     if int(n_cfr(n,a))==9: 
      val=0 
     else: 
      val=O+10**(-a+1) 
     sum=sum+val 
    return sum  

我想繪製這個函數爲n的非整數值。一個朋友給我這個代碼,他在其他功能使用,但它似乎並沒有爲我工作:

def draw(f,a,b,res): 
import numpy as np 
import matplotlib.pyplot as plt 
    x=[a+(b-a)*i/res for i in range(0,res)] 
    y=[f(elm) for elm in x] 
    plt.plot(np.asarray(x), np.asarray(y)) 
    plt.show() 

我不熟悉密謀使用python所以任何人都可以給我一些幫助功能? 在此先感謝

回答

1

在你的函數的行應該是x = list(range(a, b, res))range的前兩個參數是startstop。下面是一個更好的繪製版本:

def draw(f, a, b, res): 
    import numpy as np 
    import matplotlib.pyplot as plt 
    x = list(range(a, b, res)) 
    plt.plot(x, map(f, x)) 
    plt.show() 
+0

但是,當我輸入函數的代碼(稱爲RC),然後繪製(RC,1,10,10)時,所有出現的都是白色圖形沒有任何關係,但是當我繪製(RC,1,100,10)時,會出現一條直線,因爲它只適用於正整數 – Peterix

+0

因爲當您從1到10的分辨率爲10時,沒有任何東西會返回(因爲'b - a ekipmanager