使用 matlab 求解最小二乘问题

有约束线性最小二乘

其标准形式为:
min ⁡ x 1 2 ∥ C x − d ∥ 2 2 \mathop {\min }\limits_x \quad \frac{1}{2}\left\| Cx-d \right\|_2^2 xmin21Cxd22
约束条件为:
A ⋅ x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b \begin{aligned} A \cdot x & \le b \\ A_{eq} \cdot x & = b_{eq} \\ lb \le & x \le ub \end{aligned} AxAeqxlbb=beqxub
matlab 使用 lsqlin 求解该类型问题,调用格式如下
x = lsqlin(C, d, A, B, Aeq, Beq, lb, ub, x0)
[x, resnorm, residual] = lsqlin(C, d, A, B, Aeq, Beq, lb, ub, x0)
没有的约束设置为 [] 就行,x0 是初始解向量,比如说你知道解大概是多少,设了可以避免陷入局部最优,减少优化时间等,没有可以不加或者设置为 []。resnorm就是 ∥ C x − d ∥ 2 2 \left\| Cx-d \right\|_2^2 Cxd22,residual就是 C x − d Cx-d Cxd.
假设已知有一个函数为:
y = a 0 ∗ x + a 1 × x − a 2 × x 0.8 + a 3 + n o i s e y = a_0*x + a_1 \times \sqrt{x} - a_2 \times x^{0.8} + a_3 + noise y=a0x+a1×x a2×x0.8+a3+noise
其中 a 0 = 1 , a 1 = 2 , a 2 = − 3 , a 3 = 4 a_0 = 1, a_1 = 2, a_2 = -3, a_3 = 4 a0=1,a1=2,a2=3,a3=4,如何用有噪声的数据将参数求出来。
噪声数据如图
在这里插入图片描述
仿真如下:

% created by hyacinth on 2024/1/8
clc
clear
close all%%
x1 = 1:100;
x2 = x1.^0.5;
x3 = x1.^0.8;
x4 = ones(size(x1));y = x1 + 2*x2 - 3*x3 + 4*x4;
yn = y + 0.05*randn(size(x1));C = [x1',x2',x3',x4'];
d = yn';
theta = lsqlin(C,d);

因为题目是我瞎编的,没加什么约束,实际中有约束加上去就行了,比如说约束上下界 l b = − 10 , u b = 10 lb = -10, ub =10 lb=10,ub=10

lb = -10*ones(1,4);
ub = 10*ones(1,4);
theta = lsqlin(C,d,[],[],[],[],lb,ub);

这样设置就行了,最后求出来的系数为:
t h e t a = [ 1.0106 ; 2.0880 ; − 3.0468 ; 3.9113 ] theta = [1.0106; 2.0880; -3.0468; 3.9113] theta=[1.0106;2.0880;3.0468;3.9113]

非线性曲线拟合

跟上面很像,比如说知道输入输出函数关系,但是不知道系数向量,就可以进行曲线拟合。
min ⁡ x 1 2 ∥ F ( x , x d a t a ) − y d a t a ∥ 2 2 = 1 2 ∑ i ( F ( x , x d a t a i ) − y d a t a i ) 2 \mathop {\min }\limits_x \quad \frac{1}{2}\left\| F(x, x_{data})-y_{data} \right\|_2^2 = \frac{1}{2}\sum\limits_i \left(F(x, x_{data_i})-y_{data_i} \right)^2 xmin21F(x,xdata)ydata22=21i(F(x,xdatai)ydatai)2
matlab 调用函数如下:
[x, resnorm] = lsqcurvefit(fun, x0, xdata, ydata,lb,ub)
以x0作为初始解,求取合适的系数,使得非线性函数fun满足最佳拟合。lb,ub是系数的边界约束条件,没有就不加。resnorm就是 1 2 ∥ F ( x , x d a t a ) − y d a t a ∥ 2 2 \frac{1}{2}\left\| F(x, x_{data})-y_{data} \right\|_2^2 21F(x,xdata)ydata22的值。
还是一样,比如说要拟合曲线
y = a 0 ∗ x + a 1 × x − a 2 × x 0.8 + a 3 y = a_0*x + a_1 \times \sqrt{x} - a_2 \times x^{0.8} + a_3 y=a0x+a1×x a2×x0.8+a3
先建立函数

function y = myfun(a,xdata)
y = a(1)*xdata + a(2)*sqrt(xdata) + a(3)*xdata.^0.8 + a(4)*1;

拟合

% created by hyacinth on 2024/1/8
clc
clear
close all%%
x1 = 1:100;
x2 = x1.^0.5;
x3 = x1.^0.8;
x4 = ones(size(x1));y = x1 + 2*x2 - 3*x3 + 4*x4;
yn = y + 0.05*randn(size(x1));x0 = [1,1,1,1];
a = lsqcurvefit(@myfun,x0,x1,yn);

最后的解为
a = [ 0.9969 , 1.9763 , − 2.9865 , 4.0131 ] a = [0.9969, 1.9763, -2.9865, 4.0131] a=[0.9969,1.9763,2.9865,4.0131]

非负线性最小二乘

min ⁡ x 1 2 ∥ C x − d ∥ 2 2 \mathop {\min }\limits_x \quad \frac{1}{2}\left\| Cx-d \right\|_2^2 xmin21Cxd22
约束条件为:
x ≥ 0 x \ge 0 x0
matlab 调用函数如下:
x = lsqnonneg(C, d)
[x, resnorm, residual] = lsqnonneg(C, d)
其中resnorm就是 ∥ C x − d ∥ 2 2 \left\| Cx-d \right\|_2^2 Cxd22,residual就是 C x − d Cx-d Cxd.
比如说将上面的函数改为
y = a 0 ∗ x + a 1 × x + a 2 × x 0.8 + a 3 + n o i s e y = a_0*x + a_1 \times \sqrt{x} + a_2 \times x^{0.8} + a_3 + noise y=a0x+a1×x +a2×x0.8+a3+noise
其中 a 0 = 1 , a 1 = 2 , a 2 = 3 , a 3 = 4 a_0 = 1, a_1 = 2, a_2 = 3, a_3 = 4 a0=1,a1=2,a2=3,a3=4,使用有噪声的数据求参数。

% created by hyacinth on 2024/1/8
clc
clear
close all%%
x1 = 1:100;
x2 = x1.^0.5;
x3 = x1.^0.8;
x4 = ones(size(x1));y = x1 + 2*x2 + 3*x3 + 4*x4;
yn = y + 0.05*randn(size(x1));C = [x1',x2',x3',x4'];
d = yn';
theta = lsqnonneg(C,d);

最后的结果为:
t h e t a = [ 0.9918 ; 1.9662 ; 3.0294 ; 3.9876 ] theta = [0.9918; 1.9662; 3.0294; 3.9876] theta=[0.9918;1.9662;3.0294;3.9876]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RAG 全链路评测工具 —— Ragas

RAG是目前比较火热的一个概念。对应的应用如雨后春笋般涌出。我们在实际的探索中,可能会有各种各样的优化方案。但是优化是否有用呢?模型影响会有多大呢? 我们需要一把尺子,来做全链路的衡量。才能够得出,到底应该朝哪…

光纤知识总结

1光纤概念: 光导纤维(英语:Optical fiber),简称光纤,是一种由玻璃或塑料制成的纤维,利用光在这些纤维中以全内反射原理传输的光传导工具。 微细的光纤封装在塑料护套中,使得它能够…

程序猿的时间管理和生产力

文章目录 为什么时间管理很重要?如何管理时间?心理维度生理维度技术尺寸 时间管理技巧每周计划基于目标的规划番茄钟为什么是25分钟?番茄钟为什么有效?艾森豪威尔矩阵这一切都是从开发者的角度来看的 也许我从开始学习或从事软件开…

React 入门 - 01

本章内容 目录 1. 简介1.1 初始 React1.2 React 相关技术点1.3 React.js vs Vue.js 2. React 开发环境准备2.1 关于脚手架工具2.2 create-react-app 构建一个 React 项目工程 1. 简介 1.1 初始 React React JS 是 Facebook 在 2013年5月开源的一款前端框架,其带来…

基于Java SSM框架实现实现机房预约系统项目【项目源码+论文说明】

基于java的SSM框架实现机房预约系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&#…

2道经典的C语言练习题(解答超详细)

文章目录 每日一言12结语⭐如果发现自己做错了,请不要气馁,做题就是一个查漏补缺的过程。每个人不是天生就会写代码的,给自己一些时间,不要放弃,加油陌生人! 每日一言 当你关注到自己行为背后的意图时&…

centos 8.0 安装sysbench 1.0.17

序号步骤说明执行命令执行结果备注1 下载并解压sysbench-1.0.17.zip sysbench-1.0.17.zip2安装依赖文件 yum install automake libtool -y yum install /usr/include/libpq-fe.h 3安装sysbench cd sysbench-1.0.17 ./autogen.sh ./configure \ --prefix/sysbench \ --with-pgsq…

快乐学Python,Python基础之组织代码「类与对象」

在上一篇文章中,我们了解了函数。这一篇文章我们来了解一下Python中另外一个重要的概念:类与对象。 1、类与对象 (1)类与对象有什么关系? 你可能会奇怪,为什么要叫类与对象呢?是两个不同的东…

Rustdesk本地配置文件存在什么地方?

环境: rustdesk1.1.9 Win10 专业版 问题描述: Rustdesk本地配置文件存在什么地方? 解决方案: RustDesk 是一款功能齐全的远程桌面应用。 支持 Windows、macOS、Linux、iOS、Android、Web 等多个平台。 支持 VP8 / VP9 / AV1 …

Nacos 学习之系列文章

系列文章目录 目录 系列文章目录 文章目录 前言 一、Nacos是什么? 二、Nacos的主要功能 服务发现和服务健康监测 动态配置服务 动态 DNS 服务 三、Nacos 地图 四、Nacos 生态图 总结 前言 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Naco…

白话机器学习的数学-3-评估

1、 模型评估 那我们如何测量预测函数 fθ(x)的正确性,也就是精度呢? 观察函数的图形,看它能否很好地拟合训练数据: 这是只有一个变量的简单问题,所以才能在图上展 示出来。 过像多重回归这样的问题,变量增…

pandas保存style到excel文件中

更多pandas style用法请参考:https://pandas.liuzaoqi.com/doc/chapter8/style.html 示例程序 import numpy as np import pandas as pd# 示例数据 dataframe pd.DataFrame({"date": pd.date_range("2024-01-01", "2024-02-01"),&…

D51+D52|接雨水

503.下一个更大元素ll 初始思路:这样这道题就变成了一道很纯粹的单调栈问题,因为只涉及了一个数组。但又因为这个数组是一个循环数组所以问题又变的有些复杂。 初始思路: 在循环数组的问题中,比较需要考虑的就是数组中最后一个…

web——德州扑克

1.此案例只用于学习 2.未接入游戏规则 HTML代码部分 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width"><meta name"Poker Skin" content&quo…

模式识别实验三

实验三 一  实验名称 感知器设计 二 目的和意义 使用感知器完成线性分类任务 三 操作步骤或算法结构 数据预处理。载入数据文件&#xff08; iris.csv 文件&#xff09;中的数据&#xff0c;并将其分成样本向量矩阵X和样本分类结果向量 G \bf G G。 给 4 4 4 列向量的…

【Vue3】2-5 : 指令系统与事件方法及传参处理

本书目录&#xff1a;点击进入 一、标签属性中的使用 - 指令系统 1.1 那么模板语法是否可以在标签属性中进行使用呢? ▶ 当然可以&#xff1a;使用 指令系统 二、指令系统 2.1 v-bind 2.2 v-on 三、实战 3.1 methods 选项 3.2 $event语法 一、标签属性中的使用 - 指令…

RT_Thread 调试笔记:时间相关,时钟管理函数,延时,定时器、 毫秒转换为时分秒 等

说明&#xff1a;记录日常使用 RT_Thread 开发时做的笔记。 持续更新中&#xff0c;欢迎收藏。 1. 延时函数 1. us延时函数 rt_hw_us_delay(rt_uint32_t us);//输如数据是us rt_hw_us_delay(200);//输入数据是us 2. ms延时函数 rt_thread_mdelay(1000);//输入数据是ms 2…

【教学类-综合练习-07】20240102 大4班 综合材料 (涂色类)对称动物面具,对称蝴蝶、头饰等

背景需求 年终了&#xff0c;清理库存&#xff0c;各种打印的题型纸都拿出来&#xff0c;当个别化学习材料 教学过程&#xff1a; 时间&#xff1a;2024年1月2日 班级&#xff1a;大4班 人数&#xff1a;25人 这次混了一点“EBRU湿拓郁金香”的纸片&#xff0c; 裁剪花朵…

从零学Java - String类

Java String类 文章目录 Java String类1 String1.1 常用两种创建方式1.2 比较两种创建方式1.3 字符串不可变性1.4 面试题 2 常用方法2.1 练习 3 可变字符串3.1 常用方法3.2 验证StringBuilder的高效性3.3 练习3.4 面试题: 4 正则表达式4.1 元字符4.2 其他字符4.2.1 预定义字符4…

基于Tosca和Terraform的多云资源编排探索

01 导言 随着企业采用多云战略和迁移到云平台&#xff0c;需要依赖不同的云资源来支持业务系统。传统的手动开通和配置资源关联关系的方法在多云环境下变得耗时且复杂&#xff0c;给运维带来困难。 为了应对多云环境中基础设施管理的复杂性&#xff0c;寻找一种高效的多云资源编…