插值和寻根

2024-09-29 01:30:52 发布

您现在位置:Python中文网/ 问答频道 /正文

对于作业,我必须对数据进行插值[线性插值和三次插值],并创建两个图形,将数据显示为点,将插值显示为直线。我还要画出数据的最大值。我把所有这些工作都做了,但最后一部分却被分配到额外的学分,我想不通。V代表电压,I代表电流。在

额外任务:扩展你的程序,这样它也可以确定最大电流,以及相应的电压,使用一种不同的方法称为“寻根”。要实现这一点,需要对函数进行数值微分。(名为“diff”的numpy函数将很有用。)然后要执行根查找,可以使用scipy.optimize公司图书馆。在

    from pylab import *
    from scipy.interpolate import interp1d
    from scipy.optimize import brentq

    #load text into two variables V[Voltage] and I[Current]
    V, I = loadtxt('data1(1).txt', unpack = True, skiprows = 1)

    #voltage and current interpolated[linear]
    f_line = interp1d(V, I, 'linear')
    new_V = linspace(0, 12, 1000) #array of new voltages created
    new_I = f_line(new_V) #array of new currents created from interpolated data

    #voltage, current, new voltage, and new current plotted.
    plot(V, I, 'ro', new_V, new_I, 'b-')
    plot(max(new_I), 'go') #max current plotted 
    title("Linear Interpolation")
    xlabel("Voltage (V)")
    xlim(0,12)
    ylabel("Current (mA)")
    legend(['Data', 'linear Interp', 'Max Current'], loc = 'best')
    show()

    print "The maximum current is", max(new_I), "mA"

    #voltage and current interpolated[cubic]
    f_cube = interp1d(V, I, 'cubic')
    new_V = linspace(0, 12, 1000) #array of new voltages created
    new_I = f_cube(new_V) #array of new currents created from interpolated data
    index = argmax(new_I) #index of max current

    #voltage, current, new voltage, and new current plotted.
    plot(V, I, 'ro', new_V, new_I, 'b-')
    plot(new_V[index], max(new_I), 'go') #max current and voltage plotted
    title("Cubic Interpolation")
    xlabel("Voltage (V)")
    xlim(0,12)
    ylabel("Current (mA)")
    ylim(0,1.4)
    legend(['Data', 'linear Interp', 'Max Current'], loc = 'best')
    show()

    print "The maximum current is", max(new_I), "mA"
    print "The corresponding maxium voltage is", new_V[index], "V"

上面所有的代码都可以工作,但这是最后一部分,我不确定如何开始。如有任何建议或帮助,我将不胜感激。我确实尝试过,但它抛出了一个错误,我真的不知道如何处理它,因为我不太了解正在使用的函数(diff,brentq),也不知道如何使用它们来找到最大电流和电压。在

^{pr2}$

我明白错误是怎么说的,但我真的不知道正确的论点,为了找到最大的电流和电压,通过“根查找”被要求。如有任何建议,我们将不胜感激。在


Tags: andoffromnewcurrentarraymax电流