返回目录

ThrMomem.m

text/plain
1.25 KB
2025-10-22 16:15:59

文件预览

clear; clc;

% 输入参数:
% vec_x:已知数据点的x坐标(行向量)
% vec_y:已知数据点的y坐标(行向量,与vec_x长度相同)
% y01:左端点(vec_x(1))的一阶导数
% yn1:右端点(vec_x(end))的一阶导数
vec_x = [1, 2, 3, 4];  % 示例x坐标
vec_y = [1, 4, 9, 16]; % 示例y坐标
y01 = 2;               % 左端点一阶导数
yn1 = 8;               % 右端点一阶导数


[m, n] = size(vec_x);
h = zeros(1, n - 1);
h(1) = vec_x(2) - vec_x(1);
miu = zeros(1, n);
lambt = zeros(1, n);
MatrMomem = zeros(n);
d = zeros(1, n);

for j = 2 : n - 1
    h(j) = vec_x(j + 1) - vec_x(j);
    miu(j) = h(j - 1) / (h(j - 1) + h(j));
    lambt(j) = 1 - miu(j);
    d(j) = 6 * ((vec_y(j + 1) - vec_y(j)) / h(j) - (vec_y(j) - vec_y(j - 1)) / h(j - 1)) / (h(j - 1) + h(j));
    MatrMomem(j, j - 1 : j + 1) = [miu(j), 2, lambt(j)];
end

d(1) = 6 * ((vec_y(2) - vec_y(1)) / h(1) - y01) / h(1);
d(n) = 6 * (yn1 - (vec_y(n) - vec_y(n - 1)) / h(n - 1)) / h(n - 1);

MatrMomem(1, 1 : 2) = [2, 1];
MatrMomem(n, n - 1 : n) = [1, 2];
M = MatrMomem \ d';

% 输出结果:
% MatrMomem:三弯矩法的系数矩阵
% d:三弯矩法方程组的右端项向量
% M:求解得到的弯矩向量
MatrMomem, d, M