工院雷祺。
学号: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...