当前位置: 首页 > article >正文

线性拟合polyfit_非线性方程求根amp;曲线拟合

ac21c87328e40dfb81804bdbf72dca16.png

一. 非线性方程的求解:

roots(返回所有的即n个根)、fzero(一般只能有一个,通过迭代生成收敛到一个根)、fsolve%新版本

1.非线性方程:包括代数方程和含三角函数指数函数或其他超越函数。

1)roots:解代数方程,无法解超越方程。

多项式方程求根,p是次数由高到低排列的多项式系数

p = [3 -2 -1];%p表示次数由高到低排列的多项式的系数,相当于
r = roots(p);%求n个根

2)fzero:解绝大多数方程。

fun = @(x) x.^2-4*sin(x);
r = fzero(fun,pi/2)

3) solve命令也可以求解(warning):

syms x;%声明符号函数变量
eqn = (x + 2)^x == 2;%赋方程
s = solve(eqn,x)%解方程,返回方程的根

2.用数值方法求解非线性方程的步骤:

①找出隔根区间(只含一个实根的区间)

②近似根的精确化

一般方法:二分法、不动点迭代法、Newton迭代法

1)二分法:以区间宽度小与容许误差来判断趋近的终点

function [x,n] = bisection(f,a,b,tol)%f是函数,[a,b]是求解区间,tol是精度
%输出x是方程的近似根,n是迭代步数。

2)不动点迭代法:

将连续函数方程

改写为等式
,不动点迭代法就是指以迭代格式
进行求解的方法
function [root,n] = fixpoint(phai,x0,tol)
if (nargin == 2)tol = 1.0e-5;
end
err = 1;
root = x0;
n = 0;
while (err > tol)n=n+1;r1=root;root=phai(r1);err=abs(root-r1);
end
输入:
ph=@(x) (1 + x)^(1 / 3);%这里输入的是φ(x)
[root,n] = fixpoint(ph,1)
  • 不动点迭代法的收敛性:

设迭代过程收敛于方程的根,若迭代误差

满足下面的渐进关系式
,则称迭代过程是r阶收敛的。
  • 收敛定理:若
    的某邻域连续,且
    ,则不动点迭代法
    局部收敛。

一般需要构造性迭代,选择适当的函数,尽量收敛速度较大。

3)Newton法

基本思想:利用非线性函数的泰勒展开的线性部分去近似函数本身,线性化处理。代数变换后即

。运算速度较快
function main
x0 = 1.5;
[fun,dfun] = fun0(x0);%调用子函数
i = 1;
while abs(x1 - x0)>1e-5x0=x1;[fun,dfun] = fun0(x0);x1 = x0-fun/dfun;i = i + 1;
end
disp('the solution is x1='),x1
disp('the iter time is'),i
function[fun,dfun] = fun0(x)
fun=x^3-x-1;
dfun=3*x^2-1;

4.简化的Newton迭代:

公式变形:

为对应的迭代函数,可证收敛,一般来说可以取

二. 插值与拟合

1.插值:用所有的离散数据确定函数表达式的方法。

  • 缺点:如果数据存在观测误差或噪声,那么可能确定的函数并不是最佳的函数

代数插值问题理论基础:插值存在唯一性定理(系数构成Vandermonde行列式)

  • 龙格现象:多项式的次数越多需要的数据就越多,预测就越准确。插值次数越高,插值结果越偏离原函数。高次插值结果并不可靠。
  • 如何避免龙格现象:分段线性插值(保证了局部特性,但在节点处不光滑)、分段三次插值/样条插值(既能保证局部特性又能保证光滑性)

插值函数:

1)一维插值函数:

yq = interpl(x,y,xq,'method')%x向量是样本点,y向量是样本点对应值,向量xq是查询点,
%向量yq是函数在查询点的估计值,method表示采用的插值方法,包括linear和spline,缺省时默认为线性插值。

2) 二维插值函数:

vq = interp2(x,y,v,xq,yq,'method')

2.拟合:

  • 优点:可以消除局部波动

主要方法:最小二乘法。

曲线拟合:拟合计算要解决的基本问题是:根据给定的观测值x预测

估计经验公式中的未知参数

参数求解:高斯拟合原理、最小二乘法:

即满足

微分方程组的方式,求偏导找驻点(对所有α求偏导)

拟合函数:

  • 多项式拟合函数:polyfit+多项式求值函数:polyval+作图(散点用'o',直线用'r'之类的)

调用格式:

p=polyfit(x,y,n)%x,y为数据点,n位多项式阶数(n可以大于最适宜拟合阶数的值,不能小与),返回p为幂次从高到低的多项式系数向量
y=polyval(p,x)%返回对应自变量x在给定系数P的多项式的值

注:指数拟合可以化为多项式/线性拟合。

  • 指数函数可以用来描述事物增长或衰减的规律:入放射性原子核、血液中药物和酒精的衰变规律等。
  • 对于非线性拟合函数,如果无法转化成熟悉的多项式拟合,也可以用非线性拟合函数lsqcurvefit直接求解
beta = lsqcurvefit(fun,beta0,xdata,ydata)%beta为求解的非线性拟合函数系数,xydata为给定数据,
%fun为自定义的拟合函数。beta0为待定系数的初始值
  • 如何选取初值[1]
  1. 如果已知数学模型,有一定物理意义,则建议根据物理意义选取。
  2. 如果无法确定初值,且你的数学模型有导数(如果求导模型很复杂甚至没有导数,则可进行简单的差分构造),则可以采取如下的办法进行:
    1. 求出拟合函数的n(如无特殊条件n一般为1)阶导数。
    2. 使用已知数据求出近似点的一阶导数。
    3. 代入一阶导数函数以及原函数求得初值近似值。

symfun(___)把符号函数当作函数来用。//而sym(_____)的话必须 要sub

参考

  1. ^引自 http://blog.163.com/shikang999@126/blog/static/172624896201463111856714/
http://www.lryc.cn/news/2419534.html

相关文章:

  • 红黑树( 图解 + 秒懂 + 史上最全)
  • GoAhead_网页操作
  • TCP/IP-网络层
  • 史上最全的正则表达式-匹配中英文、字母和数字
  • APP启动优化理论与实践(下)
  • 不得了!这个国产数据库居然实现了Oracle聚合函数vm_concat
  • 1、图基础知识介绍
  • 置换群与轮换
  • 网页表单提交方式详细汇总
  • 外网/公网出口IP查询方法汇总
  • 巧用利器!十款网页设计与开发效率提升的工具与网站!
  • Win32之ShowWindow
  • sdcc 存储类型关键字
  • DeviceIoControl的使用说明
  • fcfs调度算法_王道操作系统学习笔记(四)进程调度
  • 对偶问题的理解
  • java 通过远程URL实现文件下载几种方式
  • 《工程电磁场》学习笔记1-静电场
  • 研究生们都在推荐哪些好用的论文在线翻译软件?
  • 【STM32学习笔记】(9)——串口通讯(USART)详解
  • 机器学习(四)—— 多项式回归
  • 如何解决IDEA中输入sout,psvm后没有自动联想功能的问题。
  • Linux-UGO用户权限
  • HTML Help Workshop(chm生成工具)的使用
  • 汉字转Unicode编码
  • Java 性能优化实战工具实践:基准测试 JMH,精确测量方法性能
  • 网络通信基础(入门知识总结)
  • 实现动态数组
  • 四大主流云平台对比--CloudStack, Eucalyptus, vCloud Director和OpenStack。
  • 37.绘制文本DrawText、DrawTextEx、DRAWTEXTPARAMS 使用