第一次作业
题目
[作业1]. 试使用subplot 命令,生成[-1,1]上的第二个至第五个Chebyshev 多项
式,并按照2*2 方式多窗口显示.
[选做题1-2] 应用秦九韶算法计算多项式
1
0 1 1 0 ( ) n n ( 0)
n n p x a x a x + a x a a
- = + +L+ + ¹
在x = x*处的函数值和导数值。试编程实现,并举例运行给出计算结果。
程序 以及结果
第一题
x=-1:0.05:1;
t0=1.0+0*x;
t1=x;
t2=2*x.*t1-t0;
t3=2*x.*t2-t1;
t3=2*x.*t3-t2;
t3=2*x.*t2-t1;
t4=2*x.*t3-t2;
subplot(2,2,1)
plot(x,t1,'-k')
xlabel('x');ylabel('y')
title('t1')
subplot(2,2,2)
plot(x,t2,'-k')
xlabel('x');ylabel('y')
title('t2')
subplot(2,2,3)
plot(x,t3,'-k')
xlabel('x');ylabel('y')
title('t3')
subplot(2,2,4)
plot(x,t4,'-k')
xlabel('x');ylabel('y')
title('t4')
第二题
秦九韶函数、
做题1-2]
应用秦九韶算法计算多项式
在x = x*处的函数值和导数值。试编程实现,并举例运行给出计算结果。
function jieguo=qinjiushao(A,x)
n=length(A);
B=zeros(n);
B(1)=A(1);
for k=1:n-1
B(k+1)=B(k)*x+A(k+1)
end
例子
A=[2,0,-3,3,-4];
x=-2;
qinjiushao(A,x)
jieguo =
10
ans =
10
单个例子A=[2,0,-3,3,-4]
B=zeros(1,5)
B(1)=A(1)
L=length(A)
x=-2
for k=2:L
B(k)=B(k-1)*x+A(k)
end
C=zeros(1,3)
C(1)=B(1)
for k=2:L-1
C(k)=C(k-1)*x+B(k)
end
A =
2 0 -3 3 -4
B =
0 0 0 0 0
B =
2 0 0 0 0
L =
5
x =
-2
B =
2 -4 0 0 0
B =
2 -4 5 0 0
B =
2 -4 5 -7 0
B =
2 -4 5 -7 10
C =
0 0 0
C =
2 0 0
C =
2 -8 0
C =
2 -8 21
C =
2 -8 21 -49
第二次作业
作业2
题目 自己编程用基于Newton形式插值多项式求近似解
程序以及结果
牛顿函数
function W=newton(X,Y)
m=length(X);
M=zeros(m-1,1);
for i=1:m-1
M(i)=(Y(i)-Y(i+1))/(X(i)-X(i+1));
end
W=zeros(m,1);
W(1)=Y(1);
W(2)=M(1);
l=3;
for k=2:m-1
N=zeros(m-k,1);
for j=1:m-k
N(j)=(M(j)-M(j+1))/(X(j)-X(j+k));
end
W(l)=N(1);
l=l+1;
M=N;
end
例子
X=[0.4,0.5,0.6,0.7,0.8,0.9]
Y=[-0.916291, -0.693147, -0.510826, -0.357765, -0.223144, -0.105361]
X =
0.4000 0.5000 0.6000 0.7000 0.8000 0.9000
Y =
-0.9163 -0.6931 -0.5108 -0.3578 -0.2231 -0.1054
newton(X,Y)
ans =
-0.9163
2.2314
-2.0412
1.9272
-0.3096
-7.0625
x=log(0.78)
y=ans(1)+ans(2)*(x-0.4)+ans(3)*(x-0.4)*(x-0.5)+ans(4)*(x-0.4)*(x-0.5)*(x-0.6)+ans(5)*(x-0.4)*(x-0.5)*(x-0.6)*(x-0.7)+ans(6)*(x-0.4)*(x-0.5)*(x-0.6)*(x-0.7)*(x-0.8)
x =
-0.2485
这是ln0.78的近似值
y =
-0.6158
作业2’
给定函数f x= 1+1/(1+ x2), x Î [ 5,5] ,节点 x = ?5 + k (k = 0,1,?,10) ,请同时显示三次样条插值与Lagrange插值,要求分别给出图例。
拉格朗日函数/
function v = polyinterp(x,y,u)
%POLYINTERP Polynomial interpolation.
% v = POLYINTERP(x,y,u) computes v(j) = P(u(j)) where P is the
% polynomial of degree d = length(x)-1 with P(x(i)) = y(i).
% Use Lagrangian representation.
% Evaluate at all elements of u simultaneously.
n = length(x);
v = zeros(size(u));
for k = 1:n
w = ones(size(u));
for j = [1:k-1 k+1:n]
w = (u-x(j))./(x(k)-x(j)).*w;
end
v = v + w*y(k);
end
例子
x=zeros(1,11);
x=zeros(1,11);
for k=0:10
x(k+1)=-5+k;
y(k+1)=1/(1+x(k+1)^2);
end
u=-5:0.1:5;
polyinterp(x,y,u)
hold on
plot(u,ans,'-r')
axis([-5,5,-0.5,2])
w=spline(x,y,u)
plot(u,w,'-b')
legend('拉格朗日','三次样条')
hold off
拉格朗日插值结果
ans =
Columns 1 through 10
0.0385 1.2303 1.8044 1.9590 1.8458 1.5787 1.2402 0.8881 0.5604 0.2802
Columns 11 through 20
0.0588 -0.1007 -0.2013 -0.2496 -0.2546 -0.2262 -0.1743 -0.1083 -0.0363 0.0349
Columns 21 through 30
0.1000 0.1554 0.1987 0.2292 0.2472 0.2538 0.2510 0.2414 0.2278 0.2131
Columns 31 through 40
0.2000 0.1912 0.1888 0.1946 0.2099 0.2353 0.2710 0.3165 0.3708 0.4326
Columns 41 through 50
0.5000 0.5710 0.6432 0.7142 0.7817 0.8434 0.8971 0.9409 0.9733 0.9933
Columns 51 through 60
1.0000 0.9933 0.9733 0.9409 0.8971 0.8434 0.7817 0.7142 0.6432 0.5710
Columns 61 through 70
0.5000 0.4326 0.3708 0.3165 0.2710 0.2353 0.2099 0.1946 0.1888 0.1912
Columns 71 through 80
0.2000 0.2131 0.2278 0.2414 0.2510 0.2538 0.2472 0.2292 0.1987 0.1554
Columns 81 through 90
0.1000 0.0349 -0.0363 -0.1083 -0.1743 -0.2262 -0.2546 -0.2496 -0.2013 -0.1007
Columns 91 through 100
0.0588 0.2802 0.5604 0.8881 1.2402 1.5787 1.8458 1.9590 1.8044 1.2303
Column 101
0.0385
三次样条插值结果
w =
Columns 1 through 10
0.0385 0.0406 0.0427 0.0446 0.0465 0.0484 0.0503 0.0522 0.0543 0.0565
Columns 11 through 20
0.0588 0.0614 0.0642 0.0673 0.0707 0.0745 0.0786 0.0832 0.0883 0.0939
Columns 21 through 30
0.1000 0.1067 0.1140 0.1220 0.1307 0.1401 0.1504 0.1614 0.1734 0.1862
Columns 31 through 40
0.2000 0.2149 0.2314 0.2503 0.2720 0.2973 0.3269 0.3613 0.4011 0.4472
Columns 41 through 50
0.5000 0.5597 0.6242 0.6909 0.7573 0.8205 0.8782 0.9275 0.9661 0.9911
Columns 51 through 60
1.0000 0.9911 0.9661 0.9275 0.8782 0.8205 0.7573 0.6909 0.6242 0.5597
Columns 61 through 70
0.5000 0.4472 0.4011 0.3613 0.3269 0.2973 0.2720 0.2503 0.2314 0.2149
Columns 71 through 80
0.2000 0.1862 0.1734 0.1614 0.1504 0.1401 0.1307 0.1220 0.1140 0.1067
Columns 81 through 90
0.1000 0.0939 0.0883 0.0832 0.0786 0.0745 0.0707 0.0673 0.0642 0.0614
Columns 91 through 100
0.0588 0.0565 0.0543 0.0522 0.0503 0.0484 0.0465 0.0446 0.0427 0.0406
Column 101
0.0385
第三次作业
题目
程序以及结果
作业 3第二题
用Romberg积分法求积分10sin ydyy∫ ,要求T T (0) 61(0) 10??? <k k .结果要求显出中间步骤的结果。
clc;
clear;
a=0;b=1;
fa=a;
fb=1/b;
Err=10e-5;
N=6;
T=zeros(N+1);
T(1,1)=(b-a)*(fb+fa)/2;
j=1;
for i=j+1:N
n=2^(i-2);
h=(b-a)*2^(2-i);
for k=1:n
x(k)=a+(2*k-1)*h/2;
end
y=sin(x)/x;
H=h*sum(y);
T(i,j)=(T(i-1,j)+H)/2;
end
for n=j:N
for m=n:N-1
T(m+1,n+1)=(4^n*T(m+1,n)-T(m,n))/(4^n-1)
end
if abs(T(n+1,n+1)-T(n,n))<Err
break;
end
end
format long
n
disp(T(n,n))
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0 0 0 0
0.410326958533918 0 0 0 0
0.261684547893063 0 0 0 0
0.159083327234799 0 0 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0 0 0
0.410326958533918 0 0 0 0
0.261684547893063 0 0 0 0
0.159083327234799 0 0 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0 0 0
0.410326958533918 0.349121013633706 0 0 0
0.261684547893063 0 0 0 0
0.159083327234799 0 0 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0 0 0
0.410326958533918 0.349121013633706 0 0 0
0.261684547893063 0.212137077679444 0 0 0
0.159083327234799 0 0 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0 0 0
0.410326958533918 0.349121013633706 0 0 0
0.261684547893063 0.212137077679444 0 0 0
0.159083327234799 0.124882920348711 0 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0.531643466553942 0 0
0.410326958533918 0.349121013633706 0 0 0
0.261684547893063 0.212137077679444 0 0 0
0.159083327234799 0.124882920348711 0 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0.531643466553942 0 0
0.410326958533918 0.349121013633706 0.335810111557420 0 0
0.261684547893063 0.212137077679444 0 0 0
0.159083327234799 0.124882920348711 0 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0.531643466553942 0 0
0.410326958533918 0.349121013633706 0.335810111557420 0 0
0.261684547893063 0.212137077679444 0.203004815282493 0 0
0.159083327234799 0.124882920348711 0 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0.531643466553942 0 0
0.410326958533918 0.349121013633706 0.335810111557420 0 0
0.261684547893063 0.212137077679444 0.203004815282493 0 0
0.159083327234799 0.124882920348711 0.119065976526662 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0.531643466553942 0 0
0.410326958533918 0.349121013633706 0.335810111557420 0.332701645605094 0
0.261684547893063 0.212137077679444 0.203004815282493 0 0
0.159083327234799 0.124882920348711 0.119065976526662 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0.531643466553942 0 0
0.410326958533918 0.349121013633706 0.335810111557420 0.332701645605094 0
0.261684547893063 0.212137077679444 0.203004815282493 0.200896794706701 0
0.159083327234799 0.124882920348711 0.119065976526662 0 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0.531643466553942 0 0
0.410326958533918 0.349121013633706 0.335810111557420 0.332701645605094 0
0.261684547893063 0.212137077679444 0.203004815282493 0.200896794706701 0
0.159083327234799 0.124882920348711 0.119065976526662 0.117733614006728 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0.531643466553942 0 0
0.410326958533918 0.349121013633706 0.335810111557420 0.332701645605094 0
0.261684547893063 0.212137077679444 0.203004815282493 0.200896794706701 0.200379912938472
0.159083327234799 0.124882920348711 0.119065976526662 0.117733614006728 0
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0.531643466553942 0 0
0.410326958533918 0.349121013633706 0.335810111557420 0.332701645605094 0
0.261684547893063 0.212137077679444 0.203004815282493 0.200896794706701 0.200379912938472
0.159083327234799 0.124882920348711 0.119065976526662 0.117733614006728 0.117407483886336
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
T =
Columns 1 through 5
0.500000000000000 0 0 0 0
0.729425538604203 0.805900718138937 0 0 0
0.593944793234554 0.548784544778004 0.531643466553942 0 0
0.410326958533918 0.349121013633706 0.335810111557420 0.332701645605094 0
0.261684547893063 0.212137077679444 0.203004815282493 0.200896794706701 0.200379912938472
0.159083327234799 0.124882920348711 0.119065976526662 0.117733614006728 0.117407483886336
0 0 0 0 0
Columns 6 through 7
0 0
0 0
0 0
0 0
0 0
0.117326376917566 0
0 0
n =
6
0.117326376917566
第四次作业
题目
程序以及结果
作业 4
第一题
作业4 求解下列三对角线性方程组: ????????????????????
[说明]本题可以选择多种求解方式:
先判断A是否可以进行LU分解,如果可以,则进行Doolittle分解,并通过解两个三角形方程组(用左除的方法)得到原问题的解;否则显示不能分解并直接用左除求解;
先判断A是否是对称正定矩阵,如果是,则进行进行Cholesky分解,并进一步求解;否则显示不能分解并直接用左除求解;
应用追赶法求解,注意考虑存贮空间的合理设置。
function [n]=panduan(A)
l=det(A);
p=rank(A);
if l==0
n=-1;
else
for j=p:1
A(j,:)=[];
A(:,j)=[];
if det(A)==0
n=-1;
break
end
end
n=0;
end
clc
clear
A=[4 -1 0 0 0; -1 4 -1 0 0; 0 -1 4 -1 0; 0 0 -1 4 -1 ;0 0 0 -1 4]
B=[100;200;200;200;100]
panduan(A)
A =
4 -1 0 0 0
-1 4 -1 0 0
0 -1 4 -1 0
0 0 -1 4 -1
0 0 0 -1 4
B =
100
200
200
200
100
ans =
0
% 由函数panduan 判断出A矩阵顺序主子式大于零,所以A可以进行LU分解
[L,U]=lu(A)
%解LY=B
Y=L\B
%解UX=Y
X=U\Y
L =
1.0000 0 0 0 0
-0.2500 1.0000 0 0 0
0 -0.2667 1.0000 0 0
0 0 -0.2679 1.0000 0
0 0 0 -0.2679 1.0000
U =
4.0000 -1.0000 0 0 0
0 3.7500 -1.0000 0 0
0 0 3.7333 -1.0000 0
0 0 0 3.7321 -1.0000
0 0 0 0 3.7321
Y =
100.0000
225.0000
260.0000
269.6429
172.2488
X =
46.1538
84.6154
92.3077
84.6154
46.1538
第二题
% 由第一题得出A为正定矩阵
n=length(A)
m=0
for i=1:n
for j=1:n
if A(i,j)~=A(j,i)
m=-1
else
m=0
end
end
end
n =
5
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
m =
0
% 所以A矩阵为对称阵
%进行进行Cholesky分解
% 所以A矩阵为对称阵
A=[4 -1 0 0 0;-1 4 -1 0 0;0 -1 4 -1 0;0 0 -1 4 -1;0 0 0 -1 4];
U=chol(A)
U =
2.0000 -0.5000 0 0 0
0 1.9365 -0.5164 0 0
0 0 1.9322 -0.5175 0
0 0 0 1.9319 -0.5176
0 0 0 0 1.9319
B=[100;200;200;200;100];
Y=U'\B
X=U\Y
Y =
50.0000
116.1895
134.5628
139.5757
89.1625
X =
46.1538
84.6154
92.3077
84.6154
46.1538
第三题
function[x]=zhuigan(A,B)
n=length(A)
A(1,2)=A(1,2)/A(1,1)
for i=2:n-1
A(i,i+1)=A(i,i+1)/(A(i,i)-A(i,i-1)*A(i-1,i))
end
y=zeros(n,1);
y(1)=B(1)/A(1,1)
for j=2:n
y(j)=(B(j)-A(j,j-1)*y(j-1))/(A(j,j)-A(j,j-1)*A(j-1,j))
end
x=ones(n,1);
x(n)=y(n)
for k=n-1:-1:1
x(k)=y(k)-A(k,k+1)*x(k+1)
end
clear
A=[4 -1 0 0 0; -1 4 -1 0 0; 0 -1 4 -1 0; 0 0 -1 4 -1 ;0 0 0 -1 4]
B=[100;200;200;200;100]
zhuigan(A,B)
A =
4 -1 0 0 0
-1 4 -1 0 0
0 -1 4 -1 0
0 0 -1 4 -1
0 0 0 -1 4
B =
100
200
200
200
100
n =
5
A =
4.0000 -0.2500 0 0 0
-1.0000 4.0000 -1.0000 0 0
0 -1.0000 4.0000 -1.0000 0
0 0 -1.0000 4.0000 -1.0000
0 0 0 -1.0000 4.0000
A =
4.0000 -0.2500 0 0 0
-1.0000 4.0000 -0.2667 0 0
0 -1.0000 4.0000 -1.0000 0
0 0 -1.0000 4.0000 -1.0000
0 0 0 -1.0000 4.0000
A =
4.0000 -0.2500 0 0 0
-1.0000 4.0000 -0.2667 0 0
0 -1.0000 4.0000 -0.2679 0
0 0 -1.0000 4.0000 -1.0000
0 0 0 -1.0000 4.0000
A =
4.0000 -0.2500 0 0 0
-1.0000 4.0000 -0.2667 0 0
0 -1.0000 4.0000 -0.2679 0
0 0 -1.0000 4.0000 -0.2679
0 0 0 -1.0000 4.0000
y =
25
0
0
0
0
y =
25
60
0
0
0
y =
25.0000
60.0000
69.6429
0
0
y =
25.0000
60.0000
69.6429
72.2488
0
y =
25.0000
60.0000
69.6429
72.2488
46.1538
x =
1.0000
1.0000
1.0000
1.0000
46.1538
x =
1.0000
1.0000
1.0000
84.6154
46.1538
x =
1.0000
1.0000
92.3077
84.6154
46.1538
x =
1.0000
84.6154
92.3077
84.6154
46.1538
x =
46.1538
84.6154
92.3077
84.6154
46.1538
ans =
46.1538
84.6154
92.3077
84.6154
46.1538
% 由于作业是分两次做的,所以第三题是从另一个notebook复制来的
第五次作业
题目
作业5 分别用Jacobi迭代法和Gauss-Seidel迭代法解以下方程组:(不必单独上交,包含在实验报告中即可) ??????????????????
[说明] 可选择
两种方法均应用矩阵形式迭代求解;
两种方法均应用分量形式迭代求解。
程序以及结果
% 矩阵A由Variable Editor 生成的
A
A =
4 -1 0 -1 0 0
-1 4 -1 0 -1 0
0 -1 4 0 0 -1
-1 0 0 4 -1 0
0 -1 0 -1 4 -1
0 0 -1 0 -1 4
b=[0;5;0;6;-2;6]
b =
0
5
0
6
-2
6
jacobi(A,b,[0;0;0;0;0;0])
ans =
1.0000
2.0000
1.0000
2.0000
1.0000
2.0000
高斯方法
function y=g(A,b,x0)
%jacobi iteration
D=diag(diag(A));
U=triu(A,1);
L=tril(A,-1);
BG=-(D+L)\U;
fG=(D+L)\b;
y=BG*x0+fG;
n=1;
while norm(y-x0)>=1.0e-6
x0=y;
y=BG*x0+fG;
n=n+1;
end
A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 0 0 -1 ; -1 0 0 4 -1 0; 0 -1 0 -1 4 -1;0 0 -1 0 -1 4];
b=[0;5;0;6;-2;6];
g(A,b,[0;0;0;0;0;0])
ans =
1.0000
2.0000
1.0000
2.0000
1.0000
2.0000