数值分析作业

发布 2022-08-27 20:45:28 阅读 3382

数值分析实验作业。

指导老师:院系:

姓名: 学号:

第二章 用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 按两种顺序分别计算并指出有效位数。编制程序用单精度...