线性规划小白

用matplotlib应用一下线性规划

import numpy as np
import matplotlib.pyplot as plt
x1=np.linspace(0,5,200)
fig,ax=plt.subplots()
ax.plot(x1,-3/5*x1+3,label='3*x1+5*x2=15')
ax.plot(x1,-3*x1+12,label='6*x1+2*x2=24')
ax.plot([0,2,4,6],[0,0,0,0],label='x2=0')
ax.plot([0,0,0,0],[0,4,8,12],label='x1=0')
y1=-3/5*x1+3
y2=-3*x1+12
y3=np.minimum(y1,y2)
plt.fill_between(x1,0,y3,where=y3>0,color='gray')
ax.set_xlim(0,8)
ax.set_ylim(0,12)
ax.set_xlabel('x1 label')
ax.set_ylabel('x2 label')
ax.legend()
plt.show()

 

### SLAM 中非线性优化的基础知识 #### 定义与背景 在同步定位与地图构建(SLAM)领域,非线性优化是一种核心方法用于最小化估计状态(如机器人位姿和特征位置)中的误差。通过建立观测模型并利用实际测量数据来调整这些状态变量,从而获得更精确的地图表示和轨迹重建。 #### 图优化框架简介 g2o是一个广泛使用的开源库,专门针对基于图的SLAM问题设计[^1]。在这个上下文中,“图”的节点代表待求解的状态量(例如机器人的不同时间戳下的姿态),而边则表达了相邻节点间的关系或约束条件。对于某些特定类型的优化问题而言,可能仅存在单个顶点对应于一组全局参数,此时每条边实际上都是自环形式的一元边(unary edge),它反映了局部观测对该组参数的影响程度[^2]。 #### 曲线拟合实例解析 考虑一个简单的例子:给定一系列带有随机扰动的真实世界坐标点集{(xi,yi)}作为输入,目标是找到最佳匹配该分布趋势的最佳二次多项式y=ax²+bx+c。这里a,b,c就是我们要寻找的理想系数向量θ=[a;b;c]T。为了实现这一点,可以构造如下代价函数J(θ)=∑[(yi−f(xi))^2]/2,并采用诸如高斯牛顿法之类的迭代算法不断更新猜测值直至收敛至最优解附近。 ```matlab % MATLAB code snippet demonstrating curve fitting using nonlinear least squares method. function theta = fit_curve(xdata, ydata) % Initial guess of parameters p0 = [1; 1; 1]; options = optimset('MaxFunEvals',1e3,'Display','off'); theta = lsqnonlin(@(p) residuals(p,xdata,ydata), p0,[],[],options); end function resids = residuals(params,xdata,ydata) a=params(1);b=params(2);c=params(3); modelY=a*xdata.^2+b.*xdata+c; resids=ydata-modelY; end ``` 上述MATLAB脚本展示了如何运用非线性最小二乘法解决此类回归任务。其中`fit_curve()`接受两组一维数组分别存储横纵坐标的样本集合,并返回最终计算得到的三个未知数构成的结果列向量;内部辅助函数`residuals()`负责计算预测输出同真实标签间的残差平方序列供外部调用者评估当前假设的好坏情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值