数值分析实验作业。
指导老师:院系:
姓名: 学号:
第二章 用matlab编写的程序如下:
function t_charpt2
数值实验二:含“实验2.1:多项式插值的**现象”和“实验2.2:样条插值的收敛”
输入:实验选择,函数式选择,插值结点数。
输出:拟合函数及原函数的图形。
result=inputdlg(,'charpt2',1,);
nb=str2num(char(result));
if(nb~=1)&(nb~=2)errordlg('实验选择错误!')return;end
promps=;
titles='charpt2';
result=inputdlg(promps,'charpt2',1,);
nb_f=char(result);
if(nb_f~='f'&nb_f~='h'&nb_f~='g')errordlg('实验函数选择错误!')return;end
result=inputdlg(,'charpt2',1,);
nd=str2num(char(result));
if(nd<1)errordlg('结点输入错误!')return;end
switch nb_f
case 'f'
f=inline('1./(1+25*x.^2)')a=-1;b=1;
case 'h'
f=inline('x./(1+x.^4)')a=-5;b=5;
case 'g'
f=inline('atan(x)')a=-5;b=5;
endif(nb==1)
x0=linspace(a,b,nd+1);y0=feval(f,x0);
x=a:0.1:b;y=lagrange(x0,y0,x);
fplot(f,[a b],'co');
hold on;
plot(x,y,'b--'
xlabel('x');ylabel('y=f(x) o and y=ln(x)--
elseif(nb==2)
x0=linspace(a,b,nd+1);y0=feval(f,x0);
x=a:0.1:b;
cs=spline(x0,y0);y=ppval(cs,x);
plot(x0,y0,'o');hold on ;plot(x,y,'k-')
xlabel('x');ylabel('y=f(x) o and y=spline(x)-'end
function y=lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m;
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if(j~=k)
p=p*(z-x0(j))/x0(k)-x0(j));
endend
s=s+p*y0(k);
endy(i)=s;
end若选择实验2.1,实验函数为f,插值结点数为6,则结果为:
若选择实验2.1,实验函数为f,插值结点数为20,则结果为:
若选择实验2.1,实验函数为f,插值结点数为27,则结果为:
选择其它的函数重复上述的实验,在这里我选择的是h函数,具体结果如下:
若选择实验2.1,实验函数为h,插值结点数为6,则结果为:
若选择实验2.1,实验函数为h,插值结点数为20,则结果为:
若选择实验2.1,实验函数为h,插值结点数为27,则结果为:
实验2.2输入2,实验函数为f,插值节点数为20,则结果为:
输入2,实验函数为h,插值节点数为20,则结果为:
分析:1.对于n次lagrange插值多项式pn(x)近似逼近函数f(x)时,pn(x)的次数并非越高,越逼近目标函数f(x)。
在实验中选取一个较小数6,可以看到pn(x)图像与f(x)吻合情况不是很好,当选取n=20时,pn(x)与f(x)在区间[-1,1]上的吻合情况较好;但是当选取较大数27,pn(x)开始发生振荡,吻合情况较差,也即“龙格”现象。
在选取的函数h(x)不会发生类似的现象,精度会随着次数的增加而增加,不会出现所谓的“龙格”现象。
2.从样条插值的实验结果可以看到:样条插值的逼近情况比lagrange插值要好,并且lagrange插值在区间[-5,5]上端点处会有一定的波动,但是样条插值结果与精确值吻合较好。
第三章实验3
用matlab编写的程序如下:
function charpt3
数值实验三:含“实验3.1”和“实验3.2”
子函数调用:dlsa
输入:实验选择。
输出:原函数及求得的相应插值多项式的函数的图像以及参数alph和误差r
result=inputdlg(,'charpt3',1,);
nb=str2num(char(result));
if(nb~=1)&(nb~=2)errordlg('实验选择错误!')return;end
x0=-1:0.5:2;
y0=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552];
if(nb==1)
n=3; %n为拟合阶次。
alph=polyfit(x0,y0,n);
y=polyval(alph,x0);
r=(y0-y)*(y0-y)';
x=-1:0.01:2;
y=polyval(alph,x);
plot(x,y,'k--'
xlabel('x');ylabel('y0 * and ')
hold on
plot(x0,y0,'*
grid on;
elseresult=inputdlg(,'charpt3',1,);
w=str2num(char(result));
n=3;[a,b,c,alph,r]=dlsa(x0,y0,w,n);
enddisp(['平方误差:',num2str(r)])
disp(['参数alph:',num2str(alph)])
function [a,b,c,alph,r]=dlsa(x,y,w,n)
功能:用正交化方法对离散数据作多项式最小二乘拟合。
%输入:m+1个离散点(x,y,w),x,y,w分别用行向量给出。
拟合多项式的次数n,0平方误差r=(y-s,y-s),并作离散点列和拟合曲线的图形
m=length(x)-1;
if(n<1|n>=m)errordlg('错误:n<1或者n>=m!')return;end
求三项递推公式的参数a,b,拟合多项式s(x)的系数c,其中d(k)=(y,sk);
s1=0;s2=ones(1,m+1);v2=sum(w);
d(1)=y*w';c(1)=d(1)/v2;
for k=1:n
xs=x.*s2.^2*w';a(k)=xs/v2;
if k==1 b(k)=0;
else b(k)=v2/v1;
ends3=(x-a(k)).s2-b(k)*s1;
v3=s3.^2*w';
d(k+1)=y.*s3*w';c(k+1)=d(k+1)/v3;
s1=s2;s2=s3;v1=v2;v2=v3;
end%求平方误差r
r=y.*y*w'-c*d';
求拟合多项式s(x)的降幂系数alph
alph=zeros(1,n+1);t=zeros(n+1,n+2);
t(:,2)=ones(n+1,1);t(2,3)=-a(1);
if n>=2
for k=3:n+1
for i=3:k+1
t(k,i)=t(k-1,i)-a(k-1)*t(k-1,i-1)-b(k-1)*t(k-2,i-2);
endend
endfor i=1:n+1
for k=i:n+1
alph(n+2-i)=alph(n+2-i)+c(k)*t(k,k+2-i);
endend
%用秦九韶方法计算s(t)的输出序列(t,s)
数值分析作业
12.求在 0,1 上的一次最佳平方逼近多项式与二次最佳平方逼近多项式。函数 function s zjpfbj n,a,b 创建一个函数,里面填入次数,和区间范围。base inline x j 1 x j 定义多项式。quan inline 1 x 权函数。a zeros n 1 y zeros...
数值分析作业
实验2.2算法设计与比较。实验目的 编制不同方法的matlab程序,这些方法的计算效果和特点。问题提出 非线性方程的数值解法很多,不同的方法效果如何,要靠计算的实践来分析 比较。实验内容 考虑下列算法 1 牛顿法 2 弦割法 3 抛物线法。分别编写它们的matlab程序。牛顿法程序 function...
数值分析作业
数值分析上机作业。zhh mushan 班级 土木工程一班。姓名 赵惠惠。班级 2010510359 二零一一年六月 舍入误差与有效数。一 问题说明。1 设,其精确值为。1 编制按从小到大的顺序计算通用程序。2 编制按从小到大的顺序计算通用程序。3 按两种顺序分别计算并指出有效位数。编制程序用单精度...