检查下列代码并写出正确代码function S = csfitX Y dx0 dxnN = lengthX-1;H = diffX;D = diffYH;A = H1N-2;B = 2H1N-1+H2N;C = H2N-1;U = 6diffD;B1 = B1 - H12;U1 = U1 - 3D1;BN-1 = BN-1 - HN2;UN-1 = UN-1 - 3-DN;for k = 2N-1
function S = csfit(X, Y, dx0, dxn) N = length(X)-1; H = diff(X); D = diff(Y)./H; A = H(1:N-2); B = 2*(H(1:N-1)+H(2:N)); C = H(2:N-1); U = 6diff(D); B(1) = B(1) - H(1)/2; U(1) = U(1) - 3D(1); B(N-1) = B(N-1) - H(N)/2; U(N-1) = U(N-1) - 3*(-D(N)); for k = 2:N-1 temp = A(k-1)/B(k-1); B(k) = B(k) - tempC(k-1); U(k) = U(k) - tempU(k-1); end M(N) = U(N-1)/B(N-1); for k = N-2:-1:1 M(k+1) = (U(k) - C(k)M(k+2))/B(k); end M(1) = 3(D(1)-dx0)/H(1) - M(2)/2; M(N+1) = 3*(dxn-D(N))/H(N) - M(N)/2; S = zeros(N, 4); for k = 1:N S(k, 1) = (M(k+1)-M(k))/(6H(k)); S(k, 2) = M(k)/2; S(k, 3) = D(k) - H(k)(2*M(k)+M(k+1))/6; S(k, 4) = Y(k); end end
当n=10时,输入下列命令 clear,clc X=-1:0.2:1; Y=1./(25*X.^2+1); dx0= 0.0739644970414201;dxn=-0.0739644970414201; S=csfit(X,Y,dx0,dxn); x1=-1:0.01:-0.5;y1=polyval(S(1,:),x1-X(1)); x2=-0.5:0.01:0;y2=polyval(S(2,:),x2-X(2)); x3=0:0.01:0.5; y3=polyval(S(3,:),x3-X(3)); x4=0.5:0.01:1;y4=polyval(S(4,:),x4-X(4)); plot(x1,y1,x2,y2,x3,y3,x4, y4, X,Y,'.')
原文地址: https://www.cveoy.top/t/topic/fd82 著作权归作者所有。请勿转载和采集!