- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数值分析考试复习题 附录:matlab函数
附录:函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function p=newpoly(x,y,n,x0)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%p=newpoly(x,y,n)
%(x,y)为节点坐标
%p为所求的的差值多项式的系数向量
%n为牛顿插值次数,n=1时为线性插值,n=2时为二次插值...
N=length(x);
d=[x;y];
if nargin==4
for i=1:N %根据插值误差估计式(根据距x0的远近)重新排列插值节点
for j=i+1:N
if abs(d(1,i)-x0)abs(d(1,j)-x0)
t=d(:,i);
d(:,i)=d(:,j);
d(:,j)=t;
end
end
end
end
dq=zeros(n+1,n+2);
dq(:,1)=d(1,1:n+1);
dq(:,2)=d(2,1:n+1);
for i=2:n+1
for j=3:i+1
dq(i,j)=(dq(i,j-1)-dq(i-1,j-1))/(dq(i,1)-dq(i-j+2,1));%差商表
end
end
s=diag(dq(2:end,3:end));
p=dq(1,2);
t=1;
for i=1:n
t=conv(t,[1 -dq(i,1)]);
p=polysum(p,s(i).*t);%函数见polysum.m
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [x,k,flag]=SOR(A,b,delta,w,step)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%函数格式:[x,k,flag]=SOR(A,b,delta,w,step)
%A为方程组的系数矩阵
%b为方程组右端项
%delta为精度要求
%step为最大迭代次数,缺省值为100
%w为松弛因子,w1时为低松弛法,w1时为超松弛法,w=1时为高斯-塞德尔迭代
%x为方程组的解
%k为迭代次数
%flag为收敛标志
if nargin5 step=100;end
if nargin4 w=1;end
if nargin3 ep=1e-5;end
n=length(A);k=0;
x=zeros(n,1);
flag=1;
while 1
y=x;
for i=1:n
z=b(i);
for j=1:n
if j~=i
z=z-A(i,j)*x(j);
end
end
if abs(A(i,i))1e-10||k==step
flag=0;
return;
end
z=z/A(i,i);
x(i)=(1-w)*x(i)+w*z;
end
if norm(y-x,inf)delta
break;
end
k=k+1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=GaussLegendre(func,a,b,n)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%y=GaussLegendre(func,a,b,n)
%func:被积函数表达式,例如x.^2.*cos(x)
%a:积分下限
%b:积分上限
%n:节点数
xTable=[...
0.0 NaN 0 0 0 0;
0.5773503 -0.5773503 0 0 0 0;
0.7745967 -0.7745967 0.0 0 0 0;
0.8611363 -0.8611363 0.3399810 -0.3399
文档评论(0)