第一讲作业 预备知识
1.有线性方程 , 若已知和, 需要求解 ,该如何求解?这对和有哪些要求?提示:从 A 的维度和秩角度来分析。
设向量的维度为,定义的增广矩阵为:
,方程组无解
,方程组有唯一解
,方程组有无穷解
,不可能出现,增广矩阵的秩大于等于系数矩阵的秩(矩阵加入一列,其秩只能增大,不可能变小)
2. 高斯分布是什么?它的一维形式是什么样子?它的高维形式是什么样子?
1)高斯分布及其一维形式
高斯分布即正态分布,其图形特点为中间高,两头低,是钟形曲线。在高斯分布中,以数学期望表示钟型的中心位置,而标准差表征曲线的离散程度。随机变量X服从数学期望为,方差为的正态分布,记为:
其概率密度函数为:
对应的函数图像如下,其中值越大,曲线越平缓(矮小),值越小,曲线越瘦高,概率分布比较集中:
上述高斯分布为一维高斯分布,这里的是随机变量,是一维的,而不是随机向量。当,时,高斯分布为标准高斯分布。
2)一维高斯分布到二维高斯分布的拓展:
这里的是随机向量,是二维的,其中包含两个相互独立的服从正态分布的随机变量。
二维高斯分布图像:
3)从二维高斯分布到多维高斯分布的拓展:
二维高斯分布中随机向量是二维的,其中为随机向量的均值,为随机向量的方差,其概率密度函数为:
维高斯分布中随机向量是维的,其中为随机向量的均值,为随机向量的方差,其概率密度函数为:
3. 你知道 C++ 中的类吗?你知道 STL 吗?你使用过它们吗?
1)C++中的类可以理解为自定义的数据结构,类中包括了若干个成员,构成了成员列表。类成员可以是数据和函数,一般通过成员函数对类内的数据进行访问,具体请参考C++ Primer Plus等书籍。
2)STL是C++的标准模板库,具体参见C++ Primer Plus等书籍。
4. 你以前怎样书写 C++ 程序? (你完全可以说只在 Visual C++ 6.0 下写过 C++ 工程,只要你有写 C++ 和 C 语言的经验就行。)
在 Visual C++ 6.0 下写过 C++ 工程
5. 你知道 C++11 标准吗?你听说过或用过其中哪些新特性?有没有其他的标准?
知道,新特性请参照C++ Primer Plus等书籍。
6. 你知道 Linux 吗?你有没有至少使用过一种(不算安卓)操作系统,比如Ubuntu?
知道,使用过Ubuntu16.04
7. Linux 的目录结构是什么样的?你知道哪些基本命令,比如 ls, cat 等?
1)Linux(Ubuntu)主要目录结构图:
2)Ubuntu目录功能详解:
目 录 名 |
描 述 |
|
/ |
Linux文件系统根目录 |
|
/bin |
bin就是binary,二进制。/bin目录放置可执行文件,root和一般账号都可以使用,如cat, chmod, mv, mkdir等。其实系统有很多放置 执行文件的目录,但/bin 目录比较特殊,因为/bin 放置的是在单用户模式下还能够被操作的命令。 |
|
/boot |
这个目录主要存放开机会使用的文件,如Linux内核和系统启动文件,包括Grub、lilo启动器程序 |
|
/dev |
存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等。注:在Linux系统上,任何设备与接口设备都是以文件的形式存在于 这个目录当中的。 |
|
/etc |
存放系统的所有配置文件,例如/etc/passwd存放用户账户信息,/etc/hostname文件存放主机名,也有一些目录,如/etc/nginx是目录, 里面存储nginx的很多配置文件 |
|
/home |
用户主目录的默认位置。当你创建一个一般用户账号时,默认的用户主文件夹就在该目录下 |
|
/lib |
存放开机时会用到的函数库,以及/bin和/sbin目录下的命令调用的函数库 |
|
/lost+found |
存放由fsck放置的零散文件。注:fsck命令用于检查与修复 Linux 文件系统 |
|
/media |
media是“媒体”英文,顾名思义,它下面存放可删除的设备,包括软盘,光盘,DVD等设备文件 |
|
/mnt |
如果你想要暂时挂载某些额外的设备,一般建议你可以放置到这个目录中。 |
|
/proc |
这个目录本身是一个虚拟文件系统。它放置的数据都是在内存当中,例如系统内核,进程等 |
|
/root |
root用户的主目录 |
|
/run |
最常用的就是存放进程的ID。 要特别注意的是:它使用tmpfs文件系统,这是一种存储在内存中的临时文件系统,当机器关闭的时候,文件系统自然就被清空了,我就曾经吃了这个亏 |
|
/sbin |
sbin即system binary,用来设置系统的可执行命令,这些命令只有root用户才能用设置系统,其他用户最多只能用来“查询”而已 |
|
/srv |
srv是service的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。常见的服务有WWW, FTP等。比如WWW服务需要的 网页数据就可以放在/srv/www/目录下 |
|
/sys |
这个目录跟/proc 非常类似,也是一个虚拟的文件系统,主要也是记录与内核相关的信息。这个目录同样不占硬盘容量 |
|
/tmp |
顾名思义,就是用来存放临时文件的地方,所有用户都可以访问。建议该目录不要放重要数据 |
|
/usr |
注意usr并不是user的缩写,而是Unix Software Resource的缩写,即“Unix 操作系统软件资源”放在该目录,而不是用户的数据。这个目录 相当于Windows操作系统的“C:\Windows\”和“C:\Program files\”这两个目录的综合体,系统安装完毕后,这个目录会占用最多的硬盘容量。 |
|
/usr/X11R6 |
X Window系统重要数据所放置的目录 |
|
/usr/bin |
用户可使用的大部分命令都放在这里 |
|
/usr/include |
存放C/C++等程序语言的头文件(head)和目标文件(include) |
|
/usr/lib |
包含各应用软件的函数库,目标文件(object file),比如它下面有jvm目录,就是java |
|
/usr/local |
系统管理员在本机自行下载自行安装的软件(非Ubuntu发行版默认提供的软件)一般放在该目录。该目录下也有 bin,etc, include, lib等子目录。比如我在Ubuntu上安装的uwsgi, celery, pip就放在/usr/local/lib目录下 |
|
/usr/sbin |
非系统正常运行所需要的系统命令。最常见的就是某些网络服务器软件的daemon命令,如nginx, ntpd, mysqld |
|
/var
|
如果/usr 是安装时会占用较大硬盘容量的目录,那么/var 就是在系统运行过程中渐渐占用硬盘容量的目录。包括缓存cache,日志log,以及某些 软件运行所产生的文件,包括程序文件(lock file, run file)。mysql的数据库文件也是放置在这个目录下,具体为/var/lib/mysql/目录下 |
|
/var/cache |
应用程序缓存目录 | |
/var/lib |
存放程序执行过程中,需要使用到的数据文件。比如mysql数据库的数据放在/var/lib/mysql/目录下 | |
/var/lock |
它是/run/lock目录的软链接,某些设备或文件一次只能被一个应用所使用。这样当这些资源使用时,就要加锁 特别注意:它使用临时文件系统,主机重启后会清空 |
|
/var/log |
日志文件目录 | |
/var/mail |
电子邮件,当主机做邮件服务端时,发送的邮件都会放在这个目录,建议定期清理 | |
/var/run |
进程ID,它是/run目录的软连接 特别注意:它使用临时文件系统,主机重启后会清空 |
|
/var/spool |
存放电子邮件,打印任务等的队列目录。它的子目录/var/spool/mail其实是/var/mail的软链接 |
8. 如何在Ubuntu 系统中安装软件(不打开软件中心的情况下)?这些软件被安装在什么地方?如果只知道模糊的软件名称(比如想要装一个名称中含有 Eigen 的库),应该如何安装它?
1)软件包(.deb文件)安装方法
//安装
sudo dpkg -i 软件包名.deb
//卸载
sudo apt-get remove 软件包名称
2) 有时候需要配置ubuntu安装的软件,一般安装软件都是使用apt-get install。那么安装完后,软件的安装目录在哪里呢,可执行文件又放在哪里呢。
A、下载的软件的存放位置:/var/cache/apt/archives
B、安装后软件的默认位置:/usr/share
C、可执行文件位置:/usr/bin
D、配置文件位置:/etc
E、lib文件位置:/usr/lib
但是这么找也不一定找得到,所以需要用一些命令查找包的位置。
以chromium-browser为例
/***************方法一******************/
find命令
aaa@qq.com:~$ sudo find / -name chromium-browser
/usr/lib/chromium-browser
/usr/lib/chromium-browser/chromium-browser
/usr/bin/chromium-browser
/usr/share/doc/chromium-browser
/usr/share/lintian/overrides/chromium-browser
/usr/share/chromium-browser
find: `/run/user/1000/gvfs’: 权限不够
/etc/chromium-browser
从中判断出安装位置为“/usr/lib/chromium-browser”
/****************方法二*****************/
dpkg -L命令
如果已知软件使用apt-get install命令安装的,可以使用这种方法
dpkg -L chromium-browser
/****************方法三****************/
whereis命令
aaa@qq.com:~$ whereis chromium-browser
chromium-browser: /usr/bin/chromium-browser /usr/lib/chromium-browser /etc/chromium-browser /usr/share/chromium-browser /usr/share/man/man1/chromium-browser.1.gz
从中判断出安装位置为“/usr/lib/chromium-browser”
3)这个问题应该理解为你大概知道一个库叫什么,如何找到这个库,毕竟你应该知道自己到底想安装什么,不能乱安装。
可以apt search eigen找到你要的包然后再apt install xxx
暴力一点儿的:apt install *eigen* 安装所有带这个关键词的包(!!!有风险,除非你明确知道这么装没问题,即包含这个关键词的包你都需要,否则不要轻易尝试,先明确自己要装什么在装不香吗?!!!)
9.* 花一个小时学习 Vim ,因为你迟早会用它。你可以在终端中输入 vimtutor 阅读一遍所有内容。我们不需要你非常熟练地操作它,只要能够在学习本书的过程中使用它输入代码即可。不要在它的插件上读费时间,不要想着把 Vim 用成 IDE ,我们只用它做文本编辑的工作。