西电-应用数值分析第三章(3.1,3.2,3.3)实验题答案分享
题3_1
syms x;
Tnx = [1,x,x^2,x^3];
A = zeros(length(Tnx));
B = zeros(1,length(Tnx));
B = B';
%生成矩阵 A
for i = 1:length(Tnx)
for j = 1:length(Tnx)
aa = int(Tnx(i)*Tnx(j),x,-1,1);
A(i,j) = aa;
end
end
%生成向量 b
y=cos(x);
for i = 1:length(Tnx)
bb=int(Tnx(i)*y,-1,1);
B(i) = bb;
end
alp = inv(A)*B;
S=0;
%合成逼近多项式
for k = 1:length(Tnx)
S = S+alp(k)*Tnx(k);
end
S=vpa(S,6) %结果以小数点后 6 位输出
输出如下:
S =
0.996559 - 0.465263*x^2
题3_2
syms x;syms t;syms a;
data=[0.25,0.5,1,1.5,2,3,4,6,8;
19.21,18.15,15.36,14.1,12.89,9.32,7.45,5.24,3.01];
Tnt = [1,t];
Tnx = [ones(1,length(data));data(1,:)];
A = zeros(2);
B = zeros(1,2);
B = B';
%生成矩阵 A
for i = 1:2
for j = 1:2
aa = sum(Tnx(i,:)*Tnx(j,:)');
A(i,j) = aa;
end
end
%生成向量 b
yy=log(data(2,:));
for i = 1:2
bb = sum(yy*Tnx(i,:)');
B(i) = bb;
end
alp = inv(A)*B;
S=0;
%合成逼近多项式
for k = 1:2
S = S+alp(k)*Tnt(k);
end
disp('血浓度与时间近似表达式:');
exp(S)
t=0:0.01:8;
scatter(data(1,:),data(2,:),36,'k','filled');
hold on;
plot(t,eval(exp(S1)),'LineWidth',1)
输出如下:
血浓度与时间近似表达式:
ans =
exp(6742510587703509/2251799813685248 -
(2114153570709255*t)/9007199254740992)
题3_3
syms x;syms t;syms a;
data=[0,0.9,1.9,3.0,3.9,5.0;
0,10,30,50,80,110];
Tnt = [1,t,t^2];
Tnx =
[ones(1,length(data));data(1,:);data(1,:).*data(1,:)];
A = zeros(3);
B = zeros(1,3);
B = B';
%生成矩阵 A
for i = 1:3
for j = 1:3
aa = sum(Tnx(i,:)*Tnx(j,:)');
A(i,j) = aa;
end
end
%生成向量 b
yy=data(2,:);
for i = 1:3
bb = sum(yy*Tnx(i,:)');
B(i) = bb;
end
alp = inv(A)*B;
S=0;
%合成逼近多项式
for k = 1:3
S = S+alp(k)*Tnt(k);
end
disp('运动方程如下:');
vpa(S,6)
t=0:0.01:5;
scatter(data(1,:),data(2,:),36,'k','filled');
hold on;
plot(t,eval(S),'LineWidth',1)
输出如下:
运动方程如下:
ans =
2.24881*t^2 + 11.0814*t - 0.583365
完成!