第3章MTLAB符号计算.ppt

  1. 1、本文档共114页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章MTLAB符号计算

为了实现非线性拟合,首先要定义在线函数 inline 定义的函数:用于曲线拟合、数值计算 步骤:(1) 建立M文件; (2) fun=inline(f(x) , 参变量,x) 例. 建立函数: a,b,c为待定的参数 fun=inline(b(1)*(1-b(2)*exp(-b(3)*x)),b,x); 此处,将b看成参变量,b(1),b(2),b(3)为其分量. 若计算函数在x=0:0.1:1上的函数值,由于此时x为矩阵,只需将函数表达式中的某些量表示成向量有些*改成.*即可. 非线性回归命令 nlinfit [beta, R, J]=nlinfit(X, Y, ’ model’, beta0) X 为n*m矩阵 n行 Y为 n维列向量 n行 model为自定义函数,即参数的初始值 beta0为估计的模型系数 beta为回归系数 R为残差 J为雅克比矩阵的数值 X,Y为原始数据,model是在M文件中定义的函数 在实际问题中,可以猜测曲线类型,然后利用如下命令: [beta,r,J] = nlinfit(x,y,fun,beta0) 例2. 已知如下数据,求拟合曲线 k=[ 0,47,93,140,186,279,372,465,558,651]; y=[18.98,27.35,34.86,38.52,38.44,37.73,38.43,43.87,42.77,46.22]; plot(k,y,*) 根据右图,我们猜测曲线为: 现在利用最小二乘法确定最佳参数:b1,b2,b3 b0=[43,0.6,0.1]; %初始参数值 fun=inline(b(1)*(1-b(2)*exp(-b(3)*k)),b,k); [b,r,j]=nlinfit(k,y,fun,b0); b %最佳参数 R=sum(r.^2) %误差平方和 b = 42.6643,0.5483,0.0099 即拟合曲线为: 拟合结果如右图所示,红色为拟合曲线图形,*为原始散点图. y1=42.6643*(1-0.5483*exp(-0.0099*k)); plot(k,y,*,k,y1,-or) 作图程序为: 练习:炼钢厂出钢时所用盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积不断增大,我们希望找出使用次数与增大容积之间的函数关系.实验数据如下: 表 钢包使用次数与增大容积 使用 次数 2 3 4 5 6 7 8 9 增大 容积 6.42 8.2 9.58 9.5 9.7 10 9.93 9.99 使用 次数 10 11 12 13 14 15 16 增大 容积 10.49 10.59 10.6 10.8 10.6 10.9 10.76 分别选择函数 拟合钢包容积与使用次数的关系 ,在同一坐标系内作出函数图形. x1=[2:16]; y1=[6.42,8.2,9.58,9.5,9.7,10,9.93,9.99,10.49,10.59,10.6,10.8,10.6,10.9,10.76]; b01=[0.1435,0.084]; %初始参数值 fun1=inline(x./(b(1)+b(2)*x),b,x); % 定义函数 [b1,r1,j1]=nlinfit(x1,y1,fun1,b01); y=x1./(0.1152+0.0845*x1); %根据b1写出具体函数 plot(x1,y1,*,x1,y,-or); 下面给出分式函数拟合程序: 初始参数b0的计算, 由于确定两个参数值,因此我们选择已知数据中的两点(2,6.42)和(16,10.76)代入方程,得到方程组: 可决系数计算: 上述方程组有两种解法:手工,Matlab,下面介绍Matlab 解方程组的方法 [x,y]=solve(6.42*(2*a+b)=2,10.76*(16*a+b)=16) 取点:(2,6.42),(8,9.93),(10,10.49)代入上述方程 [a,b,c]=solve(log(b)+c*2=log(6.42/a-1),log(b)+c*10=log(10.49/a-1),log(b)+c*8=log(9.93/a-1)) 注意:如果出现复数解,则只取实部 泰勒级数展开taylor Taylor(f,n)将函数f按照泰勒级数展开n项 例:sinx的泰勒级数展开的前6项 syms x taylor(sin(x),6) pretty(ans) 3 5

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档