最新MATLAB三次样条插值之三转角法.docx

最新MATLAB三次样条插值之三转角法.docx

ID:62984968

大小:114.82 KB

页数:8页

时间:2021-07-23

最新MATLAB三次样条插值之三转角法.docx_第1页
最新MATLAB三次样条插值之三转角法.docx_第2页
最新MATLAB三次样条插值之三转角法.docx_第3页
最新MATLAB三次样条插值之三转角法.docx_第4页
最新MATLAB三次样条插值之三转角法.docx_第5页
资源描述:

《最新MATLAB三次样条插值之三转角法.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、精品资料MATLAB三次样条插值之三转角法........................................精品资料非常类似前面的三弯矩法,这里的sanzhj函数和intersanzhj作用相当于前面的sanwanj和intersanwj,追赶法程序通用,代码如下。%%%%%%%%%%%%%%%%%%%function[newu,w,newv,d]=sanzhj(x,y,x0,y0,y1a,y1b) %三转角样条插值 %将插值点分两次输入,x0y0单独输入 %边值条件a的一阶导数y1a和b的

2、一阶导数y1b n=length(x);m=length(y); ifm~=n error('xory输入有误,再来'); end v=ones(n-1,1); u=ones(n-1,1); d=zeros(n-1,1); w=2*ones(n-1,1); h0=x(1)-x0; ........................................精品资料h=zeros(n-1,1); fork=1:n-1 h(k)=x(k+1)-x(k); end v(1)=h0/(h0+h(1)); u(

3、1)=1-v(1); d(1)=3*(v(1)*(y(2)-y(1))/h(1)+u(1)*((y(1)-y0))/h0); % fork=2:n-1 v(k)=h(k-1)/(h(k-1)+h(k)); u(k)=1-v(k); d(k)=3*(v(k)*(y(k+1)-y(k))/h(k)+u(k)*(y(k)-y(k-1))/h(k-1)); end d(1)=d(1)-u(1)*y1a; d(n-1)=d(n-1)-v(n-1)*y1b; newv=v(1:n-2,:); newu=u(2:n-1

4、,:);........................................精品资料%%%%%%%%%%%%functionintersanzhj(x,y,x0,y0,y1a,y1b) %三转角样条插值 %第一部分 n=length(x);m=length(y); ifm~=n error('xory输入有误,再来'); end %重新定义h h=zeros(n,1); h(1)=x(1)-x0; fork=2:n h(k)=x(k)-x(k-1); end %调用三转角函数 [a,b,c,d

5、]=sanzhj(x,y,x0,y0,y1a,y1b); %三对角方程 m=chase(a,b,c,d); %求M ........................................精品资料M=[1;m;0]; %求插值函数 fprintf('三次样条(三转角)插值的函数表达式'); symsX; fprintf('S0--1:'); S(1)=collect((y0/h(1).^3)*(X-x(1)).^2*(h(1)+2*(X-x0))+(y(1)/h(1).^3)*(X-x0)

6、.^2*(h(1)+2*(x(1)-X))+(M(1)/h(1).^2)*(X-x0)*(X-x(1)).^2+(M(2)/h(1).^2)*(X-x(1))*(X-x0).^2); fork=2:n fprintf('S%d--%d:',k-1,k); S(k)=collect((y(k-1)/h(k).^3)*(X-x(k)).^2*(h(k)+2*(X-x(k-1)))+(y(k)/h(k).^3)*(X-x(k-1)).^2*(h(k)+2*(x(k)-X))+(M(k)/h(k).^2)*(

7、X-x(k-1))*(X-x(k)).^2+(M(k+1)/h(k).^2)*(X-x(k))*(X-x(k-1)).^2); ........................................精品资料end S=S.'; disp(S); fprintf('以上为样条函数(三转角)解析式,显示为手写习惯如下:'); pretty(S); %第二部分 %是否继续运行程序 myloop=input('继续运行程序输入“1”,否则输入“0”'); ifmyloop whilemyloop

8、 xi=input('输入需要计算的点的值,并按回车键'); ifxi>x0

9、xi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。