https://doc.rust-lang.org/nomicon/subtyping.html#variance #PLT Rust 里讨论的问题不限于 Generics 的 Variance,问题复杂一些,喜欢了解细节的不容错过(
不过我目前懒得看这一节... 🙊
不过我目前懒得看这一节... 🙊
#Csharp #dotnet #microsoft
https://github.com/dotnet/standard/blob/master/docs/versions.md
.NET Core 会支持,Framework 不支持(补充)
https://github.com/dotnet/standard/blob/master/docs/versions.md
.NET Core 会支持,Framework 不支持(补充)
2 .NET Framework will not support .NET Standard 2.1 or any other later version. For more details, see this blog post.Forwarded from 羽毛的小白板
正式确定 .Net Framework 无缘 .Net Standard 2.1
https://github.com/dotnet/standard/commit/c3e48b4fe537ac604c8e0e9249f9cd0871440850
https://github.com/dotnet/standard/commit/c3e48b4fe537ac604c8e0e9249f9cd0871440850
GitHub
Update version table · dotnet/standard@c3e48b4
This repo is building the .NET Standard. Contribute to dotnet/standard development by creating an account on GitHub.
顺手学习了,不过我觉得好像除了 ArrayAdapter 这种系统 List Adapter 之外好像不需要别的手写 Adapter 手写 ViewHolder.... 🤔 也能发现点套路,还是经验成自然... 目前这个项目 DBase64 有一半的代码(包括所有项目结构 Gradle)是我 VSCode 手写的,基本是尽可能背出来,我想重写了,因为发现没有打草稿不知道都该怎么抽象怎么分工...
duangsuse::Echo
顺手学习了,不过我觉得好像除了 ArrayAdapter 这种系统 List Adapter 之外好像不需要别的手写 Adapter 手写 ViewHolder.... 🤔 也能发现点套路,还是经验成自然... 目前这个项目 DBase64 有一半的代码(包括所有项目结构 Gradle)是我 VSCode 手写的,基本是尽可能背出来,我想重写了,因为发现没有打草稿不知道都该怎么抽象怎么分工...
以后写 Android 应用或者不管什么应用都得先打草稿才是 🤔
(之前 Qt 应用 RandomSelection 模块化做的不当主要是因为我没经验,居然把一些本来应该放 C++ 对象里的东西弄成了全局变量或者放错位置了,没有好好利用 Qt 的信号插槽机制来解耦合)
其实这些前端依赖草稿主要还是功能比较多容易混,Android API 又多、杂,和 XML 混着不好弄
而类似 Spectrum 这种东西也就是写着写着慢慢改就可以了,本身算法上居多,不像 Android 可能是类定义和 API 使用居多,可维护性依赖代码结构
(之前 Qt 应用 RandomSelection 模块化做的不当主要是因为我没经验,居然把一些本来应该放 C++ 对象里的东西弄成了全局变量或者放错位置了,没有好好利用 Qt 的信号插槽机制来解耦合)
其实这些前端依赖草稿主要还是功能比较多容易混,Android API 又多、杂,和 XML 混着不好弄
而类似 Spectrum 这种东西也就是写着写着慢慢改就可以了,本身算法上居多,不像 Android 可能是类定义和 API 使用居多,可维护性依赖代码结构
duangsuse::Echo
顺手学习了,不过我觉得好像除了 ArrayAdapter 这种系统 List Adapter 之外好像不需要别的手写 Adapter 手写 ViewHolder.... 🤔 也能发现点套路,还是经验成自然... 目前这个项目 DBase64 有一半的代码(包括所有项目结构 Gradle)是我 VSCode 手写的,基本是尽可能背出来,我想重写了,因为发现没有打草稿不知道都该怎么抽象怎么分工...
🤔 隔壁 CN Android Dev 也就十来个大佬,活跃的也就四五个,不少伸手党 emmm...
有些有点价值的问题也没人回答,回答的也多是入门级别的问题,我甚至看到有个人在 Java class constructor 里写
为了给大家明细一下,总结一下我看到的几个话题:
+ musicinfo类(设备媒体文件列表)
+ RecycleView 和 ViewHolder
(你的 musicInfo 肯定不能 setText 啊)(是的,好像没有看 ViewHolder 应该是怎么实践的,不应该 create ViewHolder 的逻辑里放这种 setup 它自己的东西...)
(而且提问者貌似还把
+ MenuInflater 是增加菜单不是设置菜单
+ Android 8.0 上的 Channel 音频如何随时更换呢?
+ (ADB) shizuku manager 可以做到 getevent sendevent 吗
+ 最近在后台收到了一些关于 Android 8.1 设备上出现的 did not then call Service.startForeground()
+ 在手机上可以通过NFC写入任意自定义的数据吗
+ 推荐图片选择器
话说在 Android 上可不可能跑类似
+ 如何理解开源代码里难以理解的部分,尤其是作者的自定义函数的几个传参?
+ Qucik Setting Tile 调起 App
直接退出 App 或者用多任务切到后台 很快就开起来了,但是如果是 Home 退到后台,就需要4、5秒才能启起来,调完startActivity 和页面onRestart 差很长时间 = =
+ GridLayout , columnWeight是 1:3,怎么占用的空间不是1:3呢?
想要编译好的 curl…😂
请问 jni 引入第三方静态库的时候 cmake 一般怎么写呢... 比如 abiFilters 里面有两个的话...怎么才能让它自动链接指定 abi 的 lib 呢?
我是想修改一个现成的 vector drawable xml
+ 需要让另外一个app打开我的app,需要在我的app里面改什么代码吗?
+ EditText中输入的文字为什么和底线的距离这么大呢?
+ ```java 你们代码是怎么打出来的(markdown)
+ 现在有必要学litepal吗?感觉音乐播放器中音乐工具类扫描本地音乐还是需要写很多数据库cursor和getColumnIndex方法啊
一个音乐类就是musicbean,那litepal还有什么用?
能拿到UploadService的IBinder,但是拿不到DownloadService的IBinder
+ recyclerview adapter里面findviewbyid爆红怎么办
+ listview嵌套scrollview底部空白遇到过没
+ 按照网络上搜到的文章复制了一份 toolchain, 请问怎么在 build.gradle 文件中指定呢?
+ 问一下各位,AppProcess 内可以访问 Provider 吧
+ 请问一般怎么在 CMakeLists.txt 里写来配置 strip ...
有些有点价值的问题也没人回答,回答的也多是入门级别的问题,我甚至看到有个人在 Java class constructor 里写
return...(肯定是不行的啊,假设 Javac 允许了,子类调用父类架构器时 invokespecial 也不需要往栈上放返回值的)为了给大家明细一下,总结一下我看到的几个话题:
+ musicinfo类(设备媒体文件列表)
+ RecycleView 和 ViewHolder
(你的 musicInfo 肯定不能 setText 啊)(是的,好像没有看 ViewHolder 应该是怎么实践的,不应该 create ViewHolder 的逻辑里放这种 setup 它自己的东西...)
(而且提问者貌似还把
holder.textView.setText(...) 写成了 holder.setText(...))+ MenuInflater 是增加菜单不是设置菜单
(遇到复用就悲剧了)(先 clear 掉)
+ 无限循环的viewpager(好像是设置了set current是true)
+ 有好用的富文本解析器吗,github上几个库,都解析不了字号和对齐(解析富文本还是webview靠谱啊)
+ rxjava里面所说的不完整定义的回调是个什么意思呀(就是必须都要重写) (subscribe 方法有三个重载可用,不需要重写 next, error, complete 所有三种情况,Rx 可以理解为增强版 Promise,用于提供标准化 Streaming API)+ Android 8.0 上的 Channel 音频如何随时更换呢?
(用户的设置会被清除)(其他就没什么影响了,不过用户会看到删除的总量)
+ (android.support.)design 没有 -v7(Gradle implementation 依赖 coordinate 配置错误)(话说旧版本 Gradle 的所谓 compile 依赖真的是扯淡,明明不止是作为 api 使用的却说只是『编译期』依赖)+ (ADB) shizuku manager 可以做到 getevent sendevent 吗
(直接读 /dev/input/event* 就不会有 buffer)
(但是协议在不同设备上有差异)
(为什么我把/dev/input/event*权限设为666,Java读还是permission denied)
(runtime.exce的stdout默认有4k的buffer)(Output那方才可以flush,我现在拿到是inputstream)(我现在暂时用-c 2每次执行读两条事件)+ org.gradle.jvmargs 你们设置了多少
+ 最近在后台收到了一些关于 Android 8.1 设备上出现的 did not then call Service.startForeground()
+ 在手机上可以通过NFC写入任意自定义的数据吗
(您或会需要日 ISO7816)
+ android 自动化UI测试,大家都在用哪个框架呢 ?+ 推荐图片选择器
(Action_pick)
+ 话说,有什么好的方案能监听自身卸载呢?有 Root。话说在 Android 上可不可能跑类似
xorg-server 这样的 X11 Server?(Termux上有个魔改的)(XServer XSDL)(旧版本的Android可以stop后使用fbdev)(很久之后)+ 如何理解开源代码里难以理解的部分,尤其是作者的自定义函数的几个传参?
+ Qucik Setting Tile 调起 App
直接退出 App 或者用多任务切到后台 很快就开起来了,但是如果是 Home 退到后台,就需要4、5秒才能启起来,调完startActivity 和页面onRestart 差很长时间 = =
+ GridLayout , columnWeight是 1:3,怎么占用的空间不是1:3呢?
(其实已经占用了,只不过图片没有显示完全。可以给图片加上 android:scaleType="fitXY" 属性试试。)(还是用 GridLayout 设置 row/column(1/3) 吧)
+ android指纹签名问题(微信:如何利用SOTER,1个版本内完成指纹支付开发)
+ GridLayout的orientation是什么意思(好像意思是,动态布局的时候,按行添加或者按列添加)(你可以写下相关代码试试)
+ 请问有没有前辈在 jni 里用过 curl…想要编译好的 curl…😂
请问 jni 引入第三方静态库的时候 cmake 一般怎么写呢... 比如 abiFilters 里面有两个的话...怎么才能让它自动链接指定 abi 的 lib 呢?
(${ANDROID_ABI})
+ 有没有什么工具方便编辑 vector drawable xml?我是想修改一个现成的 vector drawable xml
(github.com/neworld/vd2svg)
+ 问一个强迫症问题,如何去除一个方法里由@Nullable导致的警告,方法里有句代码调用返回值注解了@Nullable,但可以100%确定不会是null,写判断毫无意义,只想去掉警告。@SuppressWarnings("null")无效果(试试 @SuppressWarnings("ConstantConditions"))
+ bind两个service,只有第一个service的onServiceConnection打印了,但是两个service的onBind都有打印,为什么+ 需要让另外一个app打开我的app,需要在我的app里面改什么代码吗?
+ EditText中输入的文字为什么和底线的距离这么大呢?
+ ```java 你们代码是怎么打出来的(markdown)
+ 现在有必要学litepal吗?感觉音乐播放器中音乐工具类扫描本地音乐还是需要写很多数据库cursor和getColumnIndex方法啊
一个音乐类就是musicbean,那litepal还有什么用?
(那个扫描不是用的content provider吗)(litepal是把数据存到数据库的)(Room也不错呀)+ bind两个Service,只有第一个onServiceConnection回调,但是两个onBInd方法都走了
能拿到UploadService的IBinder,但是拿不到DownloadService的IBinder
+ recyclerview adapter里面findviewbyid爆红怎么办
(不要在 onCreateViewHolder 里做这些事情。。。)(不良实践)+ listview嵌套scrollview底部空白遇到过没
+ 按照网络上搜到的文章复制了一份 toolchain, 请问怎么在 build.gradle 文件中指定呢?
(ndk.dir)
(我试试 感谢 我刚才闹不清楚流程 在 ndk 的那个 .cmake 里面不停 message 想看看输出想定位到😂)
(另外,如果你复制一份 NDK 的话,你可以在这个 NDK 里添加一个选项表示这是个特殊的 NDK 。这样就能在 Android.mk 或者 CMakeLists 里判断是不是 OLLVM NDK ,从而决定要不要在 CFLAGS 里加上 OLLVM 的那些选项。)
+ 群里有大佬用过Bmob来开发吗?上传和读取一个对象的不同类型的数据要怎么做,,+ 问一下各位,AppProcess 内可以访问 Provider 吧
+ 请问一般怎么在 CMakeLists.txt 里写来配置 strip ...
(Link flag -s)
duangsuse::Echo
🤔 隔壁 CN Android Dev 也就十来个大佬,活跃的也就四五个,不少伸手党 emmm... 有些有点价值的问题也没人回答,回答的也多是入门级别的问题,我甚至看到有个人在 Java class constructor 里写 return...(肯定是不行的啊,假设 Javac 允许了,子类调用父类架构器时 invokespecial 也不需要往栈上放返回值的) 为了给大家明细一下,总结一下我看到的几个话题: + musicinfo类(设备媒体文件列表) + RecycleView 和 ViewHolder…
(其实在 Android 开发里我所谓的『入门级别的问题』主要还是说理解的难度是入门... 本身在这个领域其实也算是实践会处理的问题)
duangsuse::Echo
(其实在 Android 开发里我所谓的『入门级别的问题』主要还是说理解的难度是入门... 本身在这个领域其实也算是实践会处理的问题)
记得我以前用 Androlua+ (那个社群做的文档很多很不错,好查)的时候连
现在看到 Service IBinder 什么的因为没见过代码还是觉得大佬 hhhh 🤔
可真的是大佬呢,还是不明觉厉呢?
其实我虽然没有看过专门 Android 开发的书,但书上也会有提及,我也能总结出一点 Android 开发相关的名词列表了
这种前端的工作... 还是看信息搜索的能力吧?
ListAdapter 都不知道是肝什么的,就是抄着别人的 Lua Java access 代码改,看到 ViewHolder、Fragment 瞬间觉得无法理解... Activity 类有几个可覆写的事件方法我都不清楚(现在看到 Service IBinder 什么的因为没见过代码还是觉得大佬 hhhh 🤔
可真的是大佬呢,还是不明觉厉呢?
其实我虽然没有看过专门 Android 开发的书,但书上也会有提及,我也能总结出一点 Android 开发相关的名词列表了
这种前端的工作... 还是看信息搜索的能力吧?
Forwarded from 羽毛的小白板
羽毛的小白板
https://mp.weixin.qq.com/s/a8LeIvXipokCXddUPm_3FQ #奇文共赏
duangsuse 看完之后的评价: 👎
真 TMD 傻逼。(实锤)
先上这些
title:
abstract:
那么他就是想把一大堆『除了 Host 外都一样的请求』分布到『不同的服务器』上
又有什么不对的呢? 🤔
他的观点:
+ 无线时代,网络稳定性差,应用流量敏感
+ APP与Server之间每次HTTP请求都需要进行DNS解析
+ 在上面的情况下,直接使用 IP 地址而不是间接查表访问可以提速
+ 负载均衡用 Nginx 或者客户端自行完成,而 Nginx 的外网地址需要 DNS 解析拿到,Nginx 自己还得再转发一道
+ 一旦DNS被劫持,整个APP就挂了,并且,网络慢,DNS解析的时间都不能忽略
+ APP能够把Web-server的ip-list内置吗?不行(绝望)
+ 画外音,是的,是画外音,有些『架构师』不会写洋文,这位是连中文都 TMD 不会写
+ 不要将ip-list内置在APP里,而是通过HTPP请求来拉取,然后客户端每次随机请求 List 里的 Node Host,使用 iplist 版本号或者客户端版本号更新,又可以水平扩展(在相同客户端版本间添加新节点),一箭双雕(大嘘)
+ Visitor Pattern 双向扩展问题的解决方案叫
所以我啥都不想说了,你们有眼睛,自己看吧。
我最讨厌名词一大堆,却没有啥理解难度的东西,因为很多人会在讨论这种 trivial 的问题时,利用各种专门的技术名词,甚至是自己造的,尝试让部分人不明觉厉。
而真正的技术是苦干实干的 — 一个复杂却的确应当的模型才是真正有乐趣的地方
有种写这种教导人们做 overdesign 的文章,为什么不去看看隔壁写算法的怎么做离散化,怎么做真正(还有点点提升)的『优化』呢?
(其实上面的话也有点过激,就他们这个情况多服务器负载均衡来说这么做不为错,错就错在把这当成一种『架构优化』拿来吹,甚至毫无根据地把性能瓶颈怪到 DNS 系统的头上)
(不过我很好奇的是,这么多服务器用一个数据库集群么... 不会把一些数据分开 Data Center 来处理再按照 BASE 原则互相同步之类的)
(Telegram 发布错误老丢失文字... 上面那段我写了三次)
真 TMD 傻逼。(实锤)
先上这些
title:
APP还在用域名连接后端?用IP提速N倍!
author: 58沈剑 架构师之路 (会做这种 overdesign 的果不其然是某些大厂子的『架构师』呵呵)abstract:
无线时代,网络稳定性差,应用流量敏感,APP与Server之间每次HTTP请求都需要进行DNS解析,有没有可能直接使用IP来提速呢?
keywords: HTTP, Nginx, 负载均衡, DNS, 水平扩展, 反向代理, Tomcat, IP提速, DNS劫持, 网络慢, 移动时代App, 高可用, ip-list, ip-list自动更新那么他就是想把一大堆『除了 Host 外都一样的请求』分布到『不同的服务器』上
又有什么不对的呢? 🤔
他的观点:
+ 无线时代,网络稳定性差,应用流量敏感
+ APP与Server之间每次HTTP请求都需要进行DNS解析
+ 在上面的情况下,直接使用 IP 地址而不是间接查表访问可以提速
+ 负载均衡用 Nginx 或者客户端自行完成,而 Nginx 的外网地址需要 DNS 解析拿到,Nginx 自己还得再转发一道
+ 一旦DNS被劫持,整个APP就挂了,并且,网络慢,DNS解析的时间都不能忽略
+ APP能够把Web-server的ip-list内置吗?不行(绝望)
+ 画外音,是的,是画外音,有些『架构师』不会写洋文,这位是连中文都 TMD 不会写
+ 不要将ip-list内置在APP里,而是通过HTPP请求来拉取,然后客户端每次随机请求 List 里的 Node Host,使用 iplist 版本号或者客户端版本号更新,又可以水平扩展(在相同客户端版本间添加新节点),一箭双雕(大嘘)
+ Visitor Pattern 双向扩展问题的解决方案叫
『Object Algebra』,这个问题的『动态水平扩展』解决方案的名字叫『IP直通车』
思路比结论更重要。所以我啥都不想说了,你们有眼睛,自己看吧。
我最讨厌名词一大堆,却没有啥理解难度的东西,因为很多人会在讨论这种 trivial 的问题时,利用各种专门的技术名词,甚至是自己造的,尝试让部分人不明觉厉。
而真正的技术是苦干实干的 — 一个复杂却的确应当的模型才是真正有乐趣的地方
有种写这种教导人们做 overdesign 的文章,为什么不去看看隔壁写算法的怎么做离散化,怎么做真正(还有点点提升)的『优化』呢?
(其实上面的话也有点过激,就他们这个情况多服务器负载均衡来说这么做不为错,错就错在把这当成一种『架构优化』拿来吹,甚至毫无根据地把性能瓶颈怪到 DNS 系统的头上)
(不过我很好奇的是,这么多服务器用一个数据库集群么... 不会把一些数据分开 Data Center 来处理再按照 BASE 原则互相同步之类的)
(Telegram 发布错误老丢失文字... 上面那段我写了三次)
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Harry Ying
XCH.C
11.9 KB
这个是某 v2ex 帖子提到的化学等式配平算法的一种简单算法实现,由原贴主两年前编写(他自己目前对这个程序的评价极低)
不过,如果有时间的话,我会重写,尽可能吧,现在实践能力太菜了,而且总是觉得理论不能完全用于实践就不舒服(比如 C 语言的变量 modifiers 不检查一遍能填的是否填完了就觉得很不爽)。
此外,还必须提到『原来』的 BCE 算法: https://github.com/bce-toolkit/historical-bce-c-6.x/tree/master/libbce
他用 Rust 也有一个重写版本,在贴主的频道 @lex_channel 上是有的,感兴趣可以查看
作者的个人博客在 https://lexuge.github.io/, 我上面也有提到
#Math (因为我这里几乎不谈化学) #CS #Algorithm #recommended #project #C #Cplusplus
不过,如果有时间的话,我会重写,尽可能吧,现在实践能力太菜了,而且总是觉得理论不能完全用于实践就不舒服(比如 C 语言的变量 modifiers 不检查一遍能填的是否填完了就觉得很不爽)。
此外,还必须提到『原来』的 BCE 算法: https://github.com/bce-toolkit/historical-bce-c-6.x/tree/master/libbce
他用 Rust 也有一个重写版本,在贴主的频道 @lex_channel 上是有的,感兴趣可以查看
作者的个人博客在 https://lexuge.github.io/, 我上面也有提到
#Math (因为我这里几乎不谈化学) #CS #Algorithm #recommended #project #C #Cplusplus
GitHub
bce-toolkit/historical-bce-c-6.x
(Historical) A library of balancing chemical equations for GNU/Linux, BSD, Mac OSX and Microsoft Windows. - bce-toolkit/historical-bce-c-6.x
Forwarded from Deleted Account
Rust 编写的化学方程式配平库 - V2EX
https://www.v2ex.com/t/456064#reply12
https://www.v2ex.com/t/456064#reply12
V2EX
Rust 编写的化学方程式配平库 - V2EX
程序员 - @LEXUGE - 最近用 Rust 编写了一个化学方程式的配平库。 主要的算法实现是 基于正则的 Parser 和高斯-约当消元算法 整个 lib 原生使用 generic type,所以支持各种需求的
#Math https://baike.baidu.com/item/%E9%BD%90%E6%AC%A1%E7%BA%BF%E6%80%A7%E6%96%B9%E7%A8%8B%E7%BB%84
(齐次线性方程组)
齐次线性方程组:常数项全部为零的线性方程组。如果m<n(行数小于列数,即未知数的数量大于所给方程组数),则齐次线性方程组有非零解,否则为全零解。
(齐次线性方程组)
齐次线性方程组:常数项全部为零的线性方程组。如果m<n(行数小于列数,即未知数的数量大于所给方程组数),则齐次线性方程组有非零解,否则为全零解。
Baidu
齐次线性方程组_百度百科
齐次线性方程组:常数项全部为零的线性方程组。如果m<n(行数小于列数,即未知数的数量大于所给方程组数),则齐次线性方程组有非零解,否则为全零解。...
#Math (线性代数 领域)齐次线性方程组(homogeneous linear equations )
equation = {
a11 x1 + a12 x2 + ... + a(10)n xn = 0,
a21 x1 + a22 x2 + ... + a(20)n xn = 0,
...
am1 x1 + ... + amn xn = 0
}
涉及的矩阵 a 包含矩阵类型的元素,索引 [m, n]
m 为等式矩阵的行号,n 则为列号
基本性质 如果m<n(行数小于列数,即未知数的数量大于所给方程组数),则齐次线性方程组有非零解,否则为全零解
a[1, 1] a[1, 2] a[2, 1]...
这种等式连立模式称为n元齐次线性方程组。设其系数矩阵为 A,未知项为 X,则其矩阵形式为 AX=0。若设其系数矩阵经过初等行变换所化到的行阶梯形矩阵的非零行行数为r,则它的方程组的解只有以下两种类型:
当 r=n 时,原方程组仅有零解;
当 r<n 时,有无穷多个解(从而有非零解)。
那么,怎么解它而求得方程的解集?
1. 依照 m<n 属性判断是否有解
2. 对等式项的系数实施初等行变换,得到齐次线性方程组
3. 解方程组
instance:
可以模式匹配得到系数矩阵 v 为
r=0 时,方程仅有零解
r<n 时,方程有无穷多个解
在这里,
== 逆向操作:利用系数矩阵也可以得到原零等式连立
然后这就非常线性了,x4 可以是任意实数
🤔 我们在计算机们里面怎么抽象这种算法呢?
常数项全为0的n元线性方程组(也即齐次线性方程组) 是什么样的呢?equation = {
a11 x1 + a12 x2 + ... + a(10)n xn = 0,
a21 x1 + a22 x2 + ... + a(20)n xn = 0,
...
am1 x1 + ... + amn xn = 0
}
涉及的矩阵 a 包含矩阵类型的元素,索引 [m, n]
m 为等式矩阵的行号,n 则为列号
基本性质 如果m<n(行数小于列数,即未知数的数量大于所给方程组数),则齐次线性方程组有非零解,否则为全零解
a[1, 1] a[1, 2] a[2, 1]...
这种等式连立模式称为n元齐次线性方程组。设其系数矩阵为 A,未知项为 X,则其矩阵形式为 AX=0。若设其系数矩阵经过初等行变换所化到的行阶梯形矩阵的非零行行数为r,则它的方程组的解只有以下两种类型:
当 r=n 时,原方程组仅有零解;
当 r<n 时,有无穷多个解(从而有非零解)。
那么,怎么解它而求得方程的解集?
1. 依照 m<n 属性判断是否有解
2. 对等式项的系数实施初等行变换,得到齐次线性方程组
3. 解方程组
instance:
type x: matrix2此时,等式的连立数 m 为 3,未知数矩阵长 n 为 4,有解
hle1 = {
x1 - 3x2 + x4 = 0,
x1 + 2x2 - x3 - x4 = 0,
x2 + 2x3 - 2x4 = 0
}
可以模式匹配得到系数矩阵 v 为
hle1' = {
x1 + (-1)(3)x2 + (0)x3 + x4 = 0,
x1 + (2)x2 + (-1)x3 + (-1)x4 = 0,
(0)x1 + x2 + (2)x3 + (-1)(2)x4 = 0,
}
type v: martix2
v = [
[1, -3, 0, 1],
[1, 2, -1, -1],
[0, 1, 2, -2]
]
len(v) 就是上文的 rr=0 时,方程仅有零解
r<n 时,方程有无穷多个解
在这里,
n = len(v.sigle())
此谓系数矩阵『A』,AX=0,X 是一个矩阵索引 m*(n-1)+i== 逆向操作:利用系数矩阵也可以得到原零等式连立
foreach ((vi, m) in v.pairs) {
type result: equationGroup
result << (= 0) . foldLeftIndex (m, new equation(0)) do |k, i| { (k xi +) }
}
也可以得到原等式组result = {
1 x1 + 2 x2 + (-1 x3) + 1 x4 = 0,
1 x1 + (-3 x2) + 0 x3 + 1 x4 = 0,
0 x1 + 1 x2 + 2 x3 + (-2 x4) = 0
} = hle1
对矩阵 v 施用初等行变换并且化简,得到矩阵 v'type v': matrix2套用得等式组
v' = [
[1, 0, 0, -7/11],
[0, 1, 0, -6/11],
[0, 0, 1, -8/11]
]
fin = {
x1 + (0)x2 + (0)x3 - (-7/11)x4 = 0,
(0)x1 + x2 + (0)x3 - (-6/11)x4 = 0,
(0)x1 + (0)x2 + x3 - (-8/11)x4 = 0,
}
即得。然后这就非常线性了,x4 可以是任意实数
_<{R}
相对 x4 的解集为元组 ((-7/11), (-6/11), (-8/11), 1)
这里不关心性质的证明什么的,扔给数学家们去做吧。计算机科学算法还是很实用的(🤔 我们在计算机们里面怎么抽象这种算法呢?