日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数学建模之MATLAB编程

發(fā)布時(shí)間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数学建模之MATLAB编程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

EverydayOneCat

🌈 🐱🐱🐱
🍣🍣🍣🍣🍣??N
🌈📖📜 🥢
🐱 🐱
「Sushi shop!」

知識(shí)點(diǎn)

1.下載

鏈接:https://pan.baidu.com/s/1DbfysOOwIoSvt8HQUw0jhw
提取碼:75mz

2.基本數(shù)學(xué)運(yùn)算

2.1變量與數(shù)據(jù)操作

變量定義注意事項(xiàng):

  • 變量名區(qū)分字母大小寫(xiě)
  • 變量名必須以字母開(kāi)頭,之后可以是任意字母、數(shù)字或下劃線
  • MATLAB語(yǔ)言將所識(shí)別的一切變量視為局部變量,若要將變量定義為全局變量,則應(yīng)當(dāng)對(duì)變量進(jìn)行說(shuō)明,即在該變量前加關(guān)鍵字global.

特殊變量表:

特殊變量取值
ans用于結(jié)果的缺省變量名
pi圓周率
eps計(jì)算機(jī)的最小數(shù)
flops浮點(diǎn)運(yùn)算數(shù)
inf無(wú)窮大 如1/0
nan不等量 如0/0
i ji=j=虛數(shù)單位
nargin函數(shù)的輸入變量數(shù)目
nargout函數(shù)的輸出變量數(shù)目
realmin最小的可用正實(shí)數(shù)
realmax最大的可用正實(shí)數(shù)

2.2MATLAB常用數(shù)學(xué)函數(shù)

MATLAB 提供了許多數(shù)學(xué)函數(shù),函數(shù)的自變量規(guī)定為矩陣變量,運(yùn)算法則是將函數(shù)逐項(xiàng)作用于矩陣的元素上,因而運(yùn)算的結(jié)果是一個(gè)與自變量同維數(shù)的矩陣。

1.基本數(shù)學(xué)函數(shù):

abs(x):純量的絕對(duì)值或向量的長(zhǎng)度

angle(z):復(fù)數(shù)z的相角**(Phase angle) sqrt(x):開(kāi)平方 real(z):復(fù)數(shù)z**的實(shí)部

imag(z):復(fù)數(shù)z的虛部

conj(z):復(fù)數(shù)z的共軛復(fù)數(shù)

round(x):四舍五入至最近整數(shù)

fix(x):無(wú)論正負(fù),舍去小數(shù)至最近整數(shù)

floor(x):地板函數(shù),即舍去正小數(shù)至最近整數(shù)

ceil(x):天花板函數(shù),即加入正小數(shù)至最近整數(shù)

rat(x):將實(shí)數(shù)x化為分?jǐn)?shù)表示

rats(x):將實(shí)數(shù)x化為多項(xiàng)分?jǐn)?shù)展開(kāi)

rem(x,y):求x除以y的余數(shù)

gcd(x,y):整數(shù)xy的最大公因數(shù)

lcm(x,y):整數(shù)xy的最小公倍數(shù)

exp(x):自然指數(shù)

pow2(x)2的指數(shù)

log(x):以e為底的對(duì)數(shù),即自然對(duì)數(shù)

log2(x):以2為底的對(duì)數(shù)

log10(x):以10為底的對(duì)數(shù)

sign(x):符號(hào)函數(shù) (Signum function).

2.三角函數(shù):

sin(x):正弦函數(shù) cos(x):余弦函數(shù)

tan(x):正切函數(shù) asin(x):反正弦函數(shù)

acos(x):反余弦函數(shù) atan(x):反正切函數(shù)

atan2(x,y):四象限的反正切函數(shù) sinh(x):超越正弦函數(shù)

cosh(x):超越余弦函數(shù) tanh(x):超越正切函數(shù)

asinh(x):反超越正弦函數(shù) acosh(x):反超越余弦函數(shù)atanh(x):反超越正切函數(shù)

3.適用于向量的常用函數(shù):

min(x): 向量x的元素的最小值 max(x): 向量x的元素的最大值

mean(x): 向量x的元素的平均值 median(x): 向量x的元素的中位數(shù)

std(x): 向量x的元素的標(biāo)準(zhǔn)差 diff(x): 向量x的相鄰元素的差

sort(x): 對(duì)向量x的元素進(jìn)行排序(Sortinglength(x): 向量x的元素個(gè)數(shù)

norm(x): 向量x的歐氏長(zhǎng)度 sum(x): 向量x的元素總和

prod(x): 向量x的元素總乘積 cumsum(x): 向量x的累計(jì)元素總和

cumprod(x): 向量x的累計(jì)元素總乘積 dot(x, y): 向量xy的內(nèi)積

cross(x, y): 向量xy的外積

+++

例:隨機(jī)抽取10 名學(xué)生的高等數(shù)學(xué)課程成績(jī),并統(tǒng)計(jì)他們中的最高分、最低分以及他們的平均成績(jī)。

>> math=[88,90,77,69,92,80,74,66,95,85]; %產(chǎn)生10維向量 mathaver=sum(math)/10 %計(jì)算平均成績(jī) h=max(math) %求出最高分 l=min(math) %求出最低分

2.3MATLAB矩陣

矩陣的建立:

(1)直接輸入法——A=[1 2 3;4 5 6;7 8 9]

矩陣同行元素之間由空格或逗號(hào)分隔,行與行之間用分號(hào)或回車(chē)鍵分隔;若“[ ]”中無(wú)元素表示空矩陣.

(2)利用冒號(hào)和函數(shù)——函數(shù)linspace(a,b,n)產(chǎn)生第一個(gè)元素為a,最后一個(gè)元素為b總數(shù)為n的行向量

>> a=1:0.5:4 % 格式是初始值:步長(zhǎng):終止值 a= Columns 1 through 7 1 1.5 2 2.5 3 3.5 4

(3)矩陣合并

>> B=[1 1 1] B = 1 1 1 >> C=[A;B] %分號(hào)增加行 C = 1 2 3 4 5 6 7 8 9 1 1 1 >> D=[A,B'] %逗號(hào)增加列 D = 1 2 3 1 4 5 6 1 7 8 9 1

矩陣的截取:

(1) 矩陣元素

>> A(2,3) %下標(biāo)引用 ans = 6 >> A(6) %一列一列的開(kāi)始數(shù) ans = 8

序號(hào)(Index)與下標(biāo)(Subscript )是一一對(duì)應(yīng)的,其相互轉(zhuǎn)換關(guān)系也可利用sub2ind和ind2sub函數(shù)求得。

>> sub2ind(size(A),2,3) ans= 8 [i,j]=ind2sub(size(A),8) i= 2 j= 3

(2) 使用冒號(hào)

可以用冒號(hào)表示“直到”以及“所有行”,“所有列”,還可利用一般向量和end運(yùn)算符來(lái)表示矩陣下標(biāo),從而獲得子矩陣。end表示某一維的末尾元素下

>> B=A (1:2, : ) %逗號(hào)前面是行數(shù),表示第一行直到第二行;逗號(hào)后面列數(shù),表示所有列 B= 1 2 3 4 5 6 >> C=A([1,3],2:end) %行數(shù):第一行和第三行;列數(shù):第二列直到最后 C = 2 3 8 9

+++

特殊矩陣:

zeros(m,n)生成一個(gè) m 行 n 列的零矩陣,m=n 時(shí)可簡(jiǎn)寫(xiě)為 zeros(n)
ones(m,n)生成一個(gè) m 行 n 列的元素全為 1 的矩陣, m=n 時(shí)可寫(xiě)為 ones(n)
eye(m,n)生成一個(gè)主對(duì)角線全為 1 的 m 行 n 列矩陣, m=n 時(shí)可簡(jiǎn)寫(xiě)為 eye(n),即為 n 維單位矩陣
diag(X)若 X 是矩陣,則 diag(X) 為 X 的主對(duì)角線向量 若 X 是向量,diag(X) 產(chǎn)生以 X 為主對(duì)角線的對(duì)角矩陣
tril(A)提取一個(gè)矩陣的下三角部分
triu(A)提取一個(gè)矩陣的上三角部分
rand(m,n)產(chǎn)生 0~1 間均勻分布的隨機(jī)矩陣 m=n 時(shí)簡(jiǎn)寫(xiě)為 rand(n)
randn(m,n)產(chǎn)生均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布隨機(jī)矩陣 m=n 時(shí)簡(jiǎn)寫(xiě)為 randn(n)

例:

分別建立3×3、3×2和與矩陣A同樣大小的零矩陣。

>> zeros(3),zeros(3,2),zeros(size(A))

建立隨機(jī)矩陣:
(1) 在區(qū)間[20,50]內(nèi)均勻分布的5階隨機(jī)矩陣。
(2) 均值為0.6、方差為0.1的5階正態(tài)分布隨機(jī)矩陣。

>> x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5)

3.MATLAB運(yùn)算

3.1基本算術(shù)運(yùn)算

MATLAB的基本算術(shù)運(yùn)算有:+(加)、-(減)、*(乘)、/(右除)、\ (左除)、^(乘方)。

這個(gè)就是矩陣的乘法,線性代數(shù)知識(shí):m* n的矩陣只有和n *x的矩陣才能相乘得出m *x的矩陣。(老湯別打我,我只記得這個(gè)了😥)

3.2點(diǎn)運(yùn)算

在MATLAB中,有一種特殊的運(yùn)算,因?yàn)槠溥\(yùn)算符是在有關(guān)算術(shù)運(yùn)算符前面加點(diǎn),所以叫點(diǎn)運(yùn)算。

點(diǎn)運(yùn)算符有:
點(diǎn)乘: .*
點(diǎn)除: ./ .
點(diǎn)冪: .^

兩矩陣進(jìn)行點(diǎn)運(yùn)算是指它們的對(duì)應(yīng)元素進(jìn)行相關(guān)運(yùn)算,要求兩矩陣的維數(shù)相同。

>> A.^2 ans = 1 4 9 16 25 36 49 64 81 符號(hào)運(yùn)算符功 能類(lèi)別
= =等于關(guān)系運(yùn)算符
~ =不等于
<小于
>大于
<=小于等于
>=大于等于
&邏輯與邏輯運(yùn)算符
|邏輯或
~邏輯非

例:

產(chǎn)生5階隨機(jī)方陣A,其元素為[10,90]區(qū)間的隨機(jī)整數(shù),然后判斷A的元素是否能被3整除。

>> A=fix((90-10+1)*rand(5)+10) %生成5階隨機(jī)方陣A P=rem(A,3)==0 %判斷結(jié)果是一個(gè)布爾矩陣

fix()取整;rand生成0~1的隨機(jī)方陣;rem(A,B)——A/B的余數(shù)

建立矩陣A,然后找出大于4的元素的位置。

>> A=[4,-65,-54,0,6;56,0,67,-45,0] find(A>4) %返回的是索引值

3.3矩陣分析

用求逆矩陣的方法解線性方程組。備注:Ax=b其解為:x=A-1b

>> a=[2,-3,1;8,3,2;45,1,-9]; b=[4;2;17]; x=inv(a)*b

用求特征值的方法解方程:
3x5?7x4+5x2+2x?18=03x^5-7x^4+5x^2+2x-18=0 3x5?7x4+5x2+2x?18=0

>> p=[3,-7,0,5,2,-18]; A=compan(p); %友矩陣A,特征值與多項(xiàng)式根一樣 x1=eig(A) %求A的特征值 x2=roots(p) %直接求多項(xiàng)式p的零點(diǎn)

4.MATLAB程序設(shè)計(jì)

4.1M文件

所謂M文件就是由MATLAB語(yǔ)言編寫(xiě)的可在MATLAB語(yǔ)言環(huán)境下運(yùn)行程序源代碼文件。

M文件可以根據(jù)調(diào)用方式的不同分為兩類(lèi):
命令文件(Script File):自動(dòng)重復(fù)執(zhí)行的一組MATLAB命令和函數(shù)組合,不需輸出輸入?yún)?shù)。
函數(shù)文件(Function File):M文件的第一個(gè)可執(zhí)行以function開(kāi)始,便是函數(shù)文件,每一個(gè)函數(shù)文件定義一個(gè)函數(shù)。

例一:分別建立命令文件和函數(shù)文件,將華氏溫度f(wàn)轉(zhuǎn)換為攝氏溫度c。

命令文件:

clear; %清除工作空間中的變量 f=input('temperature:'); c=5*(f-32)/9

函數(shù)文件:

function c=demo2(f) c=5*(f-32)/9;

命令窗口輸入:

>> c=f2c_fun(20) c = -6.6667

注意:函數(shù)只能調(diào)用,不能直接運(yùn)行,函數(shù)調(diào)用的一般格式是:[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)實(shí)參傳遞給形參

同時(shí),如果需要測(cè)試多個(gè)變量,只有函數(shù)才能實(shí)現(xiàn)。

>> f=[20,73];c=demo2(f) c = -6.6667 22.7778

+++

例二:編寫(xiě)函數(shù)文件求半徑為r的圓的面積和周長(zhǎng)。

編寫(xiě)函數(shù)文件:

function [s,p]=demo3(r) %r 圓半徑 %s 圓面 %p 圓周長(zhǎng) s=pi*r*r; p=2*pi*r;

我們這里計(jì)算半徑為2和3的面積和周長(zhǎng),命令行輸入:

>> r=[2,3];[s,p]=demo3(r) 錯(cuò)誤使用 * 用于矩陣乘法的維度不正確。請(qǐng)檢查并確保第一個(gè)矩陣中的列數(shù)與第二個(gè)矩陣中的行數(shù)匹配。要執(zhí)行按元素相乘,請(qǐng)使用 '.*'。出錯(cuò) demo3 (line 5) s=pi*r*r;

發(fā)現(xiàn)出錯(cuò),根據(jù)提示我們發(fā)現(xiàn)需要用點(diǎn)乘才能計(jì)算

%s=pi*r*r; s=pi*r.*r; >> r=[2,3];[s,p]=demo3(r) s = 12.5664 28.2743 p = 12.5664 18.8496

4.2輸入輸出

  • 數(shù)據(jù)的輸入

    從鍵盤(pán)輸入數(shù)據(jù):A=input(‘提示信息’,‘s’);加上‘s’選項(xiàng),則允許用戶(hù)輸入一個(gè)字符串。

  • >> xm=input('What''s your name?','s'); What's your name?張三
  • 數(shù)據(jù)的輸出
  • disp(輸出項(xiàng))——其中輸出項(xiàng)既可以為字符串,也可以為矩陣。

    求一元二次方程ax2 +bx+c=0的根。

    >> a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];%sqrt——平方根 disp(['x1=',num2str(x(1)),',x2=', num2str(x(2))]);%num2str——數(shù)字轉(zhuǎn)為字符串 a=?1 b=?3 c=?2 x1=-1,x2=-2

    4.3選擇結(jié)構(gòu)

    4.3.1if語(yǔ)句:

    例一:

    隨機(jī)變量x = {0,1,2}表示每分鐘到達(dá)超市收款臺(tái)的人數(shù),有分布列

    xk012
    pk0.40.30.3

    模擬十分鐘內(nèi)顧客到達(dá)收款臺(tái)的狀況.

    r=rand(1,10);%生成10個(gè)0~1隨機(jī)數(shù),代表每分鐘來(lái)人的pk for i=1:10if r(i)<0.4n(i)=0;elseif 0.4<r(i)&r(i)<0.7n(i)=1;elsen(i)=2;end end r n>> demo5 r =0.7060 0.0318 0.2769 0.0462 0.0971 0.8235 0.6948 0.3171 0.9502 0.0344 n =2 0 0 0 0 2 1 0 2 0

    4.3.2switch語(yǔ)句:

    例二:

    某商場(chǎng)對(duì)顧客所購(gòu)買(mǎi)的商品實(shí)行打折銷(xiāo)售,標(biāo)準(zhǔn)如下(商品價(jià)格用price來(lái)表示):
    price<200 沒(méi)有折扣
    200≤price<500 3%折扣
    500≤price<1000 5%折扣
    1000≤price<2500 8%折扣
    2500≤price<5000 10%折扣
    5000≤price 14%折扣
    輸入所售商品的價(jià)格,求其實(shí)際銷(xiāo)售價(jià)格。

    price=input('請(qǐng)輸入商品價(jià)格'); switch fix(price/100) case {0,1} %價(jià)格小于200 rate=0; case {2,3,4} %價(jià)格大于等于200但小于500 rate=3/100; case num2cell(5:9) %價(jià)格大于等于500但小于1000 rate=5/100; case num2cell(10:24) %價(jià)格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %價(jià)格大于等于2500但小于5000 rate=10/100; otherwise %價(jià)格大于等于5000 rate=14/100; end price=price*(1-rate) %輸出商品實(shí)際銷(xiāo)售價(jià)格請(qǐng)輸入商品價(jià)格656 price =623.2000

    num2cell函數(shù):num2cell(A)是把A中的每一個(gè)元素作為cell的元素,這樣每個(gè)元素是一個(gè)數(shù);

    4.3.3for語(yǔ)句

    其中表達(dá)式1 的值為循環(huán)變量的初值,表達(dá)式2的值為步長(zhǎng),表達(dá)式3的值為循環(huán)變量的終值。步長(zhǎng)為1時(shí),表達(dá)式2可以省略。

    執(zhí)行過(guò)程是依次將矩陣的各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語(yǔ)句,直至各列元素處理完畢。

    例三:

    y=0; n=100; for i=1:ny=y+1/(2*i-1); end y

    寫(xiě)出下列程序的執(zhí)行結(jié)果

    >> s=0; a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a s=s+k; end disp(s');

    這里是一行一行累加的。

    4.3.4while語(yǔ)句

    while語(yǔ)句的一般格式為:

    其執(zhí)行過(guò)程為:若條件成立,則執(zhí)行循環(huán)體語(yǔ)句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。

    break:跳出整個(gè)循環(huán)

    continue:跳出當(dāng)前循環(huán)

    例四:

    從鍵盤(pán)輸入若干個(gè)數(shù),當(dāng)輸入0時(shí)結(jié)束輸入,求這些數(shù)的平均值和它們之和。

    >> sum=0; cnt=0; val=input('Enter a number (end in 0):'); while (val~=0) sum=sum+val; cnt=cnt+1; val=input('Enter a number (end in 0):'); end if (cnt > 0) sum mean=sum/cnt end

    求[100,200]之間第一個(gè)能被21整除的整數(shù)。

    >> for n=100:200 if rem(n,21)~=0 continue end break end n

    4.3.5循環(huán)的嵌套

    若一個(gè)數(shù)等于它的各個(gè)真因子之和,則稱(chēng)該數(shù)為完數(shù),如6=1+2+3,所以6是完數(shù)。求[1,500]之間的全部完數(shù)。

    for m=1:500s=0;for k=1:m/2if rem(m,k)==0s=s+k;endendif m==sdisp(m);end end

    4.4極限

    (1) limit(f,x,a):計(jì)算當(dāng)變量x趨近于常數(shù)a時(shí),f(x)函數(shù)的極限值;
    (2) limit(f,x,a,‘right’):‘right’表示變量x從右邊趨近于a;
    (3) limit(f,x,a,‘left’): ‘left’表示變量x從左邊趨近于a

    注:正無(wú)窮,則可以用+inf

    例:

    syms x; %定義變量x limit(1/x^2-cot(x)^2,x,0) ans=2/3 syms a,b,x; limit((sin(a/x^2)+cos(b/x))^(x^2),x,inf) ans=exp(a-1/2*b^2) syms x; limit(x^x,x,0,'right') ans=1 syms t,x; limit((1+2*t/x)^(3*x),x,inf) ans = exp(6*t)

    4.5代數(shù)方程(組)的解

  • roots§:這是求多項(xiàng)式根的命令,其中p是多項(xiàng)式的系數(shù),按降冪方式排列
  • fzero(f,x0): 在x0的附近尋找函數(shù)f的近似零點(diǎn)
  • solve(f,x):求解表達(dá)式f的代數(shù)方程,求解變量為x
  • solve(f1,f2,…,fn,x1,x2,…,xn):求解符號(hào)表達(dá)式f1,f2,…,fn組成的代數(shù)方程組,求解變量分別是x1,x2,…xn。
  • syms x; f='exp(x)-x-3'; %定義函數(shù)f fzero(f,[1,2]) ans =1.5052 roots([1,0,-1,-3]) ans = 1.6717 -0.8358 + 1.0469i -0.8358 - 1.0469i [a,b]=solve('3*x-y=1','x+y=3','x,y')

    4.6導(dǎo)數(shù)

    diff(f,x):以x為自變量,對(duì)符號(hào)表達(dá)式f求一階導(dǎo)數(shù);

    diff(f,x,n):以x為自變量,對(duì)符號(hào)表達(dá)式f求n階導(dǎo)數(shù)。

    syms x; y='x*exp(3*x)'; y1=diff(str2sym(y),x); % 1階導(dǎo)數(shù) y5=diff(str2sym(y),x,5); % 5階導(dǎo)數(shù) y1,y5 syms x y=log(x+sqrt(1+x^2)); y1=diff(y,x); % 1階導(dǎo)數(shù) y2=diff(y,x,2); % 2階導(dǎo)數(shù) simplify(y1),simplify(y2)%結(jié)果化簡(jiǎn)ans =1/(1+x^2)^(1/2) ans =-x/(1+x^2)^(3/2)

    這里需要留意:新版本化簡(jiǎn)用simplify函數(shù)

    4.7函數(shù)極值

    (1) fminbnd(f,x1,x2)——求函數(shù)f在區(qū)間[x1,x2]上的極小值;

    (2) fminsearch(‘f’,x0)——求多元函數(shù)f在x0附近的極小值

    畫(huà)圖:

    syms x; f='x*cos(x)'; %定義函數(shù)f fplot(f,[-8,8]) grid; %顯示網(wǎng)格

    用fminbnd函數(shù)求極小值:

    [X,FVAL] = fminbnd(f,-8,8) X = 3.4256 FVAL = -3.2884 [X,FVAL] = fminbnd(f,-8,0) X = -6.4373 FVAL = -6.3610 [X,FVAL] = fminbnd(f,-4,0) X = -0.8603 FVAL = -0.5611

    用fminsearch函數(shù)求極小值:

    [X,FVAL] = fminsearch (f,2) X = 3.4256 FVAL = -3.2884 [X,FVAL] = fminsearch (f,-4) X = -6.4373 FVAL = -6.3610 [X,FVAL] = fminsearch (f,-2) X = -0.8603 FVAL = -0.5611

    4.8積分的計(jì)算

    int(f,x):以x為自變量,對(duì)被積函數(shù)或符號(hào)表達(dá)式f求不定積分;
    int(f,x,a,b):求定積分運(yùn)算。a,b分別表示定積分的下限和上限。該函數(shù)求被積函數(shù)在區(qū)間[a,b]上的定積分。

    syms x s; % 表明x ,s為符號(hào)變量 f=sin(2*x)+s^2; % 定義符號(hào)表達(dá)式 int(f,x) % 對(duì)變量x求不定積分

    注意:在所求結(jié)果后加常數(shù)運(yùn)行結(jié)果如下:
    ans=?1/2?cos(2?x)+s2?xans = -1/2*cos(2*x)+s^2*x ans=?1/2?cos(2?x)+s2?x

    syms x s; % 表明x ,s為符號(hào)變量 f=sin(2*x)+s^2; % 定義符號(hào)表達(dá)式 int(f,x, -pi/2,pi/2) % 對(duì)變量x求定積分, ans = s^2*pi

    4.9微分方程求解

    Dy表示y’ ;
    D2y表示y ’ ‘;
    Dy(0)=5表示y’ (0)=5

    dsolve(‘f’,’c’,’v’):這個(gè)命令包括三部分,微分方程,初始條件,指定變量。

    dsolve(‘Dy=1+y^2’) % 求一階方程的通解 ans =tan(t+C1) % C1為積分常數(shù)。 dsolve('Dy=1+y^2', 'y(0)=1') % 求特解 ans =tan(t+1/4*pi)

    4.10線性代數(shù)運(yùn)算

  • 矩陣的轉(zhuǎn)置
    轉(zhuǎn)置運(yùn)算符是單撇號(hào)(’)。

  • 矩陣的旋轉(zhuǎn)
    利用函數(shù)rot90(A,k)將矩陣A旋轉(zhuǎn)90o的k倍,當(dāng)k為1時(shí)可省略。

  • 矩陣的左右翻轉(zhuǎn)
    對(duì)矩陣實(shí)施左右翻轉(zhuǎn)是將原矩陣的第一列和最后一列調(diào)換,第二列和倒數(shù)第二列調(diào)換,…,依次類(lèi)推。MATLAB對(duì)矩陣A實(shí)施左右翻轉(zhuǎn)的函數(shù)是fliplr(A)。

  • 矩陣的上下翻轉(zhuǎn)
    MATLAB對(duì)矩陣A實(shí)施上下翻轉(zhuǎn)的函數(shù)是flipud(A)。

  • 矩陣的逆
    對(duì)于一個(gè)方陣A,如果存在一個(gè)與其同階的方陣B,使得:A·B=B·A=I (I為單位矩陣)則稱(chēng)B為A的逆矩陣,當(dāng)然,A也是B的逆矩陣。
    求一個(gè)矩陣的逆是一件非常煩瑣的工作,容易出錯(cuò),但在MATLAB中,求一個(gè)矩陣的逆非常容易。
    求方陣A的逆矩陣可調(diào)用函數(shù)inv(A)。

  • 方陣的行列式
    把一個(gè)方陣看作一個(gè)行列式,并對(duì)其按行列式的規(guī)則求值,這個(gè)值就稱(chēng)為矩陣所對(duì)應(yīng)的行列式的值。
    在MATLAB中,求方陣A所對(duì)應(yīng)的行列式的值的函數(shù)是det(A)。

  • 矩陣的秩與跡
    1)矩陣的秩
    矩陣線性無(wú)關(guān)的行數(shù)與列數(shù)稱(chēng)為矩陣的秩。在MATLAB中,求矩陣秩的函數(shù)是rank(A)。
    2) 矩陣的跡
    矩陣的跡等于矩陣的對(duì)角線元素之和,也等于矩陣的特征值之和。在MATLAB 中,求矩陣的跡的函數(shù)是trace(A)。

  • 矩陣的特征值與特征向量
    在MATLAB中,計(jì)算矩陣A 的特征值和特征向量的函數(shù)是eig(A),常用的調(diào)用格式有3種:

    (1) E=eig(A):求矩陣A 的全部特征值,構(gòu)成向量E。
    (2) [V,D]=eig(A):求矩陣A的全部特征值,構(gòu)成對(duì)角陣D,并求A的特征向量構(gòu)成V的列向量。
    (3) [V,D]=eig(A,‘nobalance’):與第2種格式類(lèi)似,但第2種格式中先對(duì)A作相似變換后求矩陣A的特征值和特征向量,而格式3直接求矩陣A的特征值和特征向量。

  • 編程訓(xùn)練

    分段函數(shù)

    根據(jù)我國(guó)個(gè)人所得稅計(jì)算方法,編制程序,要求:使用者在系統(tǒng)提示下通過(guò)鍵盤(pán)輸入月工資薪金收入總數(shù),計(jì)算機(jī)則在屏幕上顯示個(gè)人所得稅額,界面友好,方便使用

    個(gè)人所得稅計(jì)算方法:
    月個(gè)人所得稅=(月工資薪金收入-2000)*適用稅率-速算扣除數(shù)
    附表:個(gè)人所得稅稅率表(工資、薪金所得適用)

    全月應(yīng)納稅所得額稅率(%)速算扣除數(shù)
    1不超過(guò)500元的5%0
    2超過(guò)500元至2000元的部分10%25
    3超過(guò)2000元至5000元的部分15%125
    4超過(guò)5000元至20000元的部分20%375
    5超過(guò)20000元至40000元的部分25%1375
    6超過(guò)40000元至60000元的部分30%3375
    7超過(guò)60000元至80000元的部分35%6375
    8超過(guò)80000元至100000元的部分40%10375
    9超過(guò)100000元的部分45%15375

    編寫(xiě)Matlab命令文件:

    wages=input('請(qǐng)輸入您的工資:'); wage=wages-2000; if(wage<=0)tax=0; elseif(wage<=500)tax=wage*0.05; elseif(wage<=2000)tax=500*0.05+(wage-500)*0.1-25; elseif(wage<=5000)tax=500*0.05+1500*0.1+(wage-2000)*0.15-25-125; elseif(wage<=20000)tax=500*0.05+1500*0.1+3000*0.15+(wage-5000)*0.2-25-125-375; elseif(wage<=40000)tax=500*0.05+1500*0.1+3000*0.15+15000*0.2+(wage-20000)*0.25-25-125-375-1375; elseif(wage<=60000)tax=500*0.05+1500*0.1+3000*0.15+15000*0.2+20000*0.25+(wage-40000)*0.3-25-125-375-1375-3375; elseif(wage<=80000)tax=500*0.05+1500*0.1+3000*0.15+15000*0.2+20000*0.25+20000*0.3+(wage-60000)*0.35-25-125-375-1375-3375-6375; elseif(wage<=100000)tax=500*0.05+1500*0.1+3000*0.15+15000*0.2+20000*0.25+20000*0.3+20000*0.35+(wage-80000)*0.4-25-125-375-1375-3375-6375-10375; elsetax=500*0.05+1500*0.1+3000*0.15+15000*0.2+20000*0.25+20000*0.3+20000*0.35+20000*0.4+(wage-100000)*0.45-25-125-375-1375-3375-6375-10375-15375; end tax

    素?cái)?shù)

    求[2,999]中同時(shí)滿(mǎn)足下列條件的數(shù)
    (1)該數(shù)各位數(shù)字之和為奇數(shù)
    (2)該數(shù)是素?cái)?shù)

    for i=2:999a=rem(i,10);b=rem(fix(i/10),10);c=fix(i/100);if (rem((a+b+c),2)~=0)&(isprime(i)==1)%isprime判斷素?cái)?shù)disp(i);end end

    運(yùn)行結(jié)果得出以下的數(shù):
    3 5 7 23 29 41 43 47 61 67 83 89 113 131 137 139 151 157 173 179 191
    193 197 199 223 227 229 241 263 269 281 283 311 313 317 331 337 353
    359 373 379 397 401 409 421 443 449 461 463 467 487 557 571 577 593
    599 601 607 641 643 647 661 683 719 733 739 751 757 773 797 809 821
    823 827 829 863 881 883 887 911 919 937 953 971 977 991 997

    水仙花數(shù)

    水仙花數(shù)是指一個(gè)3位自然數(shù),其各位數(shù)字的立方和等于該數(shù)本身,輸出1000以?xún)?nèi)的水仙花數(shù),并求其個(gè)數(shù)。

    y=[];%空矩陣 count=0; for i=100:999a=rem(i,10);b=rem(fix(i/10),10);c=fix(i/100);if(a^3+b^3+c^3==i)y=[y,i];%不斷擴(kuò)充count=count+1;end end y,count

    突變素?cái)?shù)

    當(dāng)一個(gè)素?cái)?shù)(只有兩個(gè)正因數(shù)(1和自己)的自然數(shù)即為素?cái)?shù))與其前一個(gè)素?cái)?shù)的差值大于等于5時(shí),將其稱(chēng)之為“突變素?cái)?shù)”(2不是“突變素?cái)?shù)”),求10000以?xún)?nèi)的“突變素?cái)?shù)”的個(gè)數(shù).

    y=[]; k=0; count=0; for i=1:10000if isprime(i)==1if (i-k)>=5 y=[y,i];count=count+1;endk=i;end end y,count

    結(jié)果:count=820

    方差分析1

    試驗(yàn)3種豬飼料的飼養(yǎng)效果,得到9頭豬的增重(單位:kg)如下:

    用MATLAB編程做作方差分析,估計(jì)各個(gè)總體的未知參數(shù)μi和μ。(不允許用anova1工具箱)

    先用SAS得到結(jié)果方便后面檢驗(yàn):

    data ex; do a=1 to 3;input n@@; do i=1 to n;input x@@; output;end;end; cards; 4 51 40 43 48 3 23 25 26 2 23 28 ; proc anova data=ex;class a;model x=a; run;

    SST——(每個(gè)因素的均值-總均值)^2的和
    SSA——每個(gè)水平的個(gè)數(shù)*(每個(gè)水平的均值-總均值)^2的和
    SSE=SST-SSA
    F=(SSA/(R-1))/(SSE/(n-R)) R為水平個(gè)數(shù)

    a1=[51,40,43,48]; a2=[23,25,26]; a3=[23,28]; a=[a1,a2,a3];n=length(a); b=[1 1 1 1 2 2 2 3 3]; sst=0; for i=1:nsst=sst+(a(i)-mean(a))^2; end ssa=0; for i=1:3an=a(b==i);num=length(an);ssa=ssa+num*(mean(an)-mean(a))^2; end sse=sst-ssa; f=(ssa/2)/(sse/(n-3)); p=1-fcdf(f,2,n-3); ssa,sse,sst,f,p

    可以看出和SAS所得結(jié)果一樣

    方差分析2

    測(cè)定4種種植密度下金皇后玉米的千粒重(單位:g)如下:

    用MATLAB編程做作方差分析,估計(jì)各個(gè)總體的未知參數(shù)mI和μ。(不允許用anova1工具箱)

    首先還是用SAS做出結(jié)果方便檢驗(yàn):

    data ex; do a=1 to 4;input n@@; do i=1 to n;input x@@; output;end;end; cards; 4 247 258 256 251 4 238 244 246 236 4 214 227 221 218 4 210 204 200 210 ; proc anova data=ex;class a;model x=a; run;

    編寫(xiě)Matlab代碼:

    a=[247,258,256,251 238,244,246,236 214,227,221,218 210,204,200,210]; [m,n]=size(a); sst=0; for i=1:mfor j=1:nsst=sst+(a(i,j)-mean(a(:)))^2;end end ssa=0; for i=1:mfor j=1:nssa=ssa+(mean(a(i,:))-mean(a(:)))^2;end end sse=0; for i=1:mfor j=1:nsse=sse+(a(i,j)-mean(a(i,:)))^2;end end f=(ssa/m-1)/(sse/(m*n-n)); p=1-fcdf(f,m-1,m*n-n); ssa,sse,sst,f,p

    和SAS所得結(jié)果一樣

    主成分分析

    下表是某地區(qū)某時(shí)間的氣候綜合指數(shù),其中,x1為某地區(qū)平均降水量,x2為氣壓值,x3為氣溫值,x4為絕對(duì)濕度。試用主成分分析法分析該地區(qū)的氣候綜合指數(shù)。

    x142.410.2116.84.843.613.361.199.3139.355.568.3
    x21219.424.628.824.728.318.718.39.48.13.5
    x32418.412.512.81.88.813.718.722.626.7
    x422.715.112.14.45.44.78.511.817.922.329.1
    x183.49018.847.699.6100.180.690100.8146.155.1
    x25.712.819.422.821232.821.215.18.46.7
    x327.523.717.413.39.53.62.66.814.219.622.4
    x429.423.615.112.310.66.76.28.313.718.621.2

    主成分分析的一般步驟

    (1)將觀測(cè)數(shù)據(jù)標(biāo)準(zhǔn)化,并計(jì)算及。

    (2)由相關(guān)系數(shù)矩陣****

    (3)得到特征值及各個(gè)主成分的方差貢獻(xiàn)率、貢獻(xiàn)率和累計(jì)貢獻(xiàn)率,并根據(jù)累計(jì)貢獻(xiàn)率確定主成分保留的個(gè)數(shù)。

    (4)寫(xiě)出個(gè)基本方程組:

    其中,。

    利用施密特正交方法,對(duì)每一個(gè)求它的對(duì)應(yīng)基本方程組的解,然后令,從而得到用所表示的主成分向量,或?qū)⒋牒蟮玫接盟硎镜闹鞒煞窒蛄俊?/p>

    (5)將的觀測(cè)值代入主成分向量的表達(dá)式中計(jì)算各個(gè)主成分向量。

    (6)計(jì)算原指標(biāo)與主成分的相關(guān)系數(shù)即因子載荷,解釋主成分的意義。

    請(qǐng)按照以上算法步驟編寫(xiě)MATLAB程序,不允許用princomp工具箱

    +++

    解:

    由于數(shù)據(jù)較多,我們將數(shù)據(jù)寫(xiě)入excel表格并放入工作路徑中,通過(guò)讀取得到數(shù)據(jù)

    x=xlsread('jy.xlsx','Sheet1','B1:W4');%讀取表格中數(shù)據(jù) x=x'; xx=zscore(x);%標(biāo)準(zhǔn)化 R=corrcoef(xx);%求相關(guān)系數(shù)矩陣 [v,d]=eig(R);%d-特征值,v-特征值對(duì)應(yīng)的特征向量 lamda=diag(d);%將特征值抽取出來(lái) gx=lamda/sum(lamda);%計(jì)算貢獻(xiàn)比例 gx=sort(gx,'descend');%倒序排序,根據(jù)計(jì)算發(fā)現(xiàn)留下兩個(gè)主成分 zcf=[v(:,4),v(:,3)];%將第一主成分和第二主成分特征向量抽取出來(lái) defen=xx*zcf;%算出主成分得分 zhpj=defen*gx(1:2,:);%綜合評(píng)價(jià)=得分*貢獻(xiàn)率

    第四問(wèn):
    z1=0.2320?x1?0.5301?x2+0.5711?x3+0.5823?x4z1= 0.2320*x1 -0.5301*x2+ 0.5711*x3 + 0.5823*x4 z1=0.2320?x1?0.5301?x2+0.5711?x3+0.5823?x4

    z2=?0.9347?x1+0.1105?x2+0.2465?x3+0.2312?x4z2= -0.9347*x1+ 0.1105 *x2+ 0.2465 *x3+ 0.2312*x4 z2=?0.9347?x1+0.1105?x2+0.2465?x3+0.2312?x4

    綜合評(píng)價(jià)

    以下是某種算法

    (1)確定因素集;

    (2)確定評(píng)判集;

    (3)進(jìn)行單因素評(píng)判得;

    (4)構(gòu)造綜合評(píng)判矩陣

    (5)綜合評(píng)判:對(duì)于權(quán)重A={a1,a2,,an},計(jì)算,并根據(jù)最大隸屬度原則作出評(píng)判.

    在進(jìn)行綜合評(píng)判時(shí),根據(jù)算子的不同定義,可以得到不同的模型.

    請(qǐng)用MATLAB編寫(xiě)上面程序,并計(jì)算下面的問(wèn)題。

    考慮一個(gè)服裝評(píng)判的問(wèn)題,為此建立因素集,其中u1表示花色,u2表示式樣,u3表示耐穿程度,u4表示價(jià)格.建立評(píng)判集,其中v1表示很歡迎,v2表示較歡迎,v3表示不太歡迎,v4表示不歡迎.進(jìn)行單因素評(píng)判的結(jié)果如下:

    ,,

    ,.

    設(shè)有兩類(lèi)顧客,他們根據(jù)自己的喜好對(duì)各因素所分配的權(quán)重分別為:

    試分析這兩類(lèi)顧客對(duì)此服裝的喜好程度.

    +++

    解:

    1、因素集確定:根據(jù)題目要求,設(shè)u1 表示花色,u2 表示式樣,u3 表示耐穿程度,u4 表示價(jià)格,則得到因素集為:

    2、評(píng)判集確定:為了更好的對(duì)所有的因素做出評(píng)價(jià),則設(shè)以下以下4 個(gè)程度:其中v1 表示很歡迎,v2 表示較歡迎,v3 表示不太歡迎,v4 表示不歡迎,由以上得到評(píng)判集:

    3、單因素評(píng)判:對(duì)花色、式樣、耐穿程度、價(jià)格4 種進(jìn)行單因素評(píng)判得到以下結(jié)果:

    4、構(gòu)造評(píng)價(jià)矩陣:根據(jù)以上4 種單因素評(píng)判得到的結(jié)果,得到評(píng)價(jià)矩陣:

    5、綜合評(píng)判:

    為了同時(shí)兼顧到所有因素對(duì)整體喜好程度的影響,則需要建立加權(quán)平均模型。

    B = A* R = (b1,b2 ,b2 ,b4 )

    根據(jù)以上模型在MATLAB 中編程:

    r=[0.2,0.5,0.2,0.1 0.7,0.2,0.1,0 0,0.4,0.5,0.1 0.2,0.3,0.5,0]; a=[0.1,0.2,0.3,0.4 0.4,0.35,0.15,0.1]; B=a*r

    根據(jù)最大隸屬原則可以得到,A1類(lèi)顧客對(duì)產(chǎn)品的喜好程度為不太歡迎,A2類(lèi)顧客對(duì)產(chǎn)品的喜好程度為比較歡迎。

    結(jié)語(yǔ)

    蕪湖,終于趕在忍界大戰(zhàn)前寫(xiě)完了!今晚第三次忍界大戰(zhàn)!應(yīng)該比春晚好看多了🤩

    上場(chǎng)名單
    TES 36鮫 宇智波卡薩 大手丸 宇智波水 藥師預(yù)
    IG 邁特曬 旋渦寧人 卡卡雞 佐芙 春野藍(lán)

    大伙們今晚把飯盆收一收,該減減肥了(lll¬ω¬)

    總結(jié)

    以上是生活随笔為你收集整理的数学建模之MATLAB编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。