矩阵与数值分析中差值与逼近的Matlab程序

  • A4_235126
    了解作者
  • 2.5KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-14 02:05
    上传日期
矩阵与数值分析中差值与逼近的Matlab程序
插值与逼近.rar
  • 插值与逼近
  • Lagran_.m
    416B
  • Untitled3.m
    511B
  • Untitled2.m
    976B
  • Untitled1.m
    1.5KB
内容介绍
function [ output_args ] = Untitled1( input_args )%三次样条 %UNTITLED1 Summary of this function goes here % Detailed explanation goes here clc; clear; X=[0 1 2 3 4 5 6 7 8 9 10]; %对应于x0-xn(实际上是x(1)-x(n+1)) Y=[0 0.79 1.53 2.19 2.71 3.03 3.27 2.89 3.06 3.19 3.29]; %对应于y0-yn(实际上是y(1)-y(n+1)) s1=0.8; sn=0.2; m=length(X);%等于n+1 l=m-2;%取出0-n里面的1--(n-1)项,λ和μ的值,总长度m-2 A=zeros(l,l);%方阵 H=zeros(1,l+1);%存放hk,用到的有n个数 lambda=zeros(1,l);%lambda=λ mu=zeros(1,l);%mu=μ A(1,1)=2;%A的左上角元素值为2 %求出H(k) for k=1:l+1 hk=X(k+1)-X(k); H(k)=hk; end %构造λ和μ lambda(1)=H(2)/(H(2)+H(1)); for k=1:l-1 lambdak=H(k+2)/(H(k+1)+H(k+2)); lambda(k+1)=lambdak; muk=H(k)/(H(k)+H(k+1)); mu(k)=muk; end mu(l)=H(l)/(H(l)+H(l+1)); %λ和μ构造完毕 %构造g for i=1:l g(i)=3*(mu(i)*((Y(i+2)-Y(i+1))/H(i+1))+lambda(i)*((Y(i+1)-Y(i))/H(i))); end g(1)=g(1)-lambda(1)*s1; g(l)=g(l)-lambda(l)*sn; %g构造完毕 for i=1:l A(i,i)=2; if i+1<=l A(i,i+1)=lambda(i); A(i+1,i)=mu(i); end end dY=A\g'; dY=[s1 dY' sn]';%对应于m的值 for k=2:m x=X(k-1); sk1=0; for i=1:round((X(k)-X(k-1))/0.01+1) sk1(i)=Y(k-1)*((H(k-1)-2*X(k-1)+2*x)*(x-X(k))^2)/(H(k-1)^3)+Y(k)*((H(k-1)+2*X(k)-2*x)*(x-X(k-1))^2)/(H(k-1)^3)+dY(k-1)*((x-X(k-1))*(x-X(k))^2)/(H(k-1)^2)+dY(k)*((x-X(k))*(x-X(k-1))^2)/(H(k-1)^2); x=x+0.01; end plot(X(k-1):0.01:X(k),sk1);%ski是每一个分段区间的函数值 hold on; end title('三次样条拟合的函数图形');grid on; xlabel('x'); ylabel('f(x)'); hold off;
评论
    相关推荐