第二次上机作业题目1:用exp(x)的泰勒展开式求解exp(x)程序functionresult=expx(x,n)formatlongif(n0)disp('输入的n值必须为正整数')return;elseif(n==0)result=1;return;elsen=ceil(n);%当输入n为大于0的小数时,取n为大于此小数的最小整数endt=1;result=1;fori=1:nt=t*x/i;result=result+t;endend运算结果:expx(1,-1)回车输入的n值必须为正整数expx(1,0)回车ans=1expx(1,20)回车ans=2.718281828459046题目2:用正弦函数的泰勒展开式求解sin(x)程序:functionresult=sinx(x,n)formatlongif(n=0)disp('输入的n值必须为正奇数')return;elsen=ceil(n);%当输入n为大于0的小数时,取n为大于此小数的最小整数endif(n=2)result=x;return;endt=x;result=x;fori=3:2:nt=-t*x*x/(i*(i-1));result=result+t;endend运算结果:sinx(pi/2,-1)回车输入的n值必须为正奇数sinx(pi/2,3)回车ans=0.924832229288650sinx(pi/2,20)回车ans=1第三次上机作业题目1:拉格朗日插值程序:functiony=lagrangex(x,xi,yi)%x为插值点向量,xi,yi为插值节点自变量向量及对应的函数值向量m=length(xi);n=length(yi);h=length(x);y(h,1)=0;if(m~=n)disp('向量xi和yi的维数必须相同')return;endfori=1:hif(x(i)min(xi)||x(i)max(xi))x(i),disp('的插值为外插,结果可靠性较差')endendxi=reshape(xi,[m,1]);yi=reshape(yi,[m,1]);lx=zeros(m,1);fori=1:hlx(:,1)=1;fork=1:mforj=1:mif(k~=j)t=(x(i)-xi(j))/(xi(k)-xi(j));lx(k)=lx(k)*t;endendendy(i)=sum(yi.*lx);endplot(xi,yi,'o',x,y)end程序验证:用y=x^2+2x+1作为验证函数X:-5-4-3-2-1012345Y:169410149162536插值点:xx=-5:0.2:5结果:题目2:三次样条插值程序:functiony=threex(x,xi,yi,dy)%x表示插值点向量,xi,yi为插值节点自变量向量及对应的函数值向量,dy=[y0'yn']m=length(xi);n=length(yi);k=length(x);y(k,1)=0;if(m~=n)disp('xi,yi维数必须一致,且均为向量')return;endif(length(dy)~=2)disp('dy有且只能有两个元素')return;endxi=reshape(xi,[m,1]);yi=reshape(yi,[m,1]);hi(m-1,1)=0;ai(m-2,1)=0;bi(m-2,1)=0;fori=1:m-1hi(i)=xi(i+1)-xi(i);endfori=1:m-2ai(i)=hi(i)/(hi(i)+hi(i+1));endfori=1:m-2bi(i)=3*((1-ai(i))*(yi(i+1)-yi(i))/hi(i)+ai(i)*(yi(i+2)-yi(i+1))/hi(i+1));endA(m-2,m-2)=0;fori=1:m-2if(1i&&im-2)A(i,i-1)=1-ai(i);A(i,i)=2;A(i,i+1)=ai(i);elseif(i==1)A(1,1)=2;A(1,2)=ai(1);elseA(i,i-1)=1-ai(i);A(i,i)=2;endendbi(1)=bi(1)-(1-ai(1))*dy(1);bi(m-2)=bi(m-2)-ai(m-2)*dy(2);mj=A\bi;mi=[dy(1);mj;dy(2)];fori=1:kforj=1:m-1if(xi(j+1)=x(i)&&x(i)=xi(j))y(i)=((x(i)-xi(j))/hi(j)-1)^2*(2*(x(i)-xi(j))/hi(j)+1)*yi(j)+((x(i)-xi(j))/hi(j))^2*...(3-2*(x(i)-xi(j))/hi(j))*yi(j+1)+hi(j)*(x(i)-xi(j))/hi(j)*((x(i)-xi(j))/hi(j)-1)^2*...mi(j)+hi(j)*((x(i)-xi(j))/hi(j))^2*((x(i)-xi(j))/hi(j)-1)*mi(j+1);break;endendendplot(xi,yi,'o',x,y)end程序验证:验证函数:y=1/(1+x^2)X:-5-4-3-2-1012345Y:0.03850.05880.10000.20000.50001.00000.50000.20000.10000.05880.0385插值点xx:-5:0.2:5结果: