南京邮电大学通达学院《数学实验》MATLAB实验答案
——赠nmy
南京邮电大学通达学院《数学实验》MATLAB实验答案
答案更新时间:2023.04.5,已更新完成,如无错误不在更新
为了方便核算,我在代码中单独将m定义为自变量运算或者直接以m=117代入,作业中可以直接代入,即代码中不出现m。本机版本为 MATLAB R2020b
由于作者解答能力有限,难免有瑕疵错误之处,还请多多海涵!本答案仅供学习参考之用,请勿直接抄袭。有错漏之处,烦请指正。联系QQ:1415520898,如有问题欢迎交流。
这里引用@dew_142857博主的相关文章最新MATLAB R2020b超详细安装教程(附完整安装文件)实测有效,按照步骤一步步来即可,为方便同学下载,这里将文中所提向公众号索要的百度网盘链接放在下方
另外安装好的MATLAB约为96.6 GB ,请提前规划好磁盘空间。
链接:https://pan.baidu.com/s/1NExZ_v-QN4Xbu4Jk1C0dEA
提取码:7won



log(x)——>lnx;inf——>无穷


exp(x)——>eˣ;diff(y,x,n)——>y对x的n阶导函数



第一小问答案不要忘记+C;int——>处理定积分、不定积分

2020版本

写全应该是taylor((117/200+sin(x))*cos(x),x,‘Order’,5,‘ExpansionPoint’,0),在x=0处可省略。
2010版



本次随机的中间数据为:
[8226958330713791/9007199254740992, (2^(1/2)*469134536469018791^(1/2))/671088640, ((2^(1/2)*469134536469018791^(1/2))/671088640 + 117/100)^(1/2), (((2^(1/2)*469134536469018791^(1/2))/671088640 + 117/100)^(1/2) + 117/100)^(1/2), ((((2^(1/2)*469134536469018791^(1/2))/671088640 + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2), (((((2^(1/2)*469134536469018791^(1/2))/671088640 + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2), ((((((2^(1/2)*469134536469018791^(1/2))/671088640 + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2), (((((((2^(1/2)*469134536469018791^(1/2))/671088640 + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2), ((((((((2^(1/2)*469134536469018791^(1/2))/671088640 + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2), (((((((((2^(1/2)*469134536469018791^(1/2))/671088640 + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2) + 117/100)^(1/2)]




本题用到的符号较多,进行下一题时使用clear清除变量


1.7.1



1.7.2






1.8.2

也可以使用下方代码,效果一样





plot是绘制二维图形,并且是x,y的表达式是已知的或者是形如y=f(x)这样确切的表达式plot函数的基本调用格式为:plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。
ezplot是画出隐函数图形,是形如f(x,y)=0这种不能写出像y=f(x)这种函数的图形ezplot一元函数绘图函数ezplot(fun) ezplot(fun,[min,max])
fplot(y,[a,b])精确绘图





[X,Y] = meshgrid(-5:0.1:5);可以换成书上形式:
x=-5:0.1:5;y=x;
[X Y]=meshgrid(x,y);



第一个不动点为-0.0084
第二个不动点为119.0084
(2)先定义一个普世性的迭代方法,用M文件保存


函数收敛,只要初值不取14165^(1/2)/2+119/2 即第二个不动点,收敛值与初值的选取关系不大,总是收敛于-0.0084, 只有初值取 14165 ^(1/2)/2+119/2,迭代函数才以它为极限;
收敛值一定是不动点其一;

m=117;
syms x;
f=inline('1-2*abs(x-1/2)');%设定函数
x0=1/4;%设定初值
for i=1:1:10
plot(i,f(x0),'*');%用*作图,可以在括号内添加'MarkerSize',20放大点
x0=f(x0); %更新x0的值,x0类似于C语言的static类型变量
hold on %将各个点划在一张图上
end
hold off

几个图像最后都是趋于0,如果没有的话要将i的终值调大,我的后三个图的i=1:1:100;



该题是P76页例二


%MARTIN函数代码
function Martin(a,b,c,N) %N为迭代次数
f=@(x,y)(y-sign(x)*sqrt(abs(b*x-c)));
g=@(x)(a-x);
m=[0;0];
for n=1:N
m(:,n+1)=[f(m(1,n),m(2,n)),g(m(1,n))];%表示矩阵m的第n+1列。冒号表示选择所有行
end
plot(m(1,:),m(2,:),'kx');
axis equal %横纵坐标采用相等单位长度
%循环迭代N次,N是预定义的数字。在循环内部,代码更新矩阵m中的值。 具体来说,该代码通过将其第一个元素设置为f(m(1,n),m(2,n)),将其第二个元素设置为g(m(1,n))来更新m的第n列。 第一行0后面的分号表示矩阵m初始化为两行N列的列向量。
m=117;
Martin(m,m,m,5000)
Martin(-m,-m,m,10000)
Martin(-m,m/1000,-m,15000)
Martin(m/1000,m/1000,0.5,20000)






(1)
%此小问无需在卷面作答,且每人选的数不一样,仔细看题目!!!
m=117;
syms x;
diff(subs((100*x+117)/(x^2+100),x,117^(1/3))) %对默认的变量进行一次的求导
%我取的是a=100,c=1;最后结果的绝对值应小于1才可以,否则另取
ans =
0
(2)
syms x;
m=117;
f=inline('(100*x+117)/(x^2+100)');
x0=10;% 任取一个初值
for i=1:20;
x0=f(x0);
fprintf('%g,%g\n',i,x0^3);
end
%我的运行结果
1,174.209
2,136.506
3,124.607
4,120.106
5,118.291
6,117.54
7,117.227
8,117.095
9,117.04
10,117.017
11,117.007
12,117.003
13,117.001
14,117.001
15,117
16,117
17,117
18,117
19,117
20,117
(3)
根据个人体会回答
函数迭代的收敛速度与初值的选取关系不大;
迭代初值对迭代的收敛性存在影响,但是这种影响存在不确定性,没有发现可循的规律;
用自己的话改一下即可

syms x;
y=sin(x);
y1=taylor(sin(x),x,'Order',2);
y2=taylor(sin(x),x,'Order',4);
y3=taylor(sin(x),x,'Order',6);
fplot([y y1 y2 y3])
xlim([-3/2*pi 3/2*pi])
grid on
legend('sin(x)','approximation of sin(x) up to O(x^1)','approximation of sin(x) up to O(x^3)','approximation of sin(x) up to O(x^5)')

(2)
syms x;
y=sin(x);
y1=taylor(sin(x),x,'Order',8);
y2=taylor(sin(x),x,'Order',10);
y3=taylor(sin(x),x,'Order',12);
fplot([y y1 y2 y3])
xlim([-3/2*pi 3/2*pi])
grid on
legend('sin(x)','approximation of sin(x) up to O(x^7)','approximation of sin(x) up to O(x^9)','approximation of sin(x) up to O(x^(11))')

(3)


A=str2sym('[117,117-4;6-117,10-117]');%表示符号表达式
[P,D]=eig(A);
Q=inv(P);
syms n;
x=[1;2];
xn=P*(D.^n)*Q*x
xn =
(339*6^n)/2 - (337*4^n)/2 - (559*0^n)/111
2*0^n + (337*4^n)/2 - (333*6^n)/2

A=str2sym('[117,117-4;6-117,10-117]');
B=1/10.*A;
[P,D]=eig(B);
Q=inv(P);
syms n;
x=[1;2];
xn=P*(D.^n)*Q*x
xn =
(339*(3/5)^n)/2 - (337*(2/5)^n)/2 - (559*0^n)/111
2*0^n + (337*(2/5)^n)/2 - (333*(3/5)^n)/2

%教材P136页原题
A=[9,5;2,6];
t=[];
for i=1:20
x=2*rand(2,1)-1;
t(length(t)+1,1:2)=x;
for j=1:40
x=A*x;
t(length(t)+1,1:2)=x;
end
end
plot(t(:,1),t(:,2),'*')
grid('on')

(2)可以看到,迭代阵列似乎在一条通过原点的直线上。
(3)
A=[9,5;2,6]; a=[];
x=2*rand(2,1)-1;
for i=1:20
a(i,1:2)=x;
x=A*x;
end
for i=1:20
if a(i,1)==0
else t=a(i,2)/a(i,1);
fprintf('%g,%g\n',i,t);
end
end
%结果
1,0.911983
2,0.551028
3,0.451391
4,0.418261
5,0.406586
6,0.402388
7,0.400867
8,0.400315
9,0.400115
10,0.400042
11,0.400015
12,0.400006
13,0.400002
14,0.400001
15,0.4
16,0.4
17,0.4
18,0.4
19,0.4
20,0.4
(4)
极限值是图像直线的斜率
按照自己语言组织下面任意一条

书P141相似题
m=117;
A=[m-1,m;1-m,-m];
p=[0.4;0.6];%选择合适初始向量,要求和为1
[P,D]=eig(A)%P每列是特征向量,D主对角线元素是特征值
for i=1:20
p(:,i+1)=A*p(:,i);
end
fprintf('%2f,%2f\n',p)
还可以使用下面的方法求稳定值
m=117;
A=[m,1/4-m;m-3/4,1-m];
x0=[0.4;0.6];
n=10000;
y = A^n * x0
结果
%A=[m,6-m;m-2,8-m]
%A=[m,1/4-m;m-3/4,1-m]
%A=[m-1,m;1-m,-m]
(4)ps:本题较难,可适当放弃
在线性映射迭代中,迭代矩阵的稳定性取决于其特征值的大小和分布。特征值是矩阵的一个重要性质,它描述了矩阵在线性变换下的变化情况。
如果迭代矩阵的所有特征值的绝对值都小于1,那么迭代矩阵就是稳定的,每次迭代后矩阵的元素值都会趋近于一个稳定值。
但是,如果迭代矩阵存在特征值的绝对值大于等于1,那么迭代矩阵就是不稳定的。这种情况下,每次迭代后矩阵的元素值都会趋近于无穷大或无穷小,从而导致迭代结果失效。
另外,如果迭代矩阵存在多个特征值相同的情况,那么迭代矩阵也可能不稳定。这种情况下,迭代矩阵的特征向量可能会出现非常大的幅度波动,从而导致迭代结果不可靠。
因此,对于二维矩阵的线性映射迭代,需要对迭代矩阵的特征值进行分析,以确定其稳定性。如果迭代矩阵不稳定,需要采取一些措施,如调整迭代步长或使用更稳定的迭代算法,以确保迭代结果的可靠性。

%如果默认b>a
>> I=0;
>> m=[];
>> n=1000;
>> for a=1:n
for c=a+1:n
b=sqrt(c^2-a^2);
if(b==floor(b))&(b>a)&(c==b+2)
I=I+1;m(:,I)=[a,b,c];
end
end
end
>> m
m =
1 至 17 列
6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
8 15 24 35 48 63 80 99 120 143 168 195 224 255 288 323 360
10 17 26 37 50 65 82 101 122 145 170 197 226 257 290 325 362
18 至 29 列
40 42 44 46 48 50 52 54 56 58 60 62
399 440 483 528 575 624 675 728 783 840 899 960
401 442 485 530 577 626 677 730 785 842 901 962
>>
公式:a=2m b=m^2-1 c=m^2+1(m>2,m为整数);
即:
{a,b,c}={(2u)^2,(u^2-1)^2,(u^2+1)^2}
上课时默认b>a,下面给出a、b关系不确定是时的代码,无需写在试卷上
abc0=zeros(1000,3);
k=0;
for c=3:1000
b=c-2;
a=sqrt(c^2-b^2);
if(mod(a,1)==0)
k=k+1;
abc0(k,:)=[a b c];
end
end
abc=abc0(1:k,:);
fprintf('所有勾股数 a b c=\n')
disp(abc)

for k=1:200
for b=1:999
a=sqrt((b+k)^2-b^2);
if((a==floor(a))&gcd(gcd(a,b),(b+k))==1)fprintf('%i,',k);
break;
end
end
end
1,2,8,9,18,25,32,49,50,72,81,98,121,128,162,169,200
k为完全平方数或者完全平方数的二倍
预测k在[200,300]之间有200,225,242,288,289

% 方法一:通过法方程组求解
d0=9;
x=[1.5,1.8,2.4,2.8,3.4,3.7,4.2,4.7,5.3];
y=[8.9,10.1,12.4,14.3,16.2,17.8,19.6,22.0,24.1];
d1=sum(x);d2=sum(x.^2);b1=sum(y);b2=sum(y.*x);
A=[d0,d1;d1,d2];B=[b1;b2];
u=A\B;
a0=u(1)
a1=u(2)
error=sum((y-(a0+a1.*x)).^2)
a0 =
2.8304
a1 =
4.0244
error =
0.2409
%方法二:直接求解
x=[1.5,1.8,2.4,2.8,3.4,3.7,4.2,4.7,5.3];
y=[8.9,10.1,12.4,14.3,16.2,17.8,19.6,22.0,24.1];
P=polyfit(x,y,1)
P =
4.0244 2.8304
error=sum((y-(2.8304+4.0244.*x)).^2)%误差
error =
0.2409


(1)
%我的学号尾数是7;故数据是到1920
t=1790:10:1920;
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5];
t1=t(1);x1=x(1);
t2=t(6);x2=x(6);
A=[1,t1;1,t2];
b=[log(x1);log(x2)];
u=A\b;
x0=exp(u(1))
k=u(2)
error=sum((x0*exp(k*t)-x).^2)
x0 =
4.0730e-23
k =
0.0296
error =
8.3863e+03
(2)
t=1790:10:1920;
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5];
y=log(x);
m=length(t);
A=[m,sum(t);sum(t),sum(t.^2)];
b=[sum(y);y*t'];
u=A\b;
x0=exp(u(1))
k=u(2)
error=sum((x0*exp(k*t)-x).^2)
x0 =
2.7207e-20
k =
0.0260
error =
681.9588

x=1:26;
y=[1807,2001,2158,2305,2422,2601,2753,2914,3106,3303,3460,3638,3799,3971,4125,4280,4409,4560,4698,4805,4884,4948,5013,5086,5124,5163];
a=[6000,2,0.01];
f=@(a,x)a(1)./(1+a(2)*exp(-a(3)*x));
[A,resnorm]=lsqcurvefit(f,a,x,y)
f(A,20)
A =
1.0e+03 *
5.7882 0.0025 0.0001
resnorm =
3.3995e+04
ans =
4.7438e+03

x=1:26;
y=[1807,2001,2158,2305,2422,2601,2753,2914,3106,3303,3460,3638,3799,3971,4125,4280,4409,4560,4698,4805,4884,4948,5013,5086,5124,5163];
a=[6000,2,0.1,0.1];
f=@(a,x)a(1)./(1+a(2)*exp(-a(3)*x-a(4)*x.^2));
[A,resnorm]=lsqcurvefit(f,a,x,y)
t=27;
while f(A,t+1)-f(A,t)>=10
t=t+1;
end
f(A,t)
A =
1.0e+03 *
5.3860 0.0021 0.0001 0.0000
resnorm =
9.1025e+03
ans =
5.3409e+03

x=1:26;
y=[1807,2001,2158,2305,2422,2601,2753,2914,3106,3303,3460,3638,3799,3971,4125,4280,4409,4560,4698,4805,4884,4948,5013,5086,5124,5163];
a=[2,0.1,0.1];%r、k、a
f=@(a,x)a(1)*exp(a(2)*x+a(3));
[A,resnorm]=lsqcurvefit(f,a,x,y)
t=27;
while f(A,t+1)-f(A,t)>=10
t=t+1;
end
f(A,t)
A =
2.4511 0.3152 -0.0841
resnorm =
2.3628e+08
ans =
Inf
matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
ruby中有这样的东西吗?send(+,1,2)我想让这段代码看起来不那么冗余ifop=="+"returnarg1+arg2elsifop=="-"returnarg1-arg2elsifop=="*"returnarg1*arg2elsifop=="/"returnarg1/arg2 最佳答案 是的,只需像这样使用send(或者更好的是public_send):arg1.public_send(op,arg2)这是可行的,因为Ruby中的大多数运算符(包括+、-、*、/、andmore)只需调用方法。所以1+2与1.+(2)相同
所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目n行m列的矩阵,每个位置上有一个元素你可以上下左右行走,代价是前后两个位置元素值差的绝对值.另外,你最多可以使用一次传送阵(只能从一个数跳到另外一个相同的数)求从走上角走到右下角最少需要多少时间。输入描述:第一行两个整数n,m,分别代表矩阵的行和列。后面n行,每行m个整数,分别代表矩阵中的元素。输出描述:一个整数,表示最少需要多少时间。
目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标
一、机器人介绍 此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接
情况:我正在编写一个程序来求解素数。我需要解决4x^2+y^2=n的问题,其中n是一个已知变量。是的,必须是Ruby。我愿意在这个项目上花费大量时间。我最好自己编写方程式的求解算法,并将其作为该项目的一部分。我真正喜欢的是:如果任何人都可以向我提供指南、网站的链接,或者关于与求解代数方程特别相关的形式算法的构造的歧义消除,或者向我提供似乎你是读者它会帮助我完成任务。请不要建议我使用其他语言。如果您在回答之前接受我真的非常想这样做,我将不胜感激。该项目没有范围或时间限制,也不以营利为目的。这是为了我自己的教育。注意:我并不直接反对为Ruby实现和使用现存的数学库/模块/其他东西,但我更喜
我发现许多Rails应用程序主要针对企业、社交网络类型的Web应用程序。我看到有人将Ruby与一些出色的OOPS语言(如Java和C#)进行了比较,但我确实发现很难获得一些数学密集型应用程序。非常感谢任何知识渊博的输入(指向示例程序的链接等),其中轻松显示了语言的用法,就像快速启动或显示该语言如何用于各种数学问题一样。 最佳答案 不幸的是,Ruby并没有在数学和科学计算领域涉足太多。目前,有一个名为SciRuby的pre-alpha库它试图为Ruby带来更多面向数学的功能。他们正试图构建一个NumPy/SciPy等价物。SciRub
昨晚看到IDEA官推宣布IntelliJIDEA2023.1正式发布了。简单看了一下,发现这次的新版本包含了许多改进,进一步优化了用户体验,提高了便捷性。至于是否升级最新版本完全是个人意愿,如果觉得新版本没有让自己感兴趣的改进,完全就不用升级,影响不大。软件的版本迭代非常正常,正确看待即可,不持续改进就会慢慢被淘汰!根据官方介绍:IntelliJIDEA2023.1针对新的用户界面进行了大量重构,这些改进都是基于收到的宝贵反馈而实现的。官方还实施了性能增强措施,使得Maven导入更快,并且在打开项目时IDE功能更早地可用。由于后台提交检查,新版本提供了简化的提交流程。IntelliJIDEA