写在前面
本博客用于记录(或者说是用来备份)我在2021a 高等数学实验课 梁志勇老师的课上写的程序习题
所有的代码均通过编译,matlab版本为R2016a
课程链接:高等数学实验
数学系吴笑千老师2015年录的这课,不错哒
由于题量的关系和对于篇幅的考虑,故一章到两章会做一篇博文,更多后续章节的答案可以点击我的头像查看或者点击下面的链接查看:
第三、第四章
第五、第六章
第七章
网上参考答案
1.5 第1章习题
- 执行下列指令,观察其运算结果, 理解其意义:
(1) [1 2;3 4]+10-2i
(2) [1 2; 3 4].*[0.1 0.2; 0.3 0.4]
(3) [1 2; 3 4].[20 10;9 2]
(4) [1 2; 3 4].^2
(5) exp([1 2; 3 4])
(6)log([1 10 100])
(7)prod([1 2;3 4])
(8)[a,b]=min([10 20;30 4])
(9)abs([1 2;3 4]-pi)
(10) [10 20;30 40]>=[40,30;20 10]
(11)find([10 20;30 40]>=[40,30;20 10])
(12) [a,b]=find([10 20;30 40]>=[40,30;20 10]) (提示:a为行号,b为列号)
(13) all([1 2;3 4]>1)
(14) any([1 2;3 4]>1)
(15) linspace(3,4,5)
(16) A=[1 2;3 4];A(:,2)
很简单,直接在对话框内一条一条输入即可
题外话,通过11题和12题结果,容易发现
在matlab中,对于2X2矩阵的地址编码为:
第1列 | 第2列 | |
---|---|---|
第一行 | 1 | 3 |
第二行 | 2 | 4 |
改写为(行数,列数),为(这个其实是常识吧)
第1列 | 第2列 | |
---|---|---|
第一行 | (1,1) | (2,1) |
第二行 | (2,1) | (2,2) |
- 执行下列指令,观察其运算结果、变量类型和字节数,理解其意义:
(1) clear; a=1,b=num2str(a),c=a>0, a= =b, a= =c, b= =c
(2) clear; fun=‘abs(x)’,x=-2,eval(fun),double(fun)
也很简单
注意,这里a==c的判断结果为真,因为逻辑函数等于二进制中的0与1,即对应十进制中的0与1
观察变量,易知a为双精度浮点数(double),b为字符(char),c为逻辑数据(logical)
- 本金K以每年n次,每次p %的增值率(n与p的乘积为每年增值额的百分比)增加,当增加到rK时所花费的时间为
(单位:年)
用MATLAB表达式写出该公式并用下列数据计算:r=2, p=0.5, n=12.
别问,问就是懒得存代码了,直接交的图片
- (1) 用z=magic(10)得到10阶魔方矩阵;
(2) 求z的各列元素之和;
(3) 求z的对角线元素之和(提示:先用diag(z)提取z的对角线);
(4) 将z的第二列除以;
(5) 将z的第3行元素加到第8行。
2.1.7 程序习题
- (1)设x为一个长度为n的数组,编程求下列均值和标准差
并就x=( 81, 70, 65,51, 76, 66, 90, 87, 61, 77)计算。
需要注意求和符号的位置和求和的对象
【法一】函数+循环
写这种主要是为了试试函数怎么写和运行
记得一个函数最好单独写一个m文件,然后放在同一个目录里,在main.m文件中调用即可(不一定命名要是main,只是大家一般都这么命名)
function [x_bar,s] = average_std(x)
n = length(x);
x_bar = 0;
for i=1:n
x_bar = x_bar + x(i);
end
x_bar = x_bar/n;
s2 = 0;
for l=1:n
s2 = s2 + x(l)^2;
end
s = sqrt(1/(n-1)*(s2 - n*x_bar^2));
end
clear all;
format short g;
x = [81 70 65 51 76 66 90 87 61 77];
[x_bar,s] = average_std(x)
【法二】矩阵运算
这么写就显得数学很牛,而且整个代码也是短小精悍hhh
clear all;
x = [81 70 65 51 76 66 90 87 61 77];
n = length(x);
x_bar = sum(x)/n
s = sqrt((sum(x.^2)-n*x_bar^2)/(n-1))
输出参考:
- (3)用循环语句形成Fibonacci数列 F1 = F2 =1, Fk = Fk-1 + Fk-2 , k=3,4,…。并验证极限
(提示:计算至两边误差小于精度 10-8)
clear all;
F(1)</