zoukankan      html  css  js  c++  java
  • cftool拟合&函数逼近

    cftool拟合&函数逼近

    cftool

    真是神奇,之前我们搞的一些线性拟合解方程,多项式拟合,函数拟合求参数啊,等等。

    已经超级多了,为啥还得搞一个cftool拟合啊?而且毫无数学理论。

    如果你足够细心,你会发现,之前的拟合,都是我们猜测这个拟合的式子大概是什么形式,只需要求个参数。嘿嘿到底准不准呢? 数据及其简单才会被你发现规律呢!

    这里在cftool的帮助下不停的尝试才能得到最好的拟合形式。

    可以看出,拟合形式多样,拟合分析方便。

    · Custom Equations:用户自定义的函数类型
    · Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)
    · Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w)
    · Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-((x-b1)/c1)^2)
    · Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving
    · Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~
    · Power:幂逼近,有2种类型,a*x^b 、a*x^b + c
    · Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型
    · Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思)
    · Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1)
    · Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)

    函数逼近

    给一个栗子吧:

    来拟合。

    我们已经可以通过自己已经学的办法来解决这个问题了(四个函数都可以使用,大致两条思路)

    方法一:首先生成数据,然后写矩阵

    方法二:函数形式

    (当然还有多项式拟合方法,和解方程法,没想到有不知不觉已经学了5个方法了)

    x = -pi/2:pi/100:pi/2;
    y = cos(x);
    x = x';
    y = y';
    r = [ones(101,1),x.^2,x.^4];
    sx = lsqlin(r,y);

    函数逼近答案:

     

    方法二:

    x = -pi/2:pi/100:pi/2;
    y = cos(x);
    F = @(sx)sx(1)+sx(2)*x.^2+sx(3)*x.^4-y;
    cs0 = rand(3,1);
    cs = lsqnonlin(F,cs0);

    拟合效果也是杠杠的。

    现在还有一个方法,哈哈,开心吧!

    老实说,看上去有点像解方程,当然是班门弄斧了,里面的原理已经完全不一样了。

    既然已经有函数了,还要麻烦的用这个函数去生成数据吗?

    稍微看了一点理论,还是超级复杂的。哈哈,我等人才还得加油了。

    看一下格式吧:

    clc,clear;
    syms x;
    base = [1,x^2,x^4];
    y1 = base.'*base;
    y2 = cos(x)*base.';
    r1 = int(y1,-pi/2,pi/2);
    r2 = int(y2,-pi/2,pi/2);
    a = r1
    2;
    xishu1 = double(a);
    xishu2 = vpa(a,6);

    至此,第一个数学建模模型,插值和拟合,已经完成了。恭喜啦!!!

     

  • 相关阅读:
    linux系统防火墙对访问服务器的影响
    Android 样式的开发(转)
    Android开发学习总结(三)——appcompat_v7项目说明
    Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml
    BootStrap 常用控件总结
    mybatis自定义代码生成器(Generator)——自动生成model&dao代码
    MySql的下载和安装(解压版)
    jquery mobile 表单提交 图片/文件 上传
    java读取.properties配置文件的几种方法
    AngularJS------认识AngularJS
  • 原文地址:https://www.cnblogs.com/TreeDream/p/8251576.html
Copyright © 2011-2022 走看看