勤將勵勉,勿望再晨。
——贈nmy
一 聲明
南京郵電大學通達學院《數(shù)學實驗》MATLAB實驗答案
答案更新時間:2023.04.28,修改了4.2的存疑部分。已更新完成,如無錯誤不在更新
為了方便核算,我在代碼中單獨將m定義為自變量運算或者直接以m=117代入,作業(yè)中可以直接代入,即代碼中不出現(xiàn)m。本機版本為 MATLAB R2020b
由于作者解答能力有限,難免有瑕疵錯誤之處,還請多多海涵!本答案僅供學習參考之用,請勿直接抄襲。有錯漏之處,煩請指正。聯(lián)系QQ:1415520898,如有問題可通過qq或者評論區(qū)留言方式交流。
二 MATLAB下載
這里引用@dew_142857博主的相關文章最新MATLAB R2020b超詳細安裝教程(附完整安裝文件)實測有效,按照步驟一步步來即可,為方便同學下載,這里將文中所提向公眾號索要的百度網(wǎng)盤鏈接放在下方
另外安裝好的MATLAB約為96.6 GB ,請?zhí)崆耙?guī)劃好磁盤空間。
鏈接:https://pan.baidu.com/s/1NExZ_v-QN4Xbu4Jk1C0dEA
提取碼:7won
也可以在https://matlab.mathworks.com/注冊一個賬戶,直接在線使用
《數(shù)學實驗》練習一
1.1
log(x)——>lnx;inf——>無窮
1.2
exp(x)——>e?;diff(y,x,n)——>y對x的n階導函數(shù)
1.3
第一小問答案不要忘記+C;int——>處理定積分、不定積分
1.4
2020版本
寫全應該是taylor((117/200+sin(x))*cos(x),x,‘Order’,5,‘ExpansionPoint’,0),在x=0處可省略。
2010版
1.5
本次隨機的中間數(shù)據(jù)為:
[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)]
1.6
本題用到的符號較多,進行下一題時使用clear清除變量
1.7
1.7.1
1.7.2
1.8
1.8.2
也可以使用下方代碼,效果一樣
1.9
1.10
plot是繪制二維圖形,并且是x,y的表達式是已知的或者是形如y=f(x)這樣確切的表達式plot函數(shù)的基本調(diào)用格式為:plot(x,y) 其中x和y為長度相同的向量,分別用于存儲x坐標和y坐標數(shù)據(jù)。
ezplot是畫出隱函數(shù)圖形,是形如f(x,y)=0這種不能寫出像y=f(x)這種函數(shù)的圖形ezplot一元函數(shù)繪圖函數(shù)ezplot(fun) ezplot(fun,[min,max])
fplot(y,[a,b])精確繪圖
1.11
[X,Y] = meshgrid(-5:0.1:5);可以換成書上形式:
x=-5:0.1:5;y=x;
[X Y]=meshgrid(x,y);
《數(shù)學實驗》練習二
2.1
第一個不動點為-0.0084
第二個不動點為119.0084
(2)先定義一個普世性的迭代方法,用M文件保存
函數(shù)收斂,只要初值不取14165^(1/2)/2+119/2 即第二個不動點,收斂值與初值的選取關系不大,總是收斂于-0.0084, 只有初值取 14165 ^(1/2)/2+119/2,迭代函數(shù)才以它為極限;
收斂值一定是不動點其一;
2.2
m=117;
syms x;
f=inline('1-2*abs(x-1/2)');%設定函數(shù)
x0=1/4;%設定初值
for i=1:1:10
plot(i,f(x0),'*');%用*作圖,可以在括號內(nèi)添加'MarkerSize',20放大點
x0=f(x0); %更新x0的值,x0類似于C語言的static類型變量
hold on %將各個點劃在一張圖上
end
hold off
幾個圖像最后都是趨于0,如果沒有的話要將i的終值調(diào)大,我的后三個圖的i=1:1:100;
2.3
該題是P76頁例二
%MARTIN函數(shù)代碼
function Martin(a,b,c,N) %N為迭代次數(shù)
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 %橫縱坐標采用相等單位長度
%循環(huán)迭代N次,N是預定義的數(shù)字。在循環(huán)內(nèi)部,代碼更新矩陣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)
2.4
(1)
%此小問無需在卷面作答,且每人選的數(shù)不一樣,仔細看題目?。?!
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);
end
%我的運行結果
1,5.585
2,5.14893
3,4.99475
4,4.93387
5,4.90889
6,4.89849
7,4.89413
8,4.8923
9,4.89153
10,4.89121
11,4.89107
12,4.89101
13,4.89099
14,4.89098
15,4.89098
16,4.89097
17,4.89097
18,4.89097
19,4.89097
20,4.89097
(3)
根據(jù)個人體會回答
函數(shù)迭代的收斂速度與初值的選取關系不大;
迭代初值對迭代的收斂性存在影響,但是這種影響存在不確定性,沒有發(fā)現(xiàn)可循的規(guī)律;
用自己的話改一下即可
2.5
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)
《數(shù)學實驗》練習三
3.1
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
3.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
3.3
%教材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)
極限值是圖像直線的斜率
按照自己語言組織下面任意一條
- 最終穩(wěn)定值為迭代矩陣的特征值之一。
- 如果迭代矩陣有多個線性無關的特征向量對應于同一個特征值,那么最終穩(wěn)定值將是這些特征向量線性組合的結果。
- 穩(wěn)定值是迭代矩陣的特征向量,對應的特征值為1。而迭代矩陣的特征值和特征向量則可以通過特征方程來求得。
3.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)
還可以使用下面的方法求穩(wěn)定值
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:本題較難,可適當放棄
在線性映射迭代中,迭代矩陣的穩(wěn)定性取決于其特征值的大小和分布。特征值是矩陣的一個重要性質(zhì),它描述了矩陣在線性變換下的變化情況。
如果迭代矩陣的所有特征值的絕對值都小于1,那么迭代矩陣就是穩(wěn)定的,每次迭代后矩陣的元素值都會趨近于一個穩(wěn)定值。
但是,如果迭代矩陣存在特征值的絕對值大于等于1,那么迭代矩陣就是不穩(wěn)定的。這種情況下,每次迭代后矩陣的元素值都會趨近于無窮大或無窮小,從而導致迭代結果失效。
另外,如果迭代矩陣存在多個特征值相同的情況,那么迭代矩陣也可能不穩(wěn)定。這種情況下,迭代矩陣的特征向量可能會出現(xiàn)非常大的幅度波動,從而導致迭代結果不可靠。
因此,對于二維矩陣的線性映射迭代,需要對迭代矩陣的特征值進行分析,以確定其穩(wěn)定性。如果迭代矩陣不穩(wěn)定,需要采取一些措施,如調(diào)整迭代步長或使用更穩(wěn)定的迭代算法,以確保迭代結果的可靠性。
3.5
%如果默認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為整數(shù));
即:
{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('所有勾股數(shù) a b c=\n')
disp(abc)
3.6
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為完全平方數(shù)或者完全平方數(shù)的二倍
預測k在[200,300]之間有200,225,242,288,289
《數(shù)學實驗》練習四
4.1
% 方法一:通過法方程組求解
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
4.2
(1)
%我的學號尾數(shù)是7;故數(shù)據(jù)是到1920年,對應人口是106.5,第14,
%則t2=t(14),x2=x(14)
%這段代碼是用來進行數(shù)據(jù)擬合的,其中變量t和x分別代表時間和數(shù)據(jù)點。代碼用log函數(shù)將數(shù)據(jù)點轉換成線性形式,然后使用線性回歸來擬合兩個數(shù)據(jù)點的斜率和截距,最后用指數(shù)函數(shù)求出x0和k,從而得到新的函數(shù)曲線。代碼中的error表示新的函數(shù)曲線與原數(shù)據(jù)點的誤差平方和
t=1790:10:1980;
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,123.2,131.7,150.7,179.3,204.0,226.5];
t1=t(1);x1=x(1);
t2=t(14);x2=x(14); %此步根據(jù)學號不同而不同
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 =
6.5242e-20
k =
0.0254
error =
1.2278e+05
(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];
%我的數(shù)據(jù)是到1920,所以上面的數(shù)據(jù)是截到1920年對應的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
4.3
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
4.4
文章來源:http://www.zghlxwxcb.cn/news/detail-419725.html
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
4.5
文章來源地址http://www.zghlxwxcb.cn/news/detail-419725.html
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
到了這里,關于2023南京郵電大學通達學院《數(shù)學實驗》MATLAB實驗答案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!