Ch5数值逼近.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ch5数值逼近

自适应Simpleson积分法:quad、quadl、quad8 q = quad(fun,a,b) 近似地从a到b计算函数fun的数值积分,误差为10-6。若给fun输入向量x,应返回向量y,即fun是一单值函数。 q = quad(fun,a,b,tol) 用指定的绝对误差tol代替缺省误差。tol越大,函数计算的次数越少,速度越快,但结果精度变小。 q = quad(fun,a,b,tol,trace,p1,p2,…) 将可选参数p1,p2,…等传递给函数fun(x,p1,p2,…),再作数值积分。若tol=[]或trace=[],则用缺省值进行计算。 [q,n] = quad(fun,a,b,…) 同时返回函数计算的次数n [q,n] = quadl(fun,a,b,…) 用高精度进行计算,效率可能比quad更好。 [q,n] = quad8(fun,a,b,…) 该命令是将废弃的命令,用quadl代替。 fun = inline(3*x.^2./(x.^3-2*x.^2+3)); Q1 = quad(fun,0,2) Q2 = quadl(fun,0,2) Q1 = 3.7224 Q2 = 3.7224 一元函数的数值积分:方法比较 (1)将(0,pi/2)10等分,步长为pi/20,利用trapz(x)函数按梯形算法计算 (2)使用quad(‘fun’,a,b)函数命令的辛普森公式法: (3)蒙特卡罗均值估计法:蒙特卡罗法是一种随机实验方法。本例使用sum(x)函数,sum(x)函数的功能是输入数组x,输出x的和。 z = 0.99794 m=pi/20; x=0:m:pi/2; y=sin(x); z=trapz(y)*m z=quad(sin,0,pi/2) r=100000; x=rand(1,r); y=sin(x*pi/2); z=sum(y)*pi/2/r z = 1 z = 1.001 上面三种方法得出的结果不同这是由于所选方法各自产生的误差不同所造成的。 应用1:饱和蒸气压的拟合 1、问题描述 饱和蒸气压的拟合 2、理论分析 题目要求是求模型方程ln p=A+B/(t+C)中的三个参数A、B和C的值。因为该模型为非线性关系,所以这是一个非线性拟合问题。 3、数值方法及程序设计分析 对于该问题可以采用MATLAB中的非线性拟合命令lsqcurvefit求解。求解分两步 第一步:建立拟合模型的函数。 function y=funantoine(x,t),其中x是拟合输出参数,t是拟合数据的,y是拟合模型计算值。 第二步:主程序 先输入拟合数据,然后用x = lsqcurvefit(@funantoine,x0,t,p)进行非线性拟合,其中t,p是输入拟合数据,funantoine是拟合模型方程,x0时拟合参数的初始值,x是输出的拟合参数。那么A=x(1),B=x(2),C=x(3)。 源程序(1) %主程式 function antoine clear clc % %定义参数: % t:温度[oC] % p:温度t对应的纯液体的饱和蒸汽压[mmHg] % A,B,C:要求的参数 % global tp % %给定数据 % t=[8.86 50.0 76.22 20.59 60.78 85.92 16.31 56.95 80.00 26.89 67.13 91.78 26.1 63.33 81.30 35.19 74.03 97.69 40.25 69.57 14.55 49.07 78.89 103.65]; p=[42.6 268.3 671.9 77.28 402.4 906.06 62.4 347.1 756.2 103.64 500.7 1074.6 98.4 437.0 789.2 149.4 627.9 1268.0 183.0 540.9 57.41 261.8 732.1 1489.1]; 源程序(2) x0=[16 -3000 230]; %求出三个参数解 x = lsqcurvefit(@funantoine,x0,t,p) A=x(1); B=x(2); C=x(3); %disply disp(sprintf(\n 参数估计值为: A=%5.2f, B=%7.2f,and C=%6.2f,A,B,C)) t2=linspace(8,104,100) ; p2=funantoine(x,t2); plot(t,p,b*,t2,p2,r-) xlabel(temper

文档评论(0)

kabudou + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档