电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PDF文档下载
分享到微信 分享到微博 分享到QQ空间

计算方法上机作业求三次样条插值函数的matlab程序

  • 资源ID:61551990       资源大小:127.20KB        全文页数:4页
  • 资源格式: PDF        下载积分:5金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要5金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

计算方法上机作业求三次样条插值函数的matlab程序

<p>计算方法上机报告 23 附录 3 求三次样条插值函数的 matlab 程序 clc;clear; type = input(&#39;n 选择插值节点的类型:n 插值对象为连续函数请输入 1,n 插值对象为列表函数请输入 2。n&#39;); while type =1 &nbsp;pause(1) type = input(&#39;n 选择插值节点的类型:n 插值对象为连续函数请输入 1, n 插值对象为列表函数请输入 2。n&#39;); end if type=1 s = input(&#39;n 请输入连续函数的表达式:nf(x) = &#39;,&#39;s&#39;); a = input(&#39;n 请输入插值区间下限 a:n&#39;); b = input(&#39;n 请输入插值区间上限 b:n&#39;); n = input(&#39;n 输入插值节点数 n:n&#39;); f = inline(s); x = a:(b-a)/(n-1):b; for o=1:n oo = a+(o-1)*(b-a)/(n-1); y(o) = f(oo); end end if type=2 n = input(&#39;n 输入插值节点数 n:n&#39;); x = input(&#39;n 输入插值节点构成的向量 x_i:n&#39;); y = input(&#39;n 输入插值节点对应的函数值构成的向量 y_i:n&#39;); end h = zeros(n-1,1); miu = zeros(n-2,1); lambda = zeros(n-2,1); S = zeros(n-1,4); for i=1:n-1 h(i) = x(i+1)-x(i); end for j=1:n-2 miu(j) = h(j)/(h(j)+h(j+1); lambda(j) = 1-miu(j); d(j) = 6/(h(j)+h(j+1)*(y(j+2)-y(j+1)/h(j+1)-(y(j+1)-y(j)/h(j); end %边界条件的选择 boundary = input(&#39;n 选择封闭方程组的边界条件: n 第一类边界条件输入 1, n 第二类边界条件输入 2,n 第三类边界条件输入 3。n&#39;); while boundary=1 &nbsp;pause(1) boundary = input(&#39;n 选择封闭方程组的边界条件: n 第一类边界条件输 入 1,n 第二类边界条件输入 2,n 第三类边界条件输入 3。n&#39;); end %第一类边界条件 AM=D 附录 3 求三次样条插值函数的 matlab 程序 24 if boundary = 1 A = zeros(n-2,n-2); D = zeros(n-2,1); M_0 = input(&#39;n 输入插值区间左端点 a 处的二阶导数值(若为自然三次 样条插值函数,输入 0) :n&#39;); M_n = input(&#39;n 输入插值区间右端点 b 处的二阶导数值(若为自然三次 样条插值函数,输入 0) :n&#39;); for k = 2:n-3 A(k,k-1:k+1) = miu(k),2,lambda(k); D(k) = d(k); end A(1,1:2) = 2,lambda(1); A(n-2,n-3:n-2) = miu(n-2),2; D(1) = d(1)-miu(1)*M_0; D(n-2) = d(n-2)-lambda(n-2)*M_n; end %第二类边界条件 if boundary = 2 A = zeros(n,n); D = zeros(n,1); dydx_a = input(&#39;n 输入插值区间左端点 a 处的一阶导数值:n&#39;); dydx_b = input(&#39;n 输入插值区间右端点 b 处的一阶导数值:n&#39;); d_0 = 6/h(1)*(y(2)-y(1)/h(1)-dydx_a); d_n = 6/h(n-1)*(dydx_b-(y(n)-y(n-1)/h(n-1); for k = 2:n-1 A(k,k-1:k+1) = miu(k-1),2,lambda(k-1); D(k) = d(k-1); end A(1,1:2) = 2,1; A(n,n-1:n) = 1,2; D(1) = d_0; D(n) = d_n; end %第三类边界条件 if boundary =3 A = zeros(n-1,n-1); D = zeros(n-1,1); miu_n = h(n-1)/(h(n-1)+h(1); lambda_n = 1-miu_n; d_n = 6/(h(n-1)+h(1)*(y(2)-y(n)/h(1)-(y(n)-y(n-1)/h(n-1); for k=2:n-2 A(k,k-1:k+1) = miu(k),2,lambda(k); D(k) = d(k); end A(1,1:2) = 2,lambda(1); A(1,n-1) = miu(1); A(n-1,1) = lambda_n; A(n-1,n-2:n-1) = miu_n,2; D(1) = d(1); D(n-1) = d_n; end %用追赶法求解一、二类边界条件下的三弯矩方程组 if boundary =1 | boundary =2 N = n-(4-2*boundary); 计算方法上机报告 25 l = zeros(N,1); u = zeros(N,1); yy = zeros(N,1); M = zeros(N,1); u(1) = A(1,1); yy(1) = D(1); for p=2:N l(p) = A(p,p-1)/u(p-1); u(p) = A(p,p)-l(p)*A(p-1,p); yy(p) = D(p)-l(p)*yy(p-1); end M(N) = yy(N)/u(N); q =N; while q=1 q = q-1; M(q) = (yy(q)-A(q,q+1)*M(q+1)/u(q); end if boundary =1 M = M_0;M;M_n; end end %用 LU 分解求解第三类边界条件下的三弯矩方程组 if boundary =3 l = zeros(n-1,n-1); u = zeros(n-1,n-1); yy = zeros(n-1,1); u(1,:) = A(1,:); l(:,1) = A(:,1)/u(1,1); l(1,1) = 1; yy(1) = D(1); M1 = zeros(n-1,1); M = zeros(n,1); for a=2:n-2 l(a,a) = 1; lu1 = 0; for c=1:a-1 lu1 = lu1+l(a,c)*u(c,a); end u(a,a) = A(a,a)-lu1; for b=a+1:n-1 lu2 = 0; lu3 = 0; for d=1:a-1 lu2 = lu2+l(a,d)*u(d,b); lu3 = lu3+l(b,d)*u(d,a); end u(a,b) = A(a,b)-lu2; l(b,a) = (A(b,a)-lu3)/u(a,a); end end lu = 0; for e=1:n-2; lu = lu+l(n-1,e)*u(e,n-1); end u(n-1,n-1) = A(n-1,n-1)-lu; l(n-1,n-1) = 1; 附录 3 求三次样条插值函数的 matlab 程序 26 for f = 2:n-1; ly = 0; for g = 1:f-1 ly = ly+l(f,g)*yy(g); end yy(f) = D(f)-ly; end M1(n-1) = yy(n-1)/u(n-1,n-1); for rr=1:n-2 r = n-1-rr; uM1 = 0; for s=r+1:n-1 uM1 = uM1+u(r,s)*M1(s); end M1(r) = (yy(r)-uM1)/u(r,r); end M = M1(n-1,1);M1; end ss = 0; for t=1:n-1 S(t,1) = (M(t+1)-M(t)/(6*h(t); S(t,2) = (M(t)*x(t+1)-M(t+1)*x(t)/(2*h(t); S(t,3) = (M(t+1)*x(t)2-M(t)*x(t+1)2)/(2*h(t)+(y(t+1)-y(t)/h(t)+h(t)*(M(t)-M(t+1)/6; S(t,4) = (M(t)*x(t+1)3-M(t+1)*x(t)3)/(6*h(t)+(y(t)*x(t+1)-y(t+1)*x(t)/h(t)+h(t)*(M(t+1)* x(t)-M(t)*x(t+1)/6; for x1 = x(t):(x(t+1)-x(t)/100:x(t+1) ss = ss+1; xx(ss) = x1; SS(ss) = S(t,1)*x13+S(t,2)*x12+S(t,3)*x1+S(t,4); end end plot(xx,SS,&#39;-k&#39;,&#39;linewidth&#39;,2); hold on plot(x,y,&#39;*k&#39;,&#39;markersize&#39;,10); hold on xlabel(&#39;x&#39;); ylabel(&#39;S(x)&#39;); grid; fprintf(&#39;n 所求的三次样条插值函数为:n&#39;); for uu=1:n-1 fprintf(&#39;S(x) = %10.5f*x3+%10.5f*x2+%10.5f*x+%10.5f, %8.4f= x =%8.4fn&#39;,S(uu,1),S(uu,2),S(uu,3),S(uu,4),x(uu),x(uu+1); end</p>

注意事项

本文(计算方法上机作业求三次样条插值函数的matlab程序)为本站会员(共***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.