%正弦函數在MATLAB中如何實現
%1.sin(45°)注意:參數值需要用“弧度”去定義
>>x=sin(45*pi/180);
%2.MATLAB中注意:開方-sqrt(x),指數函數-exp(x)
>>y=sqrt(2*exp(x+0.5)+1);
%3.MATLAB中幾元幾次方程的寫法: 2x+3y-z=2
% 8x+2y+3z=4
% 45x+3y+9z=23
<<A=[2,3,-1;8,2,3;45,3,9];%建立系數矩陣
>>b=[2;4;23];%建立列向量b
>>B=[2,4,23]'%等價與b
>>x=inv(A)*b%對矩陣求逆。如果A是非奇異方陣,則B/A = B*inv(A),A\B = inv(A)*B。/表示右除,\表示左除。
%注意:使用inv時,必須對象為方陣。 (A左除B=A的逆乘以B):那邊除那邊為分母
%(1).可以借助符號計算解方程:
>>syms x y z %matlab中syms意思是定義多個變量
>>[x,y,z]=solve(2*x+3*y-z-2,8*x+2*y+3*z-4,45*x+3*y+9*z-23);%MATLAB中solve()主要是用來求解代數方程(多項式方程)的符號解析解。
%4.MATLAB中多項式的表示:
%(1).p(x)=x^4+3x^3+2x+1;
>>a=[1,3,0,0,2,1];%冪次從高到底,零系數和系數為0的冪次方不能省略
%(2).求方程2x^5-3x^3+71x^2-9x+13=0的全部根:
>>p=[2,0,-3,71,-9,13];%建立多項式系數向量
>>x=roots(p);%求根函數
>>x =
-3.4914
1.6863 + 2.6947i
1.6863 - 2.6947i
0.0594 + 0.4251i
0.0594 - 0.4251i %一個實根,三個虛根
%%%5.算術運算:
x=[1,2,3;4,5,6;7,8,9]; c=x^2;
x = 1 2 3 c =30 36 42
4 5 6 66 81 96
7 8 9 102 126 150
d=x.^2;
d = 1 4 9
16 25 36
49 64 81
乘:* 矩陣乘法
點乘: .* 相應元素相乘
冪: ^ 矩陣冪運算
點冪: ^ 相應元素進行冪運算
%6.近似計算和精確計算:
>>F=quad('x.*log(1+x)',0,1,0.001,1);
%1. F=quad('fname',a,b,tol,trace) Simpson數值積分法.
%2. F=quad8('fname',a,b,tol,trace) Newton-Cotes數值積分法.
其中(1).%fname是被積函數表達式或函數名
%(2).a,b分別是上下限,
%(3).tol可以控制積分精度,省略則取0.001;
%(4).trace=1則用圖形表示積分過程,trace=0,沒有圖形
>> syms x
>> F=int(x*log(1+x),x,0,1);
%F=int(函數式子,表示哪個未知數的區間,上限(可以是函數),下限);
>>Y=subs(F,x,t);%將F表達式中的x(自變量)由t替換成1,並賦值給Y
subs()函數 表示將符號表達式中的某些符號變量替換為指定的新的變量
>>disp(Y);%類似於printf輸出
>>syms x y z %定義符號變量
>>F2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) %可以套娃!
%7.線性規划問題的編程:max 5x1+4x2+6x3
s.t.:x1-x2+x3<=20
3x1+2x2+4x3<=42
3x1+2x2<=30
0<=x1,0<=x2,0<=x3
>>F=[-5,-4,-6];%目標函數向量
>>A=[1,-2,2;3,2,4;3,2,0]; %Ax=b:不等式約束
>>b=[20,42,30];
>>Ib=zeros(3,1);%約束變量的下限向量
>>x=linprog(F,A,b,[],[],Ib,[]);%規划向量求解
>>fval=F*x;%目標函數最小值
%(1).linprog函數主要用來求線型規划中的最小值問題
%(2).針對約束條件為Ax=b或Ax≤b的問題
%(3).Aeq*x=beq:存在等式約束
%(4).linprog函數常用形式為:x=linprog(f,A,b,Aep,beq,lb,ub);
%8.MATLAB中保存和加載命令:
save 文件名 %將所有變量存入指定文件:
load 文件名 %載入數據文件中的所有變量:
%9.變量和數據類型,顯示形式:
short(默認):2位整數,4位小數
long:16位十進制數:23.66666666666666
short g:5位十進制數
bank :兩位小數
rat :分數
%9.運算符:
(1).續行符:” …“ %續行符前留一個空格
(2).操作符:”:“ %表示所有,數組和矩陣中也表示公差(公比)
(3).“rand(m,n)”%表示生成m到n個[0,1]之間的隨機數
(4).關系運算符: “==”:等於 ”~=“:不等於>>
>> a=[1,2,3;4,5,6];
>> b=[4,5,6;7,8,6];
>> a==b
ans =0 0 0
0 0 1
(5).
(6).
(7).
(8).
(9).
%10.行向量、列向量的創建:
(1).利用linspace函數:
%x=linspace(x1,x2,n);
X=linspace(5,100,20)
X = 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
%這和X=[5:5:100]的效果是一樣的。
(2).利用reshape函數:
%語法是 A = reshape(A,m,n); 或者 A = reshape(A,[m,n]);
%矩陣中元素個數不變,函數可以重新調整 矩陣 的行數、列數、 維數
注意:reshape函數所創建的新矩陣元素(m*n)必須舊矩陣元素的個數。
%%%11.向量、矩陣、數組
x=linspace(x1,x2,n);
x(n);%表示數組中第n個元素
x(n1,n3);%表示數組中第n1到n2的元素
%find()函數是查找數組中為0的下標,也可以進行約束查找符合元素的下標。
矩陣的特征值於特征向量:eig()函數
A=[1,2;3,4];
l=eig(A);%求A的特征值,返回一個列向量(這里就是eig這個函數返回的一個特征值)
[l,d]=eig(A);%矩陣A的全部變量,構成對角矩陣d
%矩陣A特征向量構成向量l