西电数值分析第二第三章数值实验题

第二章

第一题

clear all
%输入基本参数
x0=[0.4 0.5 0.6 0.7 0.8 ];%四次多项式就是5个参数
y0=[-0.916291 -0.693147 -0.510826 -0.356675 -0.223144 ];
x=0.65;%输入要计算的点位
n=length(x0);
%开始拉格朗
    z=x;%传递一下
    s=0;%初始化
    for j=1:n
        l=1;
        for k=1:n
            if j~=k
                l=l*(z-x0(k))/(x0(j)-x0(k));%累乘
            end
        end
        s=l*y0(j)+s;
    end
 %输出近似值
 L_4=s 
 %误差
 error=log(0.65)-L_4
%初始参数输入
x0=[0.4 0.5 0.6 0.7 0.8 ];%四次多项式就是5个参数
y0=[-0.916291 -0.693147 -0.510826 -0.356675 -0.223144 ];
x=0.65;%输入要计算的点位
    A=zeros(n,n);%差商表置零
    A(:,1)=y0';
    s=0;
    %开始牛顿
    for j=2:n
        for i=j:n
            A(i,j)=(A(i,j-1)-A(i-1,j-1))/(x0(i)-x0(i-j+1));
        end
    end
    C=A(n,n);
    for k=1:n
        p=1.0;
        for j=1:k-1
            p=p*(z-x0(j));
        end
        s=s+A(k,k)*p;        
    end    
%参数输出
    N_4=s
    A=[x0',A];%输出个差商表看看  
    error=log(0.65)-N_4

结果就不放了

第三题

%五次多项式插值    
n=5;%五次插值,几次就填几
syms x;
f=x^7-1.2*x^5+2.3*x^4+2.3*x^3-5.6*x+1.9;%原函数,可改
x1=sym(zeros(n+1));
W=sym(ones(n+1));
L=sym(0);%插值函数置零
for i=0:n
x1(i+1)=2*i/n;
end
for j=0:n%求插值基函数
for i=0:n
if i~=j
w=(x-x1(i+1))/(x1(j+1)-x1(i+1));
W(j+1)=W(j+1)*w;
end
end
L=L+W(j+1)*(x1(j+1)^5-x1(j+1)^4+x1(j+1)^3+x1(j+1)^2-x1(j+1)^1+x1(j+1)^0);%求插值函数,可改
end
%可视化
LL(n)=simplify(L);
x=0:0.1:2;
y1=subs(f,x);%写的有点多余,其实可以用一个plot就可以
y2=subs(L,x);
plot(x,y1,'b');hold on
plot(x,y2,'r');hold off
title(['原函数f(x)=x^7-1.2*x^5+2.3*x^4+2.3*x^3-5.6*x+1.9和插值函数']);

第三章

第一题

%求A*aifa=b
 syms x;
 m=-1;%积分下限
 n=1;%积分上限
 f=cos(x);%需要逼近的函数
 var=x;%积分变量
 %定义基空间
 room=[1,x,x^2,x^3];%三次最佳逼近
 G=magic(4);%定义一个4*4的矩阵用来存放A
 D=[1;2;3;4];%定义一个4*1的矩阵D用来存放b
 %然后分别求A和b
 for i=1:4
     for j=1:4
         G(i,j)=(int(room(i)*room(j),var,m,n));
     end
 end
 for i=1:4
     D(i,1)=int(f*room(i),var,m,n);
 end
%将G的逆与d相乘就得到了系数矩阵
aifa=inv(G)*D;
%列出多项式
s=aifa(1,1)+aifa(2,1)*x+aifa(3,1)*x.^2+aifa(4,1)*x.^3
%可视化
x=m:(n-m)/100:n;%横坐标
%计算每个点在三次最佳逼近多项式和原函数中的取值
s=aifa(1,1)+aifa(2,1)*x+aifa(3,1)*x.^2+aifa(4,1)*x.^3;
f=cos(x);
plot(x,s,'b',x,f,'r');
title('数值实验题 1');
xlabel('x'),ylabel('y');
legend('三次最佳平方逼近','原函数');

结果

第4题

clear all
%输入数据
t=[0 5 10 15 20 25 30 35 40 45 50 55];
y=[0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.62 4.64];
p=polyfit(t,y,3);%3次拟合
t1=0:0.1:55;%区间
y1=polyval(p,t1);%计算P在t1点处的值
plot(t1,y1,'r',t,y,'o');
xlabel('时间(h)');
ylabel('浓度(×10^-4)');
title('数值实验题 2');  
legend('拟合曲线','原数据点');
grid on

 

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值