数值分析课程的大作业,教材《数值分析》李乃成.梅立泉
clear
x=input('请按照格式[x1,x2,x3...]格式输入y=f(x)函数已知点的横坐标xi='); %三次样条差值函数
y=input('请按照格式[y1,y2,y3...]格式输入y=f(x)函数已知点对应的纵坐标yi=');
n=size(x,2); %特别注意,matlab中的矩阵编号是从1开始的,而教材上的矩阵编号是从0开始的
for k=2:n %计算h(i)
h(k)=x(k)-x(k-1);
end
for k=2:(n-1) %计算μ和λ
mu(k)=h(k)/(h(k)+h(k+1));
lumbda(k)=1-mu(k);
end
for k=2:(n-1)
d(k)=6*((y(k+1)-y(k))/h(k+1)-(y(k)-y(k-1))/h(k))/(h(k)+h(k+1)); %计算di
end
fprintf('边界条件类型选择:\n1.已知f(a)和f(b)的二阶导数\n2.已知f(a)和f(b)的一阶导数\n3.y=f(x)是以T=b-a为周期的周期函数\n');
m=input('请输入对应序号:');
if m==1
M(1)=input('请输入f(a)的二阶导数值:');
M(n)=input('请输入f(b)的二阶导数值:');
A=zeros(n-2,n-2);
for k=1:(n-3)