【问题标题】:Least squares interpolation in OctaveOctave中的最小二乘插值
【发布时间】:2013-03-04 20:40:41
【问题描述】:

我做了一个物理实验,得到如下数据:

R=[2.91 2.19 1.76 1.43 1.20 1.01 0.88 0.77 0.67 0.6 0.52 0.46 0.41 0.37];
t=[35:5:100];
T=t+273.15;

现在我需要对公式 ln R = f(1 / T) 进行最小二乘插值。我尝试了几种来自网络的方法,但都无法奏效。

【问题讨论】:

标签: math octave interpolation least-squares


【解决方案1】:

显然,您使用的是线性租赁平方插值。问题存在于计算系数的代码中。

这个操作

A \ y

A 的列大小与y 的行大小匹配时有效。

但在您的代码中,ones(n,1) 与声明中的x 水平连接

A = [x ones(n,1)]

不允许,因为x 的大小是 1*14,ones(n,1) 的大小是 14*1。显然,您遇到了尺寸不匹配错误。

这是一个工作代码:

R=[2.91 2.19 1.76 1.43 1.20 1.01 0.88 0.77 0.67 0.6 0.52 0.46 0.41 0.37];
t=[35:5:100];
T=t+273.15;


function coeff = least_square (x,y)
    n = length(x);
    A = [ones(n,1) x];
    coeff = A \ y;
    plot(x,y,'x');
    hold on
    interv = [min(x) max(x)];
    plot(interv,coeff(1)*interv+coeff(2));
end


least_square(R', T');

【讨论】:

    猜你喜欢
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 2021-07-26
    • 2021-08-14
    • 1970-01-01
    • 2017-09-22
    相关资源
    最近更新 更多