精华内容
下载资源
问答
  • Matlab曲线拟合

    千次阅读 2014-05-06 23:49:05
    Excel拟合曲线方程    Excel可以通过画散点图,添加趋势线,对数据进行简单的对数,线性,多项式,指数,幂函数曲线拟合,可能不适用于它们的组合,也就是交复杂的线性;另一种方法是使用加载项中的规划求解,...
      Excel拟合曲线方程
     
         Excel可以通过画散点图,添加趋势线,对数据进行简单的对数,线性,多项式,指数,幂函数曲线拟合,可能不适用于它们的组合,也就是交复杂的线性;另一种方法是使用加载项中的规划求解,运用统计和数值分析知识,确定目标函数和拟合参数初值,然后求出最优的拟合参数,画出散点图,观看效果。
         第二种方法,可以参考用论文《EXCEL及其规划求解功能拟合曲线方程》   http://ishare.iask.sina.com.cn/f/18741114.html?from=like
       
       Matlab拟合曲线方程
       Matlab拟合曲线,可以使用最优化工具箱里的非线性拟合函数lsqcurvefit(最小二乘法)和 概率论和数理统计工具箱里的非线性回归函数nlinfit函数或nlintool函数,还有直接求最小二乘解,若是多项式的拟合,用ployfit函数。
      
        Matlab的曲线拟合工具箱CFtool使用简介
        注意的是cftool 工具箱只能进行单个变量 的曲线拟 
     
     1.  lsqcurvefit
     [x,res] = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
    其中,fun是在M文件中定义的函数,xdata,ydata为原始数据,x0是函数中参数的初始值,lb、ub分别为变量x的下限、上限;x为参数的最优值,res是x的残差平方和sum((fun(x,xdata)-ydata).^2)
     
    1)编写函数文件
     function Thta = hth(x,ht)
     %编写函数M文件,内容如下
    %编写完毕,保存为hth.m
     Thta=(x(3)-x(4))./((1+(x(1).*ht).^x(2)).^(1-(1./x(2))))+x(4);

    %不运行hth.m,而是进行下一步骤,否则提示x未定义
    %在命令窗口输入,以下内容
    ht=[0 27.2 53.04 62.56 69.36 81.60 95.20 108.80 126.48 159.12 197.20 251.60 262.48 286.96 359.04 452.88 503.20];
    th=[476 434 406 401 392 382 365 351 335 312 287 271 261 253 252 236 234]*0.001;
    x0=[0.1 1.5 0.5 0.1];
    x1=[0 1 0 0];
    x2=[5 5 1 1];
    [x resnorm]=lsqcurvefit(@hth,x0,ht,th,x1,x2)
     
    2)定义内置函数
          f=inline(fun,'参变量','自变量')
     fx=inline('(x(3)-x(4))./((1+(x(1).*ht).^x(2)).^(1-(1./x(2))))+x( 4)','x','ht');
    ht=[0 27.2 53.04 62.56 69.36 81.60 95.20 108.80 126.48 159.12 197.20 251.60 262.48 286.96 359.04 452.88 503.20];
    th=[476 434 406 401 392 382 365 351 335 312 287 271 261 253 252 236 234]*0.001;
    x0=[0.1 1.5 0.5 0.1];
    x1=[0 1 0 0];
    x2=[5 5 1 1];
    [x,res]=lsqcurvefit(f,x0,ht,th,x1,x2)
    y1=fx(x,ht);
    plot(th,ht,' o',y1,ht,'-')
     
     
    2.nlinfit
      [beta,r,J] = nlinfit(x,y,fun,beta0)
     其中,x,y为原始数据,fun是在M文件中定义的函数,beta0是函数中参数的初始值;beta为参数的最优值,r是各点处的拟合残差,J为雅克比矩阵的数值.
    %非线性回归
    fun=inline('(x(3)-x(4))./((1+(x(1).*ht).^x(2)).^(1-(1./x(2))))+x(4)','x','ht');
    ht=[0 27.2 53.04 62.56 69.36 81.60 95.20 108.80 126.48 159.12 197.20 251.60 262.48 286.96 359.04 452.88 503.20];
    th=[476 434 406 401 392 382 365 351 335 312 287 271 261 253 252 236 234]*0.001;
    x0=[0.1 1.2 0.5 0.1];
    [x,r,J]=nlinfit(ht,th,fun,x0);
    x
    R=sum(r.^2)                        %误差平方和
    y=fun(x,ht);  
    plot(th,ht,'*',y,ht,'-r')
     
    3.求最小二乘解
     
    %函数线性组合的曲线拟合方法
    %y(x)=c1+c2*exp(-3*x)+c3*cos(-2*x).*exp(-4*x)+c4*x.^2
    x=[0 0.2 0.4 0.7 0.9 0.92 0.99 1.2 1.4 1.48 1.5]';
    y=[2.88 2.2576 1.9683 1.9258 2.0862 2.109 2.1979 2.5409 2.9627 3.155 3.2052]';
    A=[ones(size(x)),exp(-3*x),cos(-2*x).*exp(-4*x),x.^2];
    c=A\y;                                                    %最小二乘解
    c1=c'
    x0=[0:0.01:1.5]';
    A1=[ones(size(x0)),exp(-3*x0),cos(-2*x0).*exp(-4*x0),x0.^2];
    y1=A1*c;
    plot(x0,y1,x,y,'rx');
     
    4.polyfit
     
    plot(x,y,n),根据数据x,y得到一个n次拟合多项式P(x)的系数;polyval(p,x)由系数p(从高次到低次顺序)确定的多项式在x个点上的值
    x=1:0.5:5;
    y=[2.6 3.3 3.7 4.0 4.1 4.0 3.8  3.3 2.8];
    p=polyfit(x,y,2)
    y1=polyval(p,x);
    plot(x,y1,x,y,'ro')


    http://emuch.net/bbs/viewthread.php?tid=4924055
    展开全文
  • 我在尝试使用 Python3 把下面的图像拟合成符号幂律分布的曲线方程 ![图片说明](https://img-ask.csdn.net/upload/202005/04/1588554239_68515.png) 参考了论坛上某位高手的帖子:...
  • 问题背景最近物理老师让用Excel弄一个最小二乘法拟合然后弄出方程来求玻尔兹曼常数。无奈发现Linux上的WPS没有绘图功能无语啊O__O”…,据说绘图功能是用delphi写的,不好做跨平台移植……那只好将重任加在Python上...

    问题背景

    最近物理老师让用Excel弄一个最小二乘法拟合然后弄出方程来求玻尔兹曼常数。无奈发现Linux上的WPS没有绘图功能无语啊O__O”…,据说绘图功能是用delphi写的,不好做跨平台移植……那只好将重任加在Python上喽~

    原始数据

    u1 = np.array([0.3, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46])

    u2 = np.array([0.026,0.038,0.058,0.084,0.121,0.185,0.28,0.416,0.597,0.917,1.341,2.07,3.005,4.379,6.575,9.523,12.001])

    lnu2 = np.log(u2)

    曲线拟合

    import numpy as np

    import matplotlib.pylab as plt

    from scipy.optimize import leastsq

    from scipy import constants as C

    # 误差函数

    def residuals(p):

    k, b = p

    return lnu2 - (k * u1 + b)

    r = leastsq(residuals, [1, 0])

    K, B = r[0]

    print("斜率k =", K, "截距b =", B)

    a, b = np.exp(B), K

    print("常量a =", a, "常量b =", b)

    k = C.electron_volt / (b * 300)

    print("玻尔兹曼常量k =", k, "J/K")

    绘制散点图+拟合曲线

    plt.scatter(u1, lnu2)

    plt.plot(u1, u1 * K + B, linewidth=2)

    plt.xlabel('U1(V)')

    plt.ylabel('lnU2(V)')

    plt.grid(True)

    plt.title('Plot : lnU2--U1')

    plt.show()

    plt.scatter(u1, u2)

    plt.plot(u1, a * np.exp(b * u1), linewidth=2)

    plt.xlabel('U1(V)')

    plt.ylabel('U2(V)')

    plt.grid(True)

    plt.title('Plot : U2--U1')

    plt.show()

    展开全文
  • 在定量遥感研究中,通常需要利用实测数据与星上数据(遥感影像)构建回归方程,一般有线性、指数、对数等,然后利用方程反演得到所需的观测指标。在上述流程的反演模型构建步骤中,使用ENVI的ROI工具将图像中对应...
  • 验证方法:可以用一组不规则的数据经过该程序得到方程式后,代入你的不规则数得到另一组数据,用Excel来比较这两组数据有何不同. 有X轴和Y轴系列不规则曲线点:X(50),Y(50), 欲得到二次方程式各项系数为a[2],X轴系列点...
  • 然后可以将拟合曲线重新导入到工作区中。 从下拉菜单中:拟合->保存到工作区->填写曲线的名称,以“保存对指定的Matlab对象的拟合”,并为该曲线的度量标准保存名称,以保存“保存的拟合度”。适合于名为“”的...
  • 对于剂量响应图,用IgorPro分析数据,用HIll方程拟合单个剂量响应曲线,并将IC50和EC50的拟合值输入excel数据表。 从TEVC数据制作图形 使用TEVC Matlab代码分析数据 按照说明使用TEVCAnalyzeLoopSTFX.m分析幅度,并...
  •  6.2 使用指数回归拟合曲线法预测 101  6.2.1 使用LOGEST函数进行指数回归拟合 101  6.2.2 直接获取指数回归拟合方程的系数和常量 105  6.2.3 使用指数回归拟合方程预测费用 106  6.2.4 使用GROWTH函数预测费用...
  • 描述:!...在PictureBox绘图,...放了5个定点想要试一下,但不会用excel方程。 附![转自马语者博客-三次样条插值-excel,word,cad形状](https://img-ask.csdn.net/upload/201609/05/1473067243_70464.png)
  • 浅谈神经网络

    2015-04-28 21:51:08
    来自人工智能贴吧,利_刃 以上是线性回归(Linear Regression)的基本内容,以此方法为基础,把直线公式改为曲线公式,还可以扩展出二次回归、三次回归、...直线方程y=kx+b改为二次曲线方程y=ax^2+bx+c时,参数(Paramete

    来自人工智能贴吧,利_刃,仅供收藏。

    以上是线性回归(Linear Regression)的基本内容,以此方法为基础,把直线公式改为曲线公式,还可以扩展出二次回归、三次回归、多项式回归等多种曲线回归。下图是Excel的回归分析功能。


    在多数情况下,曲线回归会比直线回归更精确,但它也增加了拟合的复杂程度。


    直线方程y=kx+b改为二次曲线方程y=ax^2+bx+c时,参数(Parameter)由2个(分别是k、b)变为3个(分别是a、b、c),特征(Feature)由1个(x)变为2个(x^2和x)。三次曲线和复杂的多项式回归会增加更多的参数和特征。


    前面讲的是总结一串数字的规律,现实生活中我们往往要根据多个特征(多串数字)来分析一件事情,每个原始特征我们都看作是一个维度(Dimension)。例如一个学生的学习成绩好坏要根据语文、数学、英语等多门课程的分数来综合判断,这里每门课程都是一个维度。当使用二次曲线和多变量(多维)拟合的情况下,特征的数量会剧增,特征数=维度^2/2 这个公式可以大概计算出特征增加的情况,例如一个100维的数据,二次多项式拟合后,特征会增加到100*100/2=5000个。


    下面是一张50*50像素的灰度图片,如果用二次多项式拟合的话,它有多少个特征呢?——大约有3百万!


    它的维度是50*50=2500,特征数=2500*2500/2=3,125,000。如果是彩色图片,维度会增加到原来的3倍,那么特征数将增加到接近3千万了!


    这么小的一张图片,就有这么巨大的特征量,可以想像一下我们的数码相机拍下来的照片会有多大的特征量!而我们要做的是从十万乃至亿万张这样的图片中找规律,这可能吗?
    很显然,前面的那些回归方法已经不够用了,我们急需找到一种数学模型,能够在此基础上不断减少特征,降低维度。


    于是,“人工神经网络(ANN, Artificial Neural Network)”就在这样苛刻的条件下粉墨登场了,神经科学的研究成果为机器学习领域开辟了广阔的道路。

    下面是单个神经元的数学模型,可以看出它是生理结构的简化版,模仿的还挺像:

    解释一下:+1代表偏移值(偏置项, Bias Units);X1,X2,X2代表初始特征;w0,w1,w2,w3代表权重(Weight),即参数,是特征的缩放倍数;特征经过缩放和偏移后全部累加起来,此后还要经过一次激活运算然后再输出。激活函数有很多种,后面将会详细说明。


    举例说明:


    X1*w1+X2*w2+...+Xn*wn这种计算方法称为加权求和(Weighted Sum)法,此方法在线性代数里极为常用。加权求和的标准数学符号是,不过为了简化,我在教程里使用女巫布莱尔的符号表示,刚好是一个加号和一个乘号的组合。

    这个数学模型有什么意义呢?下面我对照前面那个 y=kx+b 直线拟合的例子来说明一下。


    这时我们把激活函数改为Purelin(45度直线),Purelin就是y=x,代表保持原来的值不变。
    这样输出值就成了 Y直线点 = b + X直线点*k,即y=kx+b。看到了吧,只是换了个马甲而已,还认的出来吗?下一步,对于每个点都进行这种运算,利用Y直线点和Y样本点计算误差,把误差累加起来,不断地更新b、k的值,由此不断地移动和旋转直线,直到误差变得很小时停住(收敛)。这个过程完全就是前面讲过的梯度下降的线性回归。


    一般直线拟合的精确度要比曲线差很多,那么使用神经网络我们将如何使用曲线拟合?答案是使用非线性的激活函数即可,最常见的激活函数是Sigmoid(S形曲线),Sigmoid有时也称为逻辑回归(Logistic Regression),简称logsig。logsig曲线的公式如下:

    还有一种S形曲线也很常见到,叫双曲正切函数(tanh),或称tansig,可以替代logsig。
    下面是它们的函数图形,从图中可以看出logsig的数值范围是0~1,而tansig的数值范围是-1~1。

    神经网络


    好了,前面花了不少篇幅来介绍激活函数中那个暗藏玄机的e,下面可以正式介绍神经元的网络形式了。
    下图是几种比较常见的网络形式:


    - 左边蓝色的圆圈叫“输入层”,中间橙色的不管有多少层都叫“隐藏层”,右边绿色的是“输出层”。
    - 每个圆圈,都代表一个神经元,也叫节点(Node)
    - 输出层可以有多个节点,多节点输出常常用于分类问题。
    - 理论证明,任何多层网络可以用三层网络近似地表示。
    - 一般凭经验来确定隐藏层到底应该有多少个节点,在测试的过程中也可以不断调整节点数以取得最佳效果。


    计算方法:


    - 虽然图中未标识,但必须注意每一个箭头指向的连线上,都要有一个权重(缩放)值。
    - 输入层的每个节点,都要与的隐藏层每个节点做点对点的计算,计算的方法是加权求和+激活,前面已经介绍过了。(图中的红色箭头指示出某个节点的运算关系)
    - 利用隐藏层计算出的每个值,再用相同的方法,和输出层进行计算。
    - 隐藏层用都是用Sigmoid作激活函数,而输出层用的是Purelin。这是因为Purelin可以保持之前任意范围的数值缩放,便于和样本值作比较,而Sigmoid的数值范围只能在0~1之间。
    - 起初输入层的数值通过网络计算分别传播到隐藏层,再以相同的方式传播到输出层,最终的输出值和样本值作比较,计算出误差,这个过程叫前向传播(Forward Propagation)

    前面讲过,使用梯度下降的方法,要不断的修改k、b两个参数值,使最终的误差达到最小。神经网络可不只k、b两个参数,事实上,网络的每条连接线上都有一个权重参数,如何有效的修改这些参数,使误差最小化,成为一个很棘手的问题。从人工神经网络诞生的60年代,人们就一直在不断尝试各种方法来解决这个问题。直到80年代,误差反向传播算法(BP算法)的提出,才提供了真正有效的解决方案,使神经网络的研究绝处逢生。



    BP算法是一种计算偏导数的有效方法,它的基本原理是:利用前向传播最后输出的结果来计算误差的偏导数,再用这个偏导数和前面的隐藏层进行加权求和,如此一层一层的向后传下去,直到输入层(不计算输入层),最后利用每个节点求出的偏导数来更新权重。

    为了便于理解,后面我一律用“残差(error term)”这个词来表示误差的偏导数


    输出层→隐藏层:残差 = -(输出值-样本值) * 激活函数的导数
    隐藏层→隐藏层:残差 = (右层每个节点的残差加权求和)* 激活函数的导数


    如果输出层用Purelin作激活函数,Purelin的导数是1,输出层→隐藏层:残差 = -(输出值-样本值)


    如果用Sigmoid(logsig)作激活函数,那么:Sigmoid导数 = Sigmoid*(1-Sigmoid)
    输出层→隐藏层:残差 = -(Sigmoid输出值-样本值) * Sigmoid*(1-Sigmoid) = -(输出值-样本值)*输出值*(1-输出值)
    隐藏层→隐藏层:残差 = (右层每个节点的残差加权求和)* 当前节点的Sigmoid*(1-当前节点的Sigmoid)


    如果用tansig作激活函数,那么:tansig导数 = 1 - tansig^2



    残差全部计算好后,就可以更新权重了:
    输入层:权重增加 = 当前节点的Sigmoid * 右层对应节点的残差 * 学习率
    隐藏层:权重增加 = 输入值 * 右层对应节点的残差 * 学习率
    偏移值的权重增加 = 右层对应节点的残差 * 学习率
    学习率前面介绍过,学习率是一个预先设置好的参数,用于控制每次更新的幅度。


    此后,对全部数据都反复进行这样的计算,直到输出的误差达到一个很小的值为止。
    以上介绍的是目前最常见的神经网络类型,称为前馈神经网络(FeedForward Neural Network),由于它一般是要向后传递误差的,所以也叫BP神经网络(Back Propagation Neural Network)

    BP神经网络的特点和局限:
    - BP神经网络可以用作分类、聚类、预测等。需要有一定量的历史数据,通过历史数据的训练,网络可以学习到数据中隐含的知识。在你的问题中,首先要找到某些问题的一些特征,以及对应的评价数据,用这些数据来训练神经网络。
    - BP神经网络主要是在实践的基础上逐步完善起来的系统,并不完全是建立在仿生学上的。从这个角度讲,实用性 > 生理相似性。
    - BP神经网络中的某些算法,例如如何选择初始值、如何确定隐藏层的节点个数、使用何种激活函数等问题,并没有确凿的理论依据,只有一些根据实践经验总结出的有效方法或经验公式。
    - BP神经网络虽然是一种非常有效的计算方法,但它也以计算超复杂、计算速度超慢、容易陷入局部最优解等多项弱点著称,因此人们提出了大量有效的改进方案,一些新的神经网络形式也层出不穷。

    文字的公式看上去有点绕,下面我发一个详细的计算过程图。
    参考这个:http://www.myreaders.info/03_Back_Propagation_Network.pdf 我做了整理
     



     
     


    这里介绍的是计算完一条记录,就马上更新权重,以后每计算完一条都即时更新权重。实际上批量更新的效果会更好,方法是在不更新权重的情况下,把记录集的每条记录都算过一遍,把要更新的增值全部累加起来求平均值,然后利用这个平均值来更新一次权重,然后利用更新后的权重进行下一轮的计算,这种方法叫批量梯度下降(Batch Gradient Descent)

    推荐的入门级学习资源:

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!网址请把#换成.!!!!!!!!!!!!!!!!!!!!!!
    Andrew Ng的《机器学习》公开课: class#coursera#org/ml
    Coursera公开课笔记中文版(神经网络的表示): 52opencourse#com/139/coursera公开课笔记-斯坦福大学机器学习第八课-神经网络的表示-neural-networks-representation
    Coursera公开课视频(神经网络的学习): 52opencourse#com/289/coursera公开课视频-斯坦福大学机器学习第九课-神经网络的学习-neural-networks-learning
    斯坦福深度学习中文版: deeplearning#stanford#edu/wiki/index#php/UFLDL教程

    展开全文
  • 通常通过使用Hill方程将剂量响应数据拟合为S形曲线来计算EC50。 变体包括最大“致死剂量”(LD50)和“抑制剂浓度”(IC50)的一半。 特征 强大的数据分析 完全自动化 将S形曲线拟合到剂量React数据 EC50,LD50或IC...
  • 详细讨论了这几种有机物及其混合物的粘度与温度闻嫩系,并用Excel对数据点进行拟合、回归分析,得到了很好的幂函数曲线,同时,对幕函数。方程的相关系数r进行了回归显著性检验,结果表明其回归效果是高度显著的。
  • :用于拟合热容量并为React坐标图生成平滑曲线 :用于绘制热力学数据 :类似于Matplotlib。 用于绘制交互式图形 :用于读取/写入数据库 :用于连接数据库 :用于绘制React网络 :用于写入OpenMKM输出的范围。 :用于...
  • 考虑到 G´(ω)、G´´(ω) 和 tan delta (ω) 曲线的最佳拟合,它使用 MATLAB 优化工具箱中的函数 lsqnonlin 优化 Prony 参数 n、gi 和 ki。 需要一个 Excel 文件来输入来自 DMA 测量 acc 的值。 DIN EN ISO 178...
  • Mathcad电路求解.pdf

    2011-07-28 19:57:25
    Mathcad是一种万能的数据处理工具,它可以求解系统级或电路级方程(解N元变量的N次方程组),优化电路元器件参数,分析电路最差性能,进行大量向量(矩阵)数据处理、图像处理和信号处理,实现测量数据的曲线拟合,...
  • python线性回归问题

    2021-06-19 21:21:40
    train_cost.to_excel("./三种梯度下降算法的训练训练损失.xlsx") train_cost.describe().to_excel("./三种梯度下降算法的训练训练损失统计.xlsx") # 计算4种调优算法下的拟合曲线 x = np.arange(int(np.min(test_...
  • 序号工具箱备注数学、统计与优化1Symbolic Math Toolbox符号数学工具箱2Partial Differential Euqation Toolbox偏微分方程工具箱3Statistics Toolbox统计学工具箱4Curve Fitting Toolbox曲线拟合工具箱5Optimization...
  • Python 科学计算

    2018-09-20 16:59:31
    3.3.1 B 样条曲线插值..........................88 3.3.2 外推和 Spline 拟合.....................90 3.3.3 二维插值.....................................91 3.4 数值积分——integrate .................. 93 ...
  • 易语言5.1 相对于易语言5.0更新说明:  支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

excel拟合曲线方程