2022.3.11 MATLAB课程作业

这篇具有很好参考价值的文章主要介绍了2022.3.11 MATLAB课程作业。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

任务一:

问题描述:

  1. 分别使用Matlab的ezplot和isosurface函数绘制附件所示函数图形;

ezplot心形函数:

2022.3.11 MATLAB课程作业

只有这一句,由于这个编辑器不支持MATLAB语法,自身又有语法规则,只能使用别的方法粘贴过来

ezplot('x^2 + (y - (x^2)^(1/3))^2 - 1',[-5,5])

中间用单引号引起来的就是函数的解析式,后面中括号里面表示的是 x 的范围(可写可不写,如果不写的话,默认范围是-2π到2π)

常见错误: x 平方之后再开三次方的那个部分,如果直接直接写成x的二分之三次方的话,会发现画出来的图形只有半边,因为这么写的话,x的取值会无法取到负数,如果是先进行 x 的平方再进行开三次方(开n次方根,可以表示为 n 分之一次方)的话那就没有这个顾虑了,因为实数范围内的平方是绝对成立的

参考结果:
2022.3.11 MATLAB课程作业
若将表达式右边的 -1 更换为其他的数,例如 -5 ,可以得到不同形态的心形

isosurface心形曲面函数

2022.3.11 MATLAB课程作业

[x,y,z] = meshgrid(-10:0.1:10);

V = (x.^2 + 9/4 .* y.^2 + z.^2 - 1).^3 - x.^2 .* z.^3 - 9/80 .* y.^2 .* z.^3;

isosurface(x,y,z,V,0);

  1. 要绘制这个图形,首先得准备数据,使用meshgrid生成数据,也就是第一句
  2. 第一句的意思是对于 x y z ,在 -10 到 10 这个区间,生成一个三维的数据,每个数据大小的间隔为 0.01
  3. 然后就是利用刚刚生成的数据进行函数解析式的计算,也就是第二句
  4. 由于数据是一个三维的矩阵,只要涉及到矩阵乘法,就得考虑是叉乘还是点乘(叉乘和点乘的区别在上一篇的MATLAB的文章中讲解过),幂次方也是乘法的一种,所以也有点幂和叉幂的区别,同于矩阵乘法
  5. 在这里的要求显然是所有的数据进行计算之后都位于原来的位置(把这个三维矩阵想象成一个三维的坐标系,每个数据都是其中的一个点,他们都有一个唯一的坐标),所以,进行计算的时候需要使用到点乘
  6. 最后,就是使用 isosurface 这个工具把数据可视化了,其中使用的 x y z 必须是前面生成数据的时候使用的三个变量,这样的话才能使用到有效的数据进行图像绘制

isosurface 的语法规则在PPT里面已经讲了,更加具体详细的可以到官方文档查阅

https://ww2.mathworks.cn/help/matlab/ref/isosurface.html#mw_79c88feb-20af-42e7-9937-655b16f4e983

参考结果:
2022.3.11 MATLAB课程作业

任务二:

问题描述:

  1. 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹有多高?
  2. 编程求阶乘数列{n!}前20项的和;

小球下落:

height = 100;
sum = 0;
for i=1:10
    sum = sum + height;
    height = height / 2;
    sum = sum + height;
end

下落时有一个距离,弹起来之后又有一段距离,两段距离都需要累加,符合顺序结构,循环里面先加了一次距离,后面又加了一次距离

  1. height 表示的是当前高度
  2. sum 表示的是总共经历的路程
  3. 循环中的 i 用于表示当前是第几次下落

重点:
for 循环的语法:
for 循环变量 = 起点(:步长(可选,不写的话默认为1)):终点
循环体
end

for i=1:10
    %循环体
end

具体用法参考上面黑色的这一段

参考结果:
2022.3.11 MATLAB课程作业

求阶乘:

result=0; 
for i=1:20  
 sum=1; 
	for j=1:i    
		sum=sum*j; 
	end
 result = result + sum; 
 end
disp(result);

  1. result 用于存放累加之后的结果
  2. sum 用于存放 i 的阶乘
  3. 由于每次进行计算的结果相互独立,所以 sum 进行计算完之后的结果要变回 1 ,以参与下一次运算
  4. disp() 这是用于显示某个变量的值,相当于输出语句

在这里要感谢某个人,在寒假教她的时候,我发现了改进的方法,只需要一层循环就可以达到这个效果

result=0; 
sum = 1;
for i=1:20
 sum = sum * i;   
 result = result + sum; 
 end
disp(result);

为什么只需要一层循环?
n 的阶乘为 (n - 1)的阶乘乘以 n , 所以,每次进行计算的时候利用上一次循环计算出的结果即可

任务三:

问题描述:

  1. 用for循环生成一个长度为100的行向量A,其通项是log(n),其中n为数列下标;
  2. 分别计算A向量前20、40、60、80及前100项的和;
  3. 取A的前20项,重新赋给A,之后在A的下方新增一个元素全部都是1行向量,形成矩阵B,并计算矩阵的转置C;
  4. 分别计算A * C、C * B和B * C的结果;

生成行向量A:

A = [];
for i = 1:100
    A(end + 1) = log(i);
end

第三行用于在向量 A 的末尾添加元素,end 表示的是 A 中最后一个元素的位置,在没有使用分号表示要换行的前提下,在末尾添加的元素都是在行的末尾添加

计算前n项和:

sum = 0;
for i = 20:20:100
    for j = 1:i
       sum = sum + A(j); 
    end
    fprintf("前%d的和为%.2f\n",i,sum);
    sum = 0;
end

  1. MATLAB中,使用下标访问矩阵中的某个元素是使用小括号,而不是像 C 语言和Python那样使用中括号
  2. fprintf 的用法和作用与 C 语言一致,参考 C 语言的用法即可
  3. 计算前n项和的方法参考上面计算阶乘和的思路

取A的前20项,新增一向量,矩阵的转置:

取A的前20项:

A(21:100) = [];

我使用的是把后面那么多项全部去掉,若是选择将前20项赋给一个新的变量,也可以

新增一向量:

使用 ones 函数

B = [A;ones(1,20)];

ones() 函数括号内的参数表示行和列,例如:ones (3,5) 表示的是生成一个元素值全是 1 的 3 * 5 的矩阵

矩阵的转置:

C = B';

在矩阵的名字后面加个单引号,就是表示对该矩阵进行转置
例如 3 * 5 的矩阵转置之后会变成 5 * 3 的矩阵,即 行数变成列数,列数变成行数

具体是怎么实现的呢?其实是个很简单的操作,C 语言课上也讲过

a [ i ] [ j ] 和 a [ j ] [ i ] 进行交换即可

计算矩阵叉乘和点乘的结果:

计算条件和计算方法参考我上一篇MATLAB的博客,最终的结果记得输出

disp(A);
newline;
disp(B);
newline;
disp(C);
newline;
disp(A*C);
newline;
disp(C*B);
newline;
disp(B*C);
newline;

newline用于在输出结果的窗口制造一个空行,这里也将前面部分的结果一起输出了

任务三这些代码段全部拼接在一起,就是最终的结果文章来源地址https://www.toymoban.com/news/detail-407901.html

到了这里,关于2022.3.11 MATLAB课程作业的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CSS中的transform属性有哪些值?并分别描述它们的作用。

    前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一

    2024年02月12日
    浏览(39)
  • 【环境配置】MATLAB r2022b+opencv3.4.1+mexopencv3.4.1+Windows 11 配置

    参考链接: mexopencv官方文档:介绍了全部流程 补充官方文档Configure OpenCV出现的问题:直到Configure后没有红色,再点击Generate 最新Opencv 与 VC++ 的版本对应关系(2023-04-08) MATLAB支持和兼容的编译器 - Windows 文章起源:需要在matlab中调用opencv库,搞了一天半 需要下载的东西:(

    2024年02月09日
    浏览(46)
  • 【任务分配】基于matlab市场的方法求解多机器人任务分配问题【含Matlab源码 3992期】

    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划

    2024年03月11日
    浏览(44)
  • 完美解决Window11任务栏合并图标的问题。

            windows 11的任务栏图标是不能设置不合并的,在打开多个相同的应用时任务栏图标始终是合并的,对于习惯拆分的人来说很难用。因为不喜欢合并的又怕用网上第三方的组件有病毒或者广告,所以我就自己搞了一下。         最终的效果图就是下图这样的。  

    2024年02月05日
    浏览(83)
  • 【任务分配】基于市场方法求解多机器人任务分配问题附Matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信       无

    2024年04月09日
    浏览(46)
  • cuda11.7+visual studio 2022 编译时出现MSB3721问题

    公司项目更新了vs和cuda,我更新完之后发现: C:codeSSRImplDevgEcOG.Common.XrayRegistration_nc“C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.7binnvcc.exe” -gencode=arch=compute_86,code=“sm_86,compute_86” --use-local-env -ccbin “C:Program FilesMicrosoft Visual Studio2022CommunityVCToolsMSVC14.34.31933binHostX

    2024年02月04日
    浏览(55)
  • mysql创建四张表 分别存储 学生信息 课程信息 分数表 教师信息表

    学生信息表 Student 字段名 字段类型 字段约束 / 含义 Sno Varchar(3) Not null / 学员编号 Sname Varchar(4) Not null / 学员姓名 Ssex Varchar(2) Not null / 性别 Sbirthday Datetime 生日 Classnum Varchar(5) 班级号 CREATE TABLE STUDENT ( SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL, SSEX VARCHAR(2) NOT NULL, SBIRTHDAY DATETIME,

    2024年01月18日
    浏览(49)
  • MAC版Lightroom Classic 2022(Lrc2022)v11.5已发布,支持M1/M2和Intel三种系统,解决无法成功安装等问题

    近期MAC版Adobe Lightroom Classic更新了,全新的Lr2022新版本号是11.5,经小编测试是支持M1/M2芯片和Intel三种系统安装的,大家可以放心的安装使用了! lrc是一款桌面照片编辑和管理,照片后期处理软件,数码摄影师必备工具,主要面向数码摄影师、图形设计等专业人士和高端用户

    2024年02月05日
    浏览(84)
  • 【用C语言描述数据结构】课程设计:歌手比赛系统

    ✅作者简介:一名在读大二学生,希望大家多多支持👍👍👍 🔥系列专栏:数据结构 💬个人主页:梦园的CSDN博客 文末附有全部代码哦 💖💖 文末附有全部代码哦~ 设计一个简单的歌手比赛绩管理程序,对一次歌手比赛的成绩进行管理,使用 链表 实现,基本的设计要求如

    2024年02月03日
    浏览(71)
  • 头歌操作系统 课后作业3.1:进程的描述与状态

    第1关:1 号进程的核心栈内容分析 编程要求 根据相关知识,回答问题: (将答案填写在 /data/workspace/myshixun/第三关.txt 中) 1 号进程的核心栈栈底的位置是多少? 1 号进程(用 si)执行函数 task1 中的第一个 int 0x81 指令后,核心栈栈顶的位置是多少?从栈底到栈顶依次放了哪

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包