matlab 三弯矩方程_计算方法上机作业——求三次样条插值函数的matlab程序

clc;clear;

type

=

input('\n

选择插值节点的类型:

\n

插值对象为连续函数请输入

1

\n

插值对象为列表函数请输入

2

\n');

while type ~=1 && type~=2

fprintf('\n

输入值有误,请重新输入

\n');

pause(1)

type = input('\n

选择插值节点的类型:

\n

插值对象为连续函数请输入

1

\n

插值对象为列表函数请输入

2

\n');

end

if type==1

s = input('\n

请输入连续函数的表达式:

\nf(x) = ','s');

a = input('\n

请输入插值区间下限

a

\n');

b = input('\n

请输入插值区间上限

b

\n');

n = input('\n

输入插值节点数

n:\n');

f = inline(s);

x = a:(b-a)/(n-1):b;

for o=1:n

oo = a+(o-1)*(b-a)/(n-1);

y(o) = f(oo);

end

end

if type==2

n = input('\n

输入插值节点数

n:\n');

x = input('\n

输入插值节点构成的向量

x_i:\n');

y = input('\n

输入插值节点对应的函数值构成的向量

y_i:\n');

end

h = zeros(n-1,1);

miu = zeros(n-2,1);

lambda = zeros(n-2,1);

S = zeros(n-1,4);

for i=1:n-1

h(i) = x(i+1)-x(i);

end

for j=1:n-2

miu(j) = h(j)/(h(j)+h(j+1));

lambda(j) = 1-miu(j);

d(j) = 6/(h(j)+h(j+1))*((y(j+2)-y(j+1))/h(j+1)-(y(j+1)-y(j))/h(j));

end

%%

边界条件的选择

boundary = input('\n

选择封闭方程组的边界条件

: \n

第一类边界条件输入

1

\n

第二类边界条件输入

2

\n

第三类边界条件输入

3

\n');

while boundary~=1 && boundary~=2 && boundary~=3

fprintf('\n

输入值有误,请重新输入

\n');

pause(1)

boundary

=

input('\n

选择封闭方程组的边界条件

:

\n

第一类边界条件输

1

\n

第二类边界条件输入

2

\n

第三类边界条件输入

3

\n');

end

%

第一类边界条件

AM=D

你可能感兴趣的:(matlab,三弯矩方程)