任务 最小二乘法属于曲线拟合的方法之一。 复习《计算方法》时,在图书馆借阅的一本教辅上提供了两种实现方法,我好奇是否有何不同。 (并且发现matlab中矩阵的运算与最小二乘法也相关) 最终发现二者求解得到的多项式系数A相同 法一:Ga=d 通过不断将提供数据项代入x阶次逐渐提高的拟合公式P(x)=a0+a1x+a2x^2中,得到矩阵G,向量d,通过矩阵运算求得系数A 在matlab中求上述a,用左除:a=G\d code 在实现书上的例子时,发现解得系数与答案不一致,通过计算误差可知书上有误 法二:ATAx=ATb 这个方法很神奇,由于提供数据组数超过唯一确定多项式P(x)的模数,固得到的m>n的矩阵为超定方程组的求解 通过将方程组两边同乘A的转置,将x左边转变为方阵,实现x的求解 code 可以验证,这里运算得到的x与上个方法得到的A是完全相同的。 matlab中的矩阵算法 中文: matlab 在这里的求解与严格的数学意义是不同的 如果 A 接近奇异,matlab 仍会给出合理的结果,但也会提示警告信息; 如果 A 为方阵,如果解存在的话,x = A\B 的解就是 Ax=B(代入就会成立) 如果 A 不为方阵,返回的是 Ax=B 的最小二乘解; 参考资料 《数值计算方法与实验学习指导》左军 谢东秀 matlab 求解 Ax=B 时所用算法
Category: 学习记录
关于自动化类课程,关于个人网站,关于感兴趣的领域,关于竞赛比赛……
在广阔天地学习,兼收并蓄
数值分析-引论
任务 整理引论中提到的一些算法 秦九韶算法 多项式计算f(x) 计算多项式,形式如: a0x^n+a1x^n-1+a2x^n-2+…+an-1x+an 通过合并多项式,降低运算次数 根本源于: a0*x^n+a1*x^n-1=(a0x+a1)*x^n-1 由此可得: b0=a0 bi=bi-1*x+ai 最终,bn为所求 求导f'(x*) f(x)=(x-x*)(b0x^n-1+b1x^n-2+…+bn-1)+bn 解释上式——通过迭代: (x-x*)(b0x^n-1)=b0x^n-b0x^n-1x* (x-x*)(b1x^n-2)=b1x^n-1-b1x^n-2x*=(b0x*+a1)x^n-1-b1x^n-2x*=b0x^n-1x*+a1x^n-1-b1x^n-2x* 则递推公式,可消去末项,得到 a0x^n+a1x^n-1+a2x^n-2+…+an-1x+an 得到证明,故可通过求上述导,即令 q(x)=(b0x^n-1+b1x^n-2+…+bn-1) p'(x)=q(x)+(x-x*)q'(x) p'(x*)=q(x*) 利用上一部分的多项式计算法则可得结果 迭代法 开方转化为四则运算,计算√a 可以取:xk+1=1/2(xk+a/xk) 结果: 可见收敛的速度很快,但当a取500000时,10次迭代与内置结果有一定出入,将初值取值改为自适应 思考,当数目较大时,开方结果的位数与数字的一半位数接近,则取初值为一半位数 这样对于较大数字,选取的初值接近最终结果,更快收敛效果 以直代曲和化整为零 非线性问题线性化 直线近似曲线 方程求根 牛顿迭代法 微积分 梯形公式 圆周率 割圆法 加权平均的松弛技术 这是最没有认知的一部分,是计算方法提高收敛速度的一种有效方法。 x0于x1为x*的两个近似值, x=x1+w(x1-x0)=(1+w)x1-wx0 w选取适当可逼近真值,但选取困难。
nginx重定向http至https
任务 继上次颁发ssl证书后,可以使用https协议访问网站,但之前的http链接都失效了,通过更改nginx的配置文件可以应对这个问题 过程 参考文章: nginx开启ssl并把http重定向到https的两种方式 采用方案: 在配置文件nginx.conf中新增一个server规则
Matlab二阶系统性质
任务 自动控制原理课程覆盖了系统的分类、性质,系统稳定性的定义、判据,并在第3章重点讲解一阶系统、二阶系统的动态性能与稳态性能。最初直接被灌输了系统闭环传递函数带有参数的表达形式: 另: (系统的特征方程为传递函数分母的多项式部分) 闭环放大系数均为1 现在,随着对系统动态性能的了解,将参数对应的实际性质能够对应起来,通过matlab绘制进一步深化理解。 一阶系统 由于系统闭环放大系数不变,稳态皆趋于1; 惯性时间常数T越大,达到稳态的时间越长,通过输出达到设定值的百分比所在时间可以将上升时间与峰值时间用T表示 二阶系统 固定ζ不变,则各性质只受ω影响,随着ω增大,上升时间、稳定时间、峰值时间减小;超调量保持不变 固定受ω不变,则各性质只受ζ影响,在0<ζ<1时,系统处于欠阻尼状态,随着ζ增大,超调量减小,上升时间、稳定时间、峰值时间减小;在ζ=1时,系统处于临界阻尼状态;在ζ>1时,系统处于过阻尼状态
颁发ssl证书
任务 为了网站访问安全,在https://letsencrypt.org/自颁发ssl证书 环境配置 选择系统时发现自己的CentOS与RHEL并列,不清楚后者为何,查询到是商业版本。 centos基于redhat红帽RHEL(Red Hat Enterprise Linux)的开源源码 完成的,为什么redhat愿意这个寄生虫和自己抢市场呢?答:GPL 协议保证linux一定是开源的,这样完全合法1,无偿和有偿的区别:redhat是收费版,centos是免费版;2,redhat一个提供商业的解决方案 ,centos一个不提供。 3,CentOS是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。它与RedHat使用同样的源代码 RHEL 和centos 的区别 requirements Installing snap on CentOS Ensure that your version of snapd is up to date sudo snap install core; sudo snap refresh core Install Certbot remove old version (if exists) error: cannot install “certbot”: classic confinement requires… Continue reading 颁发ssl证书
python多线程处理循环时中断
任务 在进行种子杯的比赛时,为了实现可视化的调试,目标是程序在进行自动寻路算法时,可以通过键盘输入暂停,查看当前地图状态,并可手动操作(玩蛇),通过键盘继续自动寻路。 通过以下方法进行实现。 控制台输出 需要使地图实时更新,并且稳定在一定的窗口,需要采用多行刷新。 python 控制台单行刷新,多行刷新 尝试demo,与需求基本一致 查看使用文档: Curses Programming with Python _curses.error: addstr() returned ERR 原因是输出超出窗口,可以通过函数查看窗口大小 多线程 首先尝试一下 python在循环时如何监控键盘输入并对当前的循环进行操作 本人python新手,正在用python解决一些实际问题,现在想实现这样一个功能:在一个循环里面检测键盘的输入,并根据输入的内容对当前的循环进行一些操作,或者在屏幕上增加几个按钮,用鼠标点也可以。例如: 在一个 i=1到10的 for 循环里面,假如当前循环到i=5,我此时按下空格键,循环暂停,此时按->键,i从5跳到6,但循环还是暂停状态,输出的结果显示i=6的结果,同理若按<-键,i从5跳到4,输出显示i=4的结果,当再一次按下空格键时,循环继续。 首先通过例程学习多线程的使用,通过实例化一个继承Thread.threading的对象,通过调用函数即可开启线程。 Python3 多线程
python环境配置
安装Miniconda 使用Miniconda一行代码配置Pytorch环境 Miniconda 镜像使用帮助 Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no] [no] >>> yes no change /home/lazy/miniconda3/condabin/conda no change /home/lazy/miniconda3/bin/conda no change /home/lazy/miniconda3/bin/conda-env no change /home/lazy/miniconda3/bin/activate no change /home/lazy/miniconda3/bin/deactivate no change /home/lazy/miniconda3/etc/profile.d/conda.sh no change /home/lazy/miniconda3/etc/fish/conf.d/conda.fish no change /home/lazy/miniconda3/shell/condabin/Conda.psm1 no change /home/lazy/miniconda3/shell/condabin/conda-hook.ps1 no change /home/lazy/miniconda3/lib/python3.8/site-packages/xontrib/conda.xsh no change /home/lazy/miniconda3/etc/profile.d/conda.csh modified /home/lazy/.bashrc… Continue reading python环境配置
turtlebot3_burger调试记录
任务 对已经配置好环境的burger进行使用准备,由于之前的摄像头配置较低,识别赛道效果差,替换了新的广角摄像头,因此需要重新标定 内标定 (‘Wrote calibration data to’, ‘/tmp/calibrationdata.tar.gz’) 表明保存数据至/tmp/calibrationdata.tar.gz 把解压(tar -zxvf calibrationdata.tar.gz)出的文件ost.yaml保存至相应文件夹·autorace_camera/calibration/instrinsic·处,按照文档要求,改名为camerav2_320x240_30fps.yaml 传输到树莓派上相应的位置 scp camerav2_320x240_30fps.yaml c@192.168.1.101:/home/c 这里通过scp(ssh的传输方式)传到同一局域网下的树莓派上 结束! 外标定 修改主机这边的模式,把intrinsic调试关闭(改为action),extrinsic调试打开(改为calibration) 树莓派相应的, 把intrinsic调试打开(改为calibration) 打开rqt_reconfigure rosrun rqt_reconfigure rqt_reconfigure 调节camera下的projection设定,调节4个参数,把红框调节至投影的路径效果符合需要。 车道识别 现在内标定与外标定都已完成,将DT的调试模式打开 $ export AUTO_DT_CALIB=calibration $ roslaunch turtlebot3_autorace_detect turtlebot3_autorace_detect_lane.launch 同样打开rqt_reconfigure,修改对应的值,通过颜色的hsi模型筛选特定颜色。 新尝试! 使用键盘控制小车绕场一周,以确定参数的有效性与通用性 打开小车驱动 $ roslaunch turtlebot3_bringup turtlebot3_robot.launch 再使用键盘控制程序 $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch 根据窗口指令,wxad控制上下左右,s停止 最后测试自动驾驶即可!
软件工程选题- 博物馆信息管理系统
一 、引言 1、目的 实现一个能够给博物馆使用的信息系统。在博物馆的文物专栏前方会有我们的二维码,游客、摄影师扫码后可以观看别人拍摄的关于此展品的照片,同时可以上传自己拍摄的关于此展品的照片,这样能够让使用者分享一个展品的不同时间、不同角度的样貌。 此外,提供博物馆的导览地图,二维码的分布在其上可见,用户可根据指示前往核心展区,打卡拍摄。 进一步拓宽系统的文化属性,可以邀请历史学家、历史爱好者、手工艺人、书画家、学校师生、政务机关工作人员等入驻,在相应的模块发挥作用、利用资源,使博物馆行业的主基调——让文物活起来落实落地更加掷地有声。 2、背景 博物馆是保护和传承人类文明的重要殿堂,是连接过去、现在和未来的桥梁,在促进世界文明交流互鉴方面具有特殊的作用。作为中华五千年文明重要承载体的中国博物馆,理所应当坚持新发展理念,着眼文化强国建设和“两个一百年”奋斗目标,不断探索创新,勠力推进博物馆事业全面跨入新时代。 当前,以物联网、大数据、人工智能为代表的新一代信息技术日新月异,新一轮科技革命和产业变革正深刻改变着人们的生产、生活和思维方式。秉持绿色发展理念,博物馆高度注重观众的观展体验,通过改进展览手段,运用 AR/VR、等现代科技手段为观众提供立体化的展览展示服务。 二、任务概述 1、完成目标 1. 本软件通过提供多层次、全方位的文物信息,将博物馆的文化功能在数字化的时代得到进一步拓宽。2. 营造良好的社区文化,提供不同的入驻角色,使优秀的文化资源为更多群体利用。 2、用户特点 本软件面向人群主要分为两类,一类是围绕博物馆提供的文化藏品资源进行各类学习创作的一般用户,另一类是负责建设博物馆藏品数据信息的馆员: 一般用户 博物馆参观人员:普通民众,对历史了解有一定限度,没有对博物馆及其展品有很深的了解,在参观的时候走马观花,无法深入了解。基本需求是获取自己感兴趣的展品信息,购买附加一定文化符号的文创产品; 师生、政务工作者:对历史文化具有一定兴趣和了解的需要,古人云:「以古为镜,可以知兴替」。这个道理很深刻。大家多学历史知识,目的就是为了认识历史发展和社会兴亡的规律,更加自觉、更加紧迫地做好我们自己的工作。但获取知识的途径有限,实践机会不足,没有高效的平台支撑; 历史学家、历史达人:对历史文化了解非常深厚,有分享知识的能力和兴趣; 手工艺人、书画家:具有一定的技能,需要在销售平台出售产品。 博物馆员 拥有渊博的知识,和不同常人的鉴赏能力,善于甄别古品的真伪,具有良好的古代文化底蕴,并善于经营和管理这些古文物和艺术品。有以下职能要求: 征集文物,对文物进行鉴定; 关注文物的保存和保护情况,定期对文物进行全面的维护,并防止文物盗窃; 负责审批、监督博物馆的建设、维修活动; 为博物馆建设筹资,审批博物馆经费使用活动,检查博物馆预算执行情况,关注资金的使用效益和社会效益,在保证博物馆的收益与传播文化两个方面做好平衡工作; 参与博物馆公共宣传活动,提高公民的文化素质; 与其它国内外博物馆沟通,组织国内各个地区之间和国际的文化交流和合作,开展文化交流会和文物展览会,弘扬国家文化和民族精神。 3、应用场景 线下(核心) 游客访问博物馆时,扫码获取文物信息,上传文物图片。 根据导览地图参观,在地点打卡。 线上(延拓) 延伸至生活空间,提供多方位的历史感知,例如: 史图(History Map),参照星图,将不同历史时期的疆域图层叠加,用户可通过选取时间点探索地点在此前的场景。提供标记点,定位重大历史事件,结合AR、VR新技术,可挖掘点很多。 创建兴趣小组,为历史爱好者、相关从业者提供研讨空间。 提供直播平台,邀请手工艺人与书画家入驻,出售文创产品,促进文化产业繁荣。 与“学习强国”平台合作,提供学习平台,为知识性答题提供实践,乐趣发展。以史为鉴,加强文化修养。 三、功能 3.1程序主要功能 3.1.1用户层面 一般用户 用户能够通过该程序实现对博物馆所有藏品的信息查询; 用户能够根据对应的藏品,上传自己的拍摄图像; 用户可以浏览其他用户上传的藏品图像,并进行点赞、评论操作; 用户可以在设定的地点通过定位实现打卡; 用户可以在购物模块进行文创产品的浏览和选购; 用户可以在直播模块观看手艺直播; 用户在账号登录,可以通过身份认证,选择不同的特殊用户角色,实现对平台的多维利用,具体如下: 师生、政务工作者等 用户通过身份认证后,创建或加入兴趣小组,进行线上研讨活动;获取文化资讯、讲座信息;上传老照片、传家宝、家谱等保留家族记忆;进行历史问题的提问。… Continue reading 软件工程选题- 博物馆信息管理系统
学习小结-GitHub使用
任务 幸运结识大佬,在超牛的博客网站https://www.limfx.pro/上有很多优质文章,勤于学习、感受知识暴涨的同时还是加以记录,慢慢填坑。 Github使用 多人协作创建新分支 多人协作-廖雪峰 创建并切换到该分支 可以在此分支做修改,同步到远程仓库的[branchname]分支 pull request About pull requests-GitHub官网 对他人项目进行修改后,请求对方拉取 1.先fork到我的GitHub远程仓库里 2.再git clone到我的本地仓库 3.在本地仓库创建一个新分支robust 4.用修改后的新分支去pull request(在GitHub网站上操作) git pull,这个命名相当于连续执行两个命令:git fetch然后git merge pull request简称PR,是github的概念,不是git的概念, 同步更新 github fork 别人的项目源作者更新后如何同步更新 按步骤操作即可,意味着自己用源作者的分支向自己发起pull request请求。 冲突 Git冲突:commit your changes or stash them before you can merge. git diff查看不同 找到对应的文件,进行手动修改完成merge git更新 本地打开Git,输入