数值分析第2次作业

发布 2023-05-18 14:54:28 阅读 5641

工院雷祺。

学号:s201503003

p95第一题主程序。

雷祺 2015.11.5

close all;

clear;

clc;syms t

fun=sym(1/(1+25*t^2));

最佳平方逼近。

fn=squ_appr(fun,3,-1,1);

勒让德多项式最佳平方逼近。

fnl=mylegendre(fun,3);

i=0:1:10;

x=-1+0.2.*i;

y=1./(1+25.*x.^2);

xx=linspace(-1,1,100);

yy=1./(1+25.*xx.^2);

最小二乘。a=myleast_squ2(x,y,3);

正交多项式最小二乘。

a2=myleast_squ2(x,y,3);

三次样条。

fl,yys]=mysplinen(x,y,0,0,xx);

% 多项式。

[f,yyl]=mylanguage(x,y,xx);

yynh=subs(fn,'t',xx);

yynh1=subs(fnl,'t',xx);

aa=subs(a,'t',xx);

aa2=subs(a2,'t',xx);

%帕德拟合。

ypade=mypade_2(fun,1,1)

subplot(2,1,1);

plot(x,y,'*xx,yy,xx,yys,'-xx,yynh,'-xx,yynh1,'o',xx,aa,xx,aa2,'+linewidth',0.5);

legend('插值节点','f(x)',三次样条插值','最佳平方逼近','勒让德多项式最佳平方逼近','最小二乘','正交多项式最小二乘');

title('插值与拟合的比较');

xlabel('x');

ylabel('y');

box on;

grid on;

subplot(2,1,2);

plot(xx,yy-yys,'-xx,yy-yynh,'-xx,yy-yynh1,'.xx,yy-aa,xx,yy-aa2,'+linewidth',0.5);

legend('三次样条插值','最佳平方逼近','勒让德多项式最佳平方逼近','最小二乘','正交多项式最小二乘');

title('插值与拟合误差');

xlabel('x');

ylabel('y');

box on;

grid on;

figure

plot(xx,aa-aa2)

运行结果:p96第2题主程序。

雷祺 2015.11.5

close all;

clear;

clc;syms t

x=[0.0 0.1 0.2 0.3 0.5 0.8 1.0];

y=[1.0 0.41 0.50 0.61 0.91 2.02 2.46];

最小二乘。a3=myleast_squ(x,y,3);%三次。

a4=myleast_squ(x,y,4);%四次。

%%%勒让德多项式最小二乘%%%

a6=mylegendre2(x,y,4);

三角插值。a5=mytriange(y,3);

xx=2*pi*x-pi;%转换区间为(-pi,pi)

计算数值。aa3=subs(a3,'t',x);

aa4=subs(a4,'t',x);

aa6=subs(a6,'t',x);

aa5=subs(a5,'t',xx);

subplot(2,1,1)

plot(x,y,x,aa3,'o',x,aa4,'diamond',x,aa5,'pentagram',x,aa6,'+linewidth',1.5);

title('第二题画图');

legend('原节点','三次最小二乘','四次最小二乘','四次三角插值','四次勒让德多项式','location','northwest');

xlabel('x');

ylabel('y');

box on;

grid on;

subplot(2,1,2)

plot(x,zeros(1,7),x,y-aa3,'o',x,y-aa4,'diamond',x,y-aa5,'pentagram',x,y-aa6,'+linewidth',2);

title('误差');

legend('参考线','三次最小二乘','四次最小二乘','三次三角插值','四次勒让德多项式','location','northwest');

xlabel('x');

ylabel('e');

box on;

grid on;

运行结果:p96第3题主程序。

雷祺 2015.11.5

close all;

clear;

clc;j=linspace(0,31,32);

x=-pi+j*pi/16;%取32个点。

xx=linspace(-pi,pi,500);%500

f=x.^2.*cos(x);

ff=xx.^2.*cos(xx);

s =mytriange(f,16);%三角逼近。

ss=subs(sym(s),'t',xx);

plot(xx,ff,xx,ss,'-linewidth',1.3);%绘图。

legend('原函数','三角插值');

title('快速傅里叶变换的三角插值');

xlabel('x');

ylabel('y');

grid on;

box on;

axis on;

vpa(s,6)

plot(xx,ff-ss,'linewidth',1.3);%绘图。

运行结果:ans =

0.066436*cos(9.0*t) -0.

315508*cos(4.0*t) -0.0801571*cos(8.

0*t) -0.0389271*cos(16.0*t) -2.

2352*cos(2.0*t) +5.43643e-16*sin(2.

0*t) -1.81507e-16*sin(4.0*t) +8.

83477e-17*sin(8.0*t) -5.72546e-17*sin(16.

0*t) +0.194081*cos(5.0*t) -0.

0570435*cos(10.0*t) -7.96259e-17*sin(9.

0*t) +0.0504667*cos(11.0*t) +5.

16803e-17*sin(5.0*t) +4.66853e-16*sin(10.

0*t) +0.638104*cos(3.0*t) -0.

134645*cos(6.0*t) -0.0458343*cos(12.

0*t) -4.34987e-16*sin(11.0*t) +0.

0426232*cos(13.0*t) -7.26949e-18*sin(3.

0*t) +6.68525e-17*sin(6.0*t) +3.

1259e-16*sin(12.0*t) +0.101006*cos(7.

0*t) -0.040514*cos(14.0*t) -3.

22878e-16*sin(13.0*t) +0.0393158*cos(15.

0*t) -1.24978e-16*sin(7.0*t) +3.

84891e-16*sin(14.0*t) -2.99081e-16*sin(15.

0*t) +3.80277*cos(t) -1.15345e-15*sin(t) -2.

00644

最佳平方逼近。

function coff=squ_appr(func,n,a,b)

最佳平方逼近。

输入依次为:原函数,逼近函数次数,范围。

h = zeros(n+1,n+1);

var = findsym(sym(func));以x^k作基。

func = func/var;

for k=1:n+1

func = func*var;%f(x)*x^k

d(k,1)=int(sym(func),var,a,b); d向量。

funcc=funcc*var;

for j=1:n+1

h(k,j)=(power(b,k+j-1)-power(a,k+j-1))/k+j-1);

endend

coff = h\d; %求解逼近多项式的系数c\d

coff=poly2sym(flipud(coff),var);

coff=vpa(coff,6);

勒让德多项式n次最佳平方逼近。

function f = mylegendre(y,n)

勒让德多项式n次最佳平方逼近。区间为[-1,1];不是该区间可以转换到该区间。

雷祺2015,11,2

syms t;

p(1:n+1) =t;

p(1) =1;%构造勒让德多项式前两项。

p(2) =t;

a(1:n+1) =0.0;

a(1)=int(subs(y,findsym(sym(y)),sym('t'))p(1),t,-1,1)/2;

a(2)=3*int(subs(y,findsym(sym(y)),sym('t'))p(2),t,-1,1)/2;

f= a(1)+a(2)*p(2);

for i=2:n

p(i+1) =2*i-1)*p(i)*t-(i-1)*p(i-1))/i;

a(i+1) =int(subs(y,findsym(sym(y)),t)*p(i+1),t,-1,1);

a(i+1)=(2*i+1)/2*a(i+1);

f = f + a(i+1)*p(i+1);

simplify(f);%化简。

f=collect(f);%插值多项式展开。

f = vpa(f,6);

endend

最小二乘法。

function a=myleast_squ(x,y,n,w)

多项式最小二乘法拟合系数。

x y 为输入数据量 n 为拟合次数,w为权向量。

syms t;

m=length(x); 测量数据长度。

if nargin==4

if length(x)==length(w)%输入序列检验。

elsedisp('x和w维数不等');

return;

endelse

w=ones(1,m);

endx1=zeros(1,2*n);

for i=1:2*n+1

x1(i)=sum(x.^(i-1).*w);

endx=zeros(n+1,n+1);

for i=1:n+1

x(i,:)x1(i:i+n);

end %生成 x 矩阵。

y=zeros(n,1); 生成 y 向量。

for i=1:n+1

y(i,1)=sum(x.^(i-1).*y.*w);

enda=x\y; %求得拟合系数向量 a

a=flipud(a);

a=poly2sym(a,t);

a=vpa(a,6);

用正交多项式最小二乘法拟合系数。

function f=myleast_squ2(x,y,n,w)

用正交多项式最小二乘法拟合系数。

x y 为输入数据量 n 为拟合次数,w为权向量。

m=length(x); 测量数据长度。

if nargin==4

if length(x)==length(w)%输入序列检验。

elsedisp('x和w维数不等');

return;

数值分析上机作业 2

一 数值求解如下正方形域上的poisson方程边值问题。二 二 用椭圆型第一边值问题的五点差分格式得到线性方程组为。写成矩阵形式au f。其中。三 编写求解线性方程组au f的算法程序,用下列方法编程计算,并比较计算速度。1 用jacobi迭代法求解线性方程组au f。2 用块jacobi迭代法求解...

数值分析第7章作业

第7章非线性方程与方程组的数值解法。1 用二分法求方程的正根,要求误差小于0.05。解 设,故 1,2 为为有根区间。又,故当时,单减,当时,单增。而,由单调性知的惟一正根。根据二分法的误差估计式知。要求误差小于0.05,只需,解得,故至少应二分6次。具体计算结果如下表。2 为求方程在在附近的一个根...

数值分析作业答案 第7章part2

7.2.为求方程在附近的一个根,设将方程改写成下列等价形式,并建立相应的迭代公式。1 迭代公式 2 迭代公式 3 迭代公式。试分析每种迭代公式的收敛性,并选取一种公式求出具有四位有效数字的近似根。解考虑的领域。1 当时,故迭代在上整体收敛。2 当时,故迭代在上整体收敛。3 当时,故迭代。发散。7.4...