线性规划预测(多元线性、非线性、最小二乘法)

功能:7输入1输出 算法:线性规划预测(MATLAB自定义函数)
电话:13483417110
输入:入炉温度、第一加热段温度、第二加热段温度、均热段温度、第一加热段停留时间、第二加热段停留时间、均热段停留时间
输出:出炉温度

在这里插入图片描述

数据摘自《唐钢 0 1700 加热炉模型开发与优化》

close all;clear;clc;
dALL = xlsread('tg1700.xlsx','sheet1','B4:I153')
[M,N] = size(dALL);% M = 150,N = 8
X = dALL(1:100,1:7);%输入数据 7维
Y = dALL(1:100,8);%输出数据 1维
% ----------------------------- %
switch=1;
% ----------------------------- %
[beta, r,Ypred] = xxgh_function(X, Y, switch);
if switch==1
        Ypred = beta(1)+beta(2)*X(:, 1)+beta(3)*X(:, 2)+beta(4)*X(:, 3)+beta(5)*X(:, 4)+beta(6)*X(:, 5)+beta(7)*X(:, 6)+beta(8)*X(:, 7); 
end

sprintf('y = %f + %fx1 + %fx2 + %fx3 + %fx4 + %fx5 + %fx6 + %fx7\n'...
    ,beta(1),beta(2),beta(3),beta(4),beta(5),beta(6),beta(7),beta(8))
figure(2)
plot(Ypred-Y)
title('误差')
% [b,bint,r,rint,stats]=regress(y,X);

% y——因变量数据n×1向量
% X——自变量数据n×m向量

function [beta, r,Ypred]=xxgh_function(X, Y, switch)
% switch = 1-regress
% switch = 2-nlinfit 
% switch = 3-lsqcurvefit

if switch==1
    X=[ones(size(Y)), X];
    [beta, bint, r, rint, states]=regress(Y, X);
    % 多元线性回归
    % 式中:b——参数估计值
	% bint——b的置信区间
	% r——残差向量y-xb
	% rint——r的置信区间
	% stats——检验统计量,第一值是回归方程的置信度(相关系数),第二值是F统计量值,第二值是与F统计量相应的p值;
    % y=beta(1)+beta(2)*x1+beta(3)*x2+beta(4)*x3+...
    % Ypred = beta(1)+beta(2)*X(:, 1)+beta(3)*X(:, 2)+beta(4)*X(:, 3)+beta(5)*X(:, 4)+beta(6)*X(:, 5)+beta(7)*X(:, 6)+beta(8)*X(:, 7);
    Ypred = zeros(size(Y));
    % beta—系数估计
    % bint—系数估计的上下置信界
    % r—残差
    % rint—诊断异常值的区间
    % states—模型统计信息
    % figure(1)
    % rcoplot(r, rint)
elseif switch==2
    beta0=ones(8, 1);
    % 初始值的选取可能会导致结果具有较大的误差。
    [beta, r, J]=nlinfit(X, Y, @math_function, beta0)
    % 非线性回归
    % beta—系数估计
    % r—残差
    % J—雅可比矩阵
    [Ypred,delta]=nlpredci(@math_function, X, beta, r, 'Jacobian', J);
    % 非线性回归预测置信区间
    % Ypred—预测响应
    % delta—置信区间半角
    % figure(1)
    % plot(X(:, 1), Y, 'k.', X(:, 1), Ypred, 'r');
elseif switch==3
    beta0=ones(8, 1);
    % 初始值的选取可能会导致结果具有较大的误差。
    [beta,resnorm,r, ~, ~, ~, J]=lsqcurvefit(@math_function,beta0,X,Y)
    % 在最小二乘意义上解决非线性曲线拟合(数据拟合)问题
    % beta—系数估计
    % resnorm—残差的平方范数 sum((fun(x,xdata)-ydata).^2)
    % r—残差 r=fun(x,xdata)-ydata
    % J—雅可比矩阵
    [Ypred,delta]=nlpredci(@math_function, X, beta, r, 'Jacobian', J);
    % figure(1)
    % plot(X(:, 1), Y, 'k.', X(:, 1), Ypred, 'r');
end
beta
end
function y=math_function(beta,x) 
	y=beta(1)+beta(2)*x(:, 1)+beta(3)*x(:, 2)+beta(4)*x(:, 3)+beta(5)*x(:, 4)+beta(6)*x(:, 5)+beta(7)*x(:, 6)+beta(8)*x(:, 7);
end

switch=3 结果如下
在这里插入图片描述

y = -123.209276 + 0.817265x1 + 0.049895x2 + 0.081977x3 + 0.365690x4 + 1.069920x5 + -0.205484x6 + -0.759725x7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨铮...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值