当前位置: 首页 > news >正文

matlab 求向量的交集_MATLAB | TAM 211 存活指南 V3.0

6d3021dbca924eb2ae5591e30fe50ffc.png

点击蓝字 关注我

47e6053688092d76d0b9f6472d449f10.png 524eaf7e2804a2ebf3bf73322adc42a8.png

本文大部分内容为2019年初次接触 TAM 211时所写,后续存在少量修改与增补。叙述时间可能有点错乱,凑合着看吧。

新的学期,我们迎来了 TAM 211 , 静力学的课程。虽说这是一门 水课 轻松愉快 的课,但每月两次(也有可能是四次)的 Quiz 总也是让人心惊胆颤的。

得益于暑期实验室项目的要求,对 MATLAB 的基本操作我也算是小有所成。因此,为了服务广大的 ME, CE 人民,我特地在暑的尾巴加班加点改出了这篇 MATLAB教程,开学大礼包不客气哟。

话不多说,请看学习笔记:

1cb98f05f360b29117f874f126598dba.png

学前预热

b39954c6185f2300ed1cd00c1780e0d1.gif

MATLAB 的性能十分出色,它比其他程序(比如说 Python )的优越之处在于完善的帮助系统。

当你码代码遇到了一个忘记使用方法的函数时,你就可以在命令行窗口打上

help xxx

它会自动告诉你这玩意该怎么用!

如果是直接忘记应该用什么函数了,也可以上网百度搜素,各种博客与论坛上面会有很多解决方案,总有一款适合你。

b39954c6185f2300ed1cd00c1780e0d1.gif b39954c6185f2300ed1cd00c1780e0d1.gif

因为直接在命令行窗口编写程序或者进行计算的话是不能修改已经运行过的东西的。而且一按回车就直接运行而不是换行(使用Enter+Shift),所以请务必 使用脚本(Script)  窗口!这能带来很大的便利。

b39954c6185f2300ed1cd00c1780e0d1.gif b39954c6185f2300ed1cd00c1780e0d1.gif

在做作业的时候,可以不用做一题删一行,而是把原过程留着,打上注释(Ctrl+R, Ctrl+T 可以取消注释),方便事后检查错误之处(比如说在 211 quiz 之前或在 FlipitPhysics 成绩出来之后)。

b39954c6185f2300ed1cd00c1780e0d1.gif b39954c6185f2300ed1cd00c1780e0d1.gif

   设置 MATLAB 搜索路径

在使用的过程中,MATLAB的函数搜索仅仅包含当前文件夹与搜索路径中的文件。

4288ac2e5d6c5a64e549ad0ec6e53007.png

当前文件夹

e880fe23913725ce6264296661f39317.png

MATLAB 搜索路径

因此,在使用自己写的或者其他外置函数时,需要事先把它放到搜索路径中。过程也很简单:

主页 - 设置路径 - 

添加文件夹/添加并包含子文件夹

b39954c6185f2300ed1cd00c1780e0d1.gif

TAM211

相信大家在之前的ECE110中也经历过这种事情:经过重重复杂计算,写了慢慢一纸的 A4 ,终于把答案给算出来并且被Prairielearn 评为正确,还需要 再来一遍 才能满分通过。然而,当自己重复那个复杂操作的时候一不小心出来了个啥岔子,于是就 再来亿遍 了。

这种情况在你使用 MATLAB 进行解题的时候就绝对不会发生了,因为 MATLAB 是不会出错的!要错就是自己错了。

如果答案很不幸地又错了,那就肯定是阴险狡诈的题目不仅仅改变了数据的大小,还更改了某个条件。这个时候就认命重做亿遍吧。

b39954c6185f2300ed1cd00c1780e0d1.gif

   Solve([f1,f2,...],[x1,x2,...])

MATLAB 中的 solve 函数接受两个矩阵,前一个矩阵输入函数关系,后一个矩阵输入变量名字。它输出变量的一个解或多个解。

但要注意的是:

1. 使用本函数之前必须先声明变量!

9063d9ad2cb71bf5489f6b57b79fbfc2.png

事先声明变量

2. 输入的是包含一个或多个函数关系式的矩阵,不是其他杂七杂八的东西!

72a71551048950c07fda8a20026c9552.png

函数关

系式正

确示范

函数关

系的错

误示范

c7058d2909712d38428795505546d68d.png

3. 函数关系中需要两个等号连用!!

一个等号是赋值,两个等号才是等于

4. 最终还需要用 [x y] = solve() 来进行赋值 

88c345de4ca63c56de5dec820ae1922a.png c7b0aadfb3c29e480df8ed5847d16763.png

懒得赋值

------------------------------

进行赋值

这个东西十分神秘,它的赋值方向不是一一对应的,而是一一对应的。

c19fd42a74721f3aaa340dd3ff143713.png

如果我们写了一句

[x y] = solve([f1 f2],[x y])

那么什么都不会发生

但如果写的是

[y x] = solve([f1 f2],[x y])

神奇的事情就发生了

本该是赋给y的值变到x上去了!

总结来说,solve 函数的赋值方式还是一一对应的。它的对应方式和变量声明的顺序无关,只与 solve 这一行中变量使用的顺序有关。

图解如下

a87fb285644fd599bd566a5866d1521a.png b39954c6185f2300ed1cd00c1780e0d1.gif

有关 solve() 的两个小技巧:

syms 并不仅仅支持解方程,它还可用于其他含参的运算

8f19fd5da21ae6e56cc5ef936ee3a859.png

例如来自老白的 H9

我们就可以先声明参数 a 与 b ,然后进行莫得感情的乘方运算。

f459d2ee244643736e179ed62f8615a0.png

代码

53e73465fbbce28c64a82f417827714e.png

结果

它也可以用于直接进行含参的方程的求解。

77e5b25629dee2c4023c4fe351fa6def.png

代码

73bf43b435d9acca450cf622f79ba8f4.png

结果

很多时候 solve 得出的结果是一串计算式,还需要复制粘贴二次求答案。

3a702ab76b329660eded88a6c7fd1f2b.png

这并不是最复杂的那一个,但肯定是最典型的

此时我们就可以和 double() 函数连用直接打出需要的答案来。

001807678945b6bdbcdc8c26ba58d239.png

代码

0cd0df63bb190e33d7d97dbe3e24a8c6.png

结果

感兴趣的同学可以验算一下 x 的值到底是不是348.5507 哦。

b39954c6185f2300ed1cd00c1780e0d1.gif

   cross(V1,V2)

这玩意大家应该都挺熟悉的,就是用来求两个三维向量叉乘结果的函数。其中 V1 与 V2 分别就代表了那两个向量。

此函数一般用于求某个力关于某个点的 momentum, 需要

首先将 力 与 那个点到力的作用点 这两个向量表示出来,

无脑叉乘,

最后左手定则判断方向就搞定了。

a6bd242166ae7ef45e9945df9b262310.png

比如说这题

只需要注意:

三维向量才存在叉乘,所以如果题目给定条件是二维的,需要简单转化为三维坐标才行。

b39954c6185f2300ed1cd00c1780e0d1.gif b39954c6185f2300ed1cd00c1780e0d1.gif

 acosd(x) 三角函数相关

关于三角函数,需要知道三点:

1. a... 代表反三角函数 arc...

2. x 默认为是弧度制的

3. ...d 接受角度制

b39954c6185f2300ed1cd00c1780e0d1.gif b39954c6185f2300ed1cd00c1780e0d1.gif

norm(A)

这个函数用于求某个向量的模。

可被用于:

a36449e4adff3c163a44f1eedefa589f.png

求两向量间夹角

9d0cfa2789dff39794db7d1bfe771521.png

求各种投影

34a65c5109357a36bf9c364c1855b51e.png

求某个方向上的单位向量

以及其他一切用到向量的模的地方

很简单也很实用的函数,没啥好注意的。

b39954c6185f2300ed1cd00c1780e0d1.gif

PHYS212

虽说我们在考试的时候用不了 MATLAB ,但是在平时做题学习时的简单使用能够极大地减少埋头按计算器的时间。

当然,需要配合以下几个小技巧

否则只能起到事倍功半的效果

b39954c6185f2300ed1cd00c1780e0d1.gif

储存常量

做题的时候是不是经常忘记这个常量是多少,然后往前使劲翻页寻找它的大小或者百度搜索找到一堆不相干的东西?

149dad278d77cdef54cd989af4d2e0f2.png

想象中的百度百科

d3e5383505f023eabc10868d444c8d86.png

实际上的百度百科

更不用说一些难以言说的希腊字母了。没个好一点的输入法和标准一点的拼音你就连打都打不出来。

e069c05f5054f7fe16cc74f959264402.png e21846a838cbb73f793a6464afdc6095.png 61990bb236550edde6eaa578a2c2a175.png 44e8acc9049266ba3ef77a67c2fdded3.png 683d86cc8cbbb9cc12411322bbe5c8d3.png

这时候我读书少没文化就体现出来了

因此,我们可以把常数都一次性储存在 MATLAB 的工作区中,需要的时候直接调用就可以了。

e2e00c20abe592fd26bc0d51236ed820.png

目前为止这学期有用过的几个常量

也可以直接写在脚本的最上方以防止被覆盖。

b39954c6185f2300ed1cd00c1780e0d1.gif b39954c6185f2300ed1cd00c1780e0d1.gif

记录公式

也没啥技术含量,就是把要用的公示写在最上方并且注释掉,方便复制粘贴而已

0195f9abd1ba58617024fa321174fb66.png

写出长长一串

b39954c6185f2300ed1cd00c1780e0d1.gif b39954c6185f2300ed1cd00c1780e0d1.gif

科学记数法的简便表示

之前我只会用 *10^n 来表示科学记数法,于是用 MATLAB 来解题的时候就显得很傻。

908fe04b5071ec5c1719331c70715fc5.png

显得很傻

有时觉的还是像我平时在计算机上做的那样无脑加零比较方便,即使有时候双手双脚都不够数零的个数,检查也很麻烦。

5e4c533db26d1b8ddaf7583a8e33ee97.png

不那么傻

直到后来,我终于学会了科学记数法:

775c3be6668e79403643070cafefb9f2.png

显得很聪明

真的不要太方便啊!

b39954c6185f2300ed1cd00c1780e0d1.gif b39954c6185f2300ed1cd00c1780e0d1.gif

int(fx,x1,x2)

这个函数是专门用来求积分的,它接受一个表达式 fx, 积分开始值 x1 与积分结束值 x2(当然有些时候会是无穷大 inf),输出的就是定积分的结果了,也可用于不定积分的求解。

0bf56080f456a4cdb4af65e1a020b993.png c833ffaf86448aa12d524a232f9d4f14.png

例题

2d4a18b7d94323ba1a26aca1cdd9c6c0.png

它只有一个注意事项项:

需要事先声明变量

可用于 potential (电势差)的计算,十分好用。

b39954c6185f2300ed1cd00c1780e0d1.gif b39954c6185f2300ed1cd00c1780e0d1.gif

多重积分 (Iterated Integrals)

原理相同,只是连续使用多次 int 函数罢了

实例:

97e0f25191619462d495a0dd7095bae4.png

解:

syms x y z

mz = int(x^2+y^2,z,0,sqrt(9-y^2));

mzy = int(mz,y,3*x,3); %连用三次

mzyx = int(mzy,x,0,1); %每次迭代即可

disp(double(mzyx))

得:

>> H59E50

   11.2000

b39954c6185f2300ed1cd00c1780e0d1.gif

MATH241

学期初, MATLAB 在数学课上的应用在矩阵领域:

zeros()     ,     ones()     ,     eyes()等

得到矩阵

A‘     ,     inv(A)     ,     max()等

矩阵操作

A(:,1)等

矩阵索引

之后会需要进行一些图像的打印,详见下文:

5c74b25452b290e7437b89f0f4efffe9.png

MATLAB | 三维绘图与等高线绘制

当然

这些都是没用的。

你以为老白的题目是靠 MATLAB 就能解决的吗?

别做梦了!

老老实实地去钻研课件

总而言之, MATLAB 并不只是一个绘图软件,也不仅仅是高级一点的计算器。对于将来的数据处理与仿真模拟来说,它更是不可或缺的。因此,多学一些操作手法与内置函数(包括一些外加的工具箱)还是十分有必要的。希望大家在即将到来的考试/Quiz中能够取得好看的成绩吧!

571907059489c099f506433a037d242e.png e7c592d5d5aad1ec98ae82379f6160a6.png

扫码关注我

盯住点赞与在看的手

bd6e404adbdd19876349dd62acf05757.gif

相关文章:

  • idea通过svn上传_IntelliJ IDEA下的SVN使用(傻瓜式教学)
  • float拆分_Java 拆分PDF文档
  • 降龙十八掌
  • 删除wkNtFsLdf.dat文件(转)
  • swiper 移动端选项卡_UE4 助力高品质移动游戏(2)-移动平台光照
  • Linux 中文网站链接
  • python 正则匹配png_Python正则表达式之初始篇:字符匹配
  • jq获取页面高度_jquery常见获取高度
  • 用XML作sql和web应用的桥
  • 梅林安装opkg后安装iperf3_压滤机安装时需要注意的事项和安装后调试
  • 使用VSS-本地练习最基本的用法
  • 操作excel方便么_如何免费将Excel转PDF?
  • QQ斗地主记牌器主程序脱壳并解除使用次数限制
  • 《rust腐蚀》建服视频教学_二年级上册语文识字4田家四季歌朗读+视频+知识点+图文解读+练习...
  • 今天玩得很开心
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Apache Spark Streaming 使用实例
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • nfs客户端进程变D,延伸linux的lock
  • Node 版本管理
  • Redis 懒删除(lazy free)简史
  • windows下mongoDB的环境配置
  • 分布式任务队列Celery
  • 观察者模式实现非直接耦合
  • ------- 计算机网络基础
  • 将回调地狱按在地上摩擦的Promise
  • 今年的LC3大会没了?
  • 那些年我们用过的显示性能指标
  • 通信类
  • Hibernate主键生成策略及选择
  • Java总结 - String - 这篇请使劲喷我
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (6)STL算法之转换
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (k8s中)docker netty OOM问题记录
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (生成器)yield与(迭代器)generator
  • (十六)一篇文章学会Java的常用API
  • (转)Scala的“=”符号简介
  • (转)人的集合论——移山之道
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .cfg\.dat\.mak(持续补充)
  • .net refrector
  • .net 简单实现MD5
  • .net反混淆脱壳工具de4dot的使用
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @Controller和@RestController的区别?