解决问题的步骤-庖丁解羊

分析问题而不是一上手就开始编代码,分析能力对一个程序员来说是一个重要的属性,它直接关系到你对事物的理解能力和组织能力,聪明的人会仔细的将划分的过程多看几遍,重组的方法多试几种,这不但对以后和编程有好处,也是更好解决方案的起点。

原文地址:http://mylovejsj.blog.163.com/blog/static/3867397520086323556435/

经过多年的编程,吾发现编程的思想对一个程序员是至关重要的,以前拿到一个问题,马上就开始考虑如何来一点一点把他用代码来实现,于是啃啊啃啊于愁眉笼罩千辛万苦下每完成了一点就欣喜若狂。编着编着发现这里不足,那里没考虑到于是东补补西凑凑,异常蹩脚的完成了一个小程序,当时的感觉就像我完成了全世界,或许那个时代是我最开心的。
完成了四五个程序的我,开始发现我做了很多重复的劳动,于是乎开始做我的程序库,编写功能型模块。想到了这些模块只要写一遍就可以受用无穷不禁得意洋洋,或许那个时代我是聪明。
当我写了五六千行代码的时候,我发现我写的功能模块已经记不清什么是干什么的了,而我已经习惯使用别人写的比我好的模块时,我开始迷茫,我做的一切究竟是为了什么。这时我开始研究别人的代码,开始懂得什么是优化,什么是数据结构,什么是数学建模,我开始研究应用数学和软件工程。这时我开始使用C++用类来写程序,或许那个年代我是明智的。
当我写了四五十个*.h和*.cpp后,开始发现我写的类一点都不通用,无法再利用。我开始深入学习类以及面向对象,明白了继承和封装,这时的我才开始深深思考什么是重要的,于是我开始分析问题而不是一上手就开始编代码。或许以前的我是个傻瓜^_^。
我足足花了三年多的时间来浪费我的青春做了别人仅需一年的事情(当然着三年中我积累的经验不可能是一年能做到的,但是对于编程上的修养,我浪费的时间已太多),如果你们没有意识到这点,或许也会浪费很多时间。
分析能力对一个程序员来说是一个重要的属性,它直接关系到你对事物的理解能力和组织能力,程序员做的工作就是将一个事物分解成数学元素然后重新组织在计算机里重现,所以如何处理事物是个要点。
我们了解一个事物并进行描述的时候,往往是先处理它的一部分,接着处理另一部分,然后等所有的部分都处理完的时候,具体的事物就重现了。比如给一个不知道山羊的人介绍山羊,如果你对他说山羊就是山羊,他是无论如何都不会明白的。如果你说山羊是一种有四只脚的脑袋上有两只角,还有短短的尾巴,那他模模糊糊会有些形象在脑海里了,如果加上有绒绒的毛,可笑的胡子,咩咩的叫的食草动物,至少他不会和牛混淆起来,如果你能描述的更详细更好,那他有九成知道山羊是什么样子了,当他看见山羊的时候就会立刻明白。对于什么都不懂得计算机你不用说明什么,但是要是别人或者几年以后的你自己能看明白你的文档,详细的说明是必须的。而从上面的过程看来,将事物分成小块来处理是个好办法,我们把这个过程叫做划分。当然划分是可以继续下去,将划分的小块继续划分直到不能划分为止。当然要对一只山羊划分需要一个对山羊有着全面了解的人,所以划分你的问题的时候要对问题有全面的了解。看上去这对一个还没有了解这个问题的人是一个矛盾,划分一个事物有助于了解这个事物而要很好的划分却需要对事物充分的了解。于是我们要有所改变,要改变的是我们的做法。我们先粗略的了解问题,然后粗略的划分一下,将划分的模块再粗略的了解一下,然后将它粗略的划分,等到都成为不可划分的小块时,我们再来组织它。而且这个时候,我们对问题已经有全面的了解了,这时候我们将小块的重复部分扔掉(一般一定会有重复的部分),然后将这些小块重新将问题组合起来,想一下将一只大卸八块的山羊组合起来,哈哈,一定是活不过来了,不过有羊肉吃也不错。如果你很顺利的组合起来了,表示你很好的划分了这个问题而且了解的很透彻,以后的事将会一帆风顺,你这时脑袋里一定充满了解决这个问题的方案,已经跃跃欲试了。不要急,聪明的人会仔细的将划分的过程多看几遍,重组的方法多试几种,这不但对以后和编程有好处,也是更好解决方案的起点。
现在我们来解剖一只山羊,如果你愿意还可以细分,动物爱好者请回避。
山羊
-> 脑袋
-> 躯体
-> 四肢
-> 尾部
脑袋 躯体 四肢 尾部
-> 五官 -> 胸 -> 两只前肢 -> 尾巴
-> 胡子 -> 腹 -> 两只后肢 -> 绒毛
-> 绒毛 -> 背 -> 骨架
-> 骨架 -> 内脏
-> 绒毛
-> 骨架
五官 内脏 前肢
-> 耳朵 -> 心 -> 脚
-> 眼睛 -> 脾 -> 绒毛
-> 鼻子 -> 肝 -> 骨架
-> 嘴巴 -> 肺 后肢
-> 胃 -> 脚
-> 肠 -> 绒毛
-> 肾 -> 骨架
最后我们得到的是:
山羊 脑袋 躯体 四肢 尾部 脑袋 五官 胡子 绒毛 骨架 躯体 胸 腹 背 内脏 绒毛 骨架 四肢 两只前肢 两只后肢 尾部 尾巴 绒毛 骨架 五官 耳朵 眼睛 鼻子 嘴巴 内脏 心 脾 肝 肺 肾 胃 肠 前肢 脚 绒毛 骨架 后肢 脚 绒毛 骨架
去掉重复的部分:
山羊 脑袋 躯体 四肢 尾部 五官 胡子 绒毛 骨架 胸 腹 背 内脏 两只前肢 两只后肢 尾巴 耳朵 眼睛 鼻子 嘴巴 心 脾 肝 肺 肾 胃 肠 脚 脚
最终的不可划分的子模块:
胡子 绒毛 骨架 胸 腹 背 尾巴 耳朵 眼睛 鼻子 嘴巴 心 脾 肝 肺 胃 肠 脚

现在我们将它重新组合一下,是不是很简单的就完成了。而且我们需要处理的东西并不多。现在我们来用数学元素来描述一下
胡子: 数量不多的多种形状的轮廓,有各种颜色
绒毛: 非常多的多种形状的轮廓,有各种颜色
骨架: 多种形状的轮廓,有一种颜色
胸: 某形状的轮廓,有一种颜色
腹: 某形状的轮廓,有各种颜色
背: 某形状的轮廓,有各种颜色
尾巴: 某形状的轮廓,有各种颜色
耳朵: 最多两个的某形状的轮廓,有各种颜色
眼睛: 最多两个的某形状的轮廓,有各种颜色
鼻子: 最多一个的某形状的轮廓,有各种颜色
嘴巴: 某形状的轮廓,有各种颜色
心: 某形状的轮廓,有一种颜色
脾: 某形状的轮廓,有一种颜色
肝: 某形状的轮廓,有一种颜色
肺: 某形状的轮廓,有一种颜色
胃: 某形状的轮廓,有一种颜色
肠: 多种形状的轮廓,有一种颜色
脚: 多种形状的轮廓,有各种颜色
现在我们又得出了数量、轮廓和颜色这个三个元素,他们是所有元素都有的共性,我们找到了组合山羊的最小划分,虽然在科学上这不是正确答案,但粗略地表达一只山羊这已足够。好,虽然历时不多,我们在脑海里已经解决了这个问题。

电动汽车数据集:2025年3K+记录 真实电动汽车数据:特斯拉、宝马、日产车型,含2025年电池规格和销售数据 关于数据集 电动汽车数据集 这个合成数据集包含许多品牌和年份的电动汽车和插电式车型的记录,捕捉技术规格、性能、定价、制造来源、销售和安全相关属性。每一行代表由vehicle_ID标识的唯一车辆列表。 关键特性 覆盖范围:全球制造商和车型组合,包括纯电动汽车和插电式混合动力汽车。 范围:电池化学成分、容量、续航里程、充电标准和速度、价格、产地、自主水平、排放、安全等级、销售和保修。 时间跨度:模型跨度多年(包括传统和即将推出的)。 数据质量说明: 某些行可能缺少某些字段(空白)。 几个分类字段包含不同的、特定于供应商的值(例如,Charging_Type、Battery_Type)。 各列中的单位混合在一起;注意kWh、km、hr、USD、g/km和额定值。 列 列类型描述示例 Vehicle_ID整数每个车辆记录的唯一标识符。1 制造商分类汽车品牌或OEM。特斯拉 型号类别特定型号名称/变体。型号Y 与记录关联的年份整数模型。2024 电池_类型分类使用的电池化学/技术。磷酸铁锂 Battery_Capacity_kWh浮充电池标称容量,单位为千瓦时。75.0 Range_km整数表示充满电后的行驶里程(公里)。505 充电类型主要充电接口或功能。CCS、NACS、CHAdeMO、DCFC、V2G、V2H、V2L Charge_Time_hr浮动充电的大致时间(小时),上下文因充电方法而异。7.5 价格_USD浮动参考车辆价格(美元).85000.00 颜色类别主要外观颜色或饰面。午夜黑 制造国_制造类别车辆制造/组装的国家。美国 Autonomous_Level浮点自动化能力级别(例如0-5),可能包括子级别的小
内容概要:本文详细介绍了IEEE论文《Predefined-Time Sensorless Admittance Tracking Control for Teleoperation Systems With Error Constraint and Personalized Compliant Performance》的复现与分析。论文提出了一种预定义时间的无传感器导纳跟踪控制方案,适用于存在模型不确定性的遥操作系统。该方案通过具有可调刚度参数的导纳结构和预定义时间观测器(PTO),结合非奇异预定义时间终端滑模流形和预定义时间性能函数,实现了快速准确的导纳轨迹跟踪,并确保误差约束。文中详细展示了系统参数定义、EMG信号处理、预定义时间观测器、预定义时间控制器、可调刚度导纳模型及主仿真系统的代码实现。此外,还增加了动态刚度调节器、改进的广义动量观测器和安全约束模块,以增强系统的鲁棒性和安全性。 适合人群:具备一定自动化控制理论基础和编程能力的研究人员、工程师,尤其是从事机器人遥操作、人机交互等领域工作的专业人士。 使用场景及目标:①理预定义时间控制理论及其在遥操作系统中的应用;②掌握无传感器力观测技术,减少系统复杂度;③学习如何利用肌电信号实现个性化顺应性能调整;④探索如何在保证误差约束的前提下提高系统的响应速度和精度。 阅读建议:本文内容涉及较多的数学推导和技术细节,建议读者先熟悉基本的控制理论和Python编程,重点理各个模块的功能和相互关系。同时,可以通过运行提供的代码示例,加深对理论概念的理,并根据自身需求调整参数进行实验验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值