资源描述:
《用matlab编写拉格朗日插值算法的程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、用matlab编写拉格朗日插值算法的程序10[ 标签:matlab,插值算法,程序 ]用matlab编写拉格朗日插值算法的程序,并以下面给出的函数表为数据基础,在整个插值区间上采用拉格朗日插值法计算f(0.6),写出程序源代码,输出计算结果x -2.15 -1.00 0.01 1.02 2.03 3.25y 17.03 7.24 1.05 2.03 17.06 23.05匿名回答:1人气:6解决时间:2011-05-2419:58满意答案好评率:83%做了一个测试,希望有所帮助。代码:%用matlab编写拉格朗日插值算法的程序,并
2、以下面给出的函数表为数据基础,%在整个插值区间上采用拉格朗日插值法计算f(0.6),写出程序源代码,输出计算结果%x -2.15 -1.00 0.01 1.02 2.03 3.25%y 17.03 7.24 1.05 2.03 17.06 23.05functionmain()clc;x=[-2.15 -1.00 0.01 1.02 2.03 3.25];y=[17.03 7.24 1.05 2.03 17.06 23.05];x0=0.6;f=Language(x,y,x0)funct
3、ionf=Language(x,y,x0)%求已知数据点的拉格朗日插值多项式%已知数据点的x坐标向量:x%已知数据点的y坐标向量:y%插值点的x坐标:x0%求得的拉格朗日插值多项式或在x0处的插值:fsymstl;if(length(x)==length(y)) n=length(x);else disp('x和y的维数不相等!'); return; %检错endh=sym(0);for(i=1:n) l=sym(y(i)); for(j=1:i-1) l=l*(t-x(j))/(x(i)-x(j)); end; for(j=i+1:n
4、) l=l*(t-x(j))/(x(i)-x(j)); end; h=h+l;endsimplify(h);if(nargin==3) f=subs(h,'t',x0);%计算插值点的函数值else f=collect(h); f=vpa(f,6);%将插值多项式的系数化成6位精度的小数end结果:f= 0.0201>>如何用MATLAB编写的拉格朗日插值算法的程序、二阶龙格-库塔方法的程序和SOR迭代法的程序,要能运行的∮初夏戀雨¢回答:2人气:29解决时间:2009-12-0819:04满意答案好评率:100%拉格朗日functio
5、ny=lagrange(x0,y0,x)n=length(x0);m=length(x);fori=1:mz=x(i);s=0.0;fork=1:np=1.0;forj=1:nifj~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;endSOR迭代法的Matlab程序function[x]=SOR_iterative(A,b)%用SOR迭代求解线性方程组,矩阵A是方阵x0=zeros(1,length(b));%赋初值tol=10^(-2);%给定误差界N=1000;%给定最大迭代次数[n,n]=size(A)
6、;%确定矩阵A的阶w=1;%给定松弛因子k=1;%迭代过程whilek<=Nx(1)=(b(1)-A(1,2:n)*x0(2:n)')/A(1,1);fori=2:nx(i)=(1-w)*x0(i)+w*(b(i)-A(i,1:i-1)*x(1:i-1)'-A(i,i+1:n)*x0(i+1:n)')/A(i,i);endifmax(abs(x-x0))<=tolfid=fopen('SOR_iter_result.txt','wt');fprintf(fid,'********用SOR迭代求解线性方程组的输出结果********');fprintf(fid,'迭代
7、次数:%d次',k);fprintf(fid,'x的值');fprintf(fid,'%12.8f',x);break;endk=k+1;x0=x;endifk==N+1fid=fopen('SOR_iter_result.txt','wt');fprintf(fid,'********用SOR迭代求解线性方程组的输出结果********');fprintf(fid,'迭代次数:%d次',k);fprintf(fid,'超过最大迭代次数,求解失败!')