使用 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),简称光纤,是一种由玻璃或塑料制成的纤维,利用光在这些纤维中以全内反射原理传输的光传导工具。 微细的光纤封装在塑料护套中,使得它能够…

Kotlin 操作符重载

Kotlin 操作符重载 Kotlin 通过 operator 关键字 修饰 操作符函数,来实现 操作符重载。 操作,对应 inc 函数,-- 操作符,对应 dec 函数 举例,Point 类 实现 操作符重载: class Point {operator fun inc()…

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

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

HBuilderX 创建 uni-ui模板项目,为什么会提示下载失败

HBuilderX 创建 uni-ui模板项目,为什么会提示下载失败 HBuilderX 是一个集成开发环境(IDE),用于开发基于uni-app的跨平台应用程序。当你在 HBuilderX 中创建 uni-ui 模板项目时,如果提示下载失败,可能有几个…

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月开源的一款前端框架,其带来…

【华为OD机试真题 JavaScript】贪吃的猴子|解题思路、代码解析

文章目录 题目描述输入输出示例1输入输出说明示例2输入输出说明示例3输入输出说明备注解题思路实现代码</

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

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

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

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

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…

Arduino开发板搭配GY906、OLED0.96、IC模块实现测温系统

Arduino开发板搭配GY906、OLED0.96、IC模块实现测温系统 GY906作为测温元件&#xff08;I2C协议&#xff09; OLED实时显示温度&#xff08;I2C协议&#xff09; IC模块&#xff08;将电压信号转为4-20mA标准量&#xff09; //GY906、OLED0.96、arduino、IC模块//SCL SCL&…

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

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

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

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

Nacos 学习之系列文章

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

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

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

pandas保存style到excel文件中

更多pandas style用法请参考&#xff1a;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 初始思路&#xff1a;这样这道题就变成了一道很纯粹的单调栈问题&#xff0c;因为只涉及了一个数组。但又因为这个数组是一个循环数组所以问题又变的有些复杂。 初始思路&#xff1a; 在循环数组的问题中&#xff0c;比较需要考虑的就是数组中最后一个…

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语法 一、标签属性中的使用 - 指令…