matlab科学计算(实验一)(3)

http://foggybells.top/open_in/4/

Data=[1,2,3,4;5,6,7,8;9,10,11,12],分别使用diag、'、fliplr、flipud、rot90、tril、triu函数计算Data的对角、转置、翻转、旋转、三角矩阵。查阅帮助文档,了解diag除了取对角元素之外还有什么功能?给出演示实验。
a=diag(Data)对角
z=Data'转置
x=fliplr(Data)翻转
下同
s=flipud(Data)旋转
d=tril(Data)三角矩阵(下)
f=triu(Data)三角矩阵(上)
diag:https://blog.csdn.net/carrie8899/article/details/8490253
一、X = diag(v,k)

v为向量,X为矩阵

以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
例:
>> v=[1 2 3];
>> x=diag(v,-1)
x =
0 0 0 0
1 0 0 0
0 2 0 0
0 0 3 0

二、v=diag(X,k)

X为矩阵,v为向量

取矩阵X的第K条对角线元素为向量v

例:

>> aa=randn(3,3)

aa =

-1.3282 -1.7925 0.4092
-0.3803 0.5858 -0.4684
-0.9560 0.7356 0.8292

>> diag(aa)

ans =

-1.3282
0.5858
0.8292

>> diag(aa,1)

ans =

-1.7925
-0.4684

>> diag(aa,2)

ans =

0.4092

5、 字符串数组创建与操作实验:创建字符串数组,设计实验演示deblank、strtrim(MATLAB7.0以后版本才支持此函数)、strrep、strread、strtok的用法和功能https://www.cnblogs.com/emanlee/archive/2012/09/13/2683912.html
% deblank(str) 裁切字符串的尾部空格 
% strtrim(str) 裁切字符串的开头和尾部的空格,制表,回车符
% strrep 进行字符串替换,区分大小写 
% strrep(str1,str2,str3) 
% 它把str1中所有的str2字串用str3来替换

str = '

';
[border width space] = strread(str,'%*s%*s %c %*s "%4s" %*s %c', 'delimiter', '= ')
%*s: 对应的字符串不输出;
%c:对应的字符输出,并赋值给第一个和第三个输出变量;
‘‘%4s’’:在matlab中“ ”和str中的双引号一样,是抑制输出的一种方式,其中的%4s是输出四个字符长度的字符串赋值给第二个输出变量(不懂)[A, B, ...] = strread('str', 'format') %w.pf
str = 'Section 4, Page 7, Line 26';

[a b c] = strread(str, '%s %s %s', 'delimiter', ',')
a = 
'Section 4'
b = 
'Page 7'
c = 
'Line 26'

% strtok(str,char) 返回str中由char指定的字符串前的部分和之后的部分

https://blog.csdn.net/u010999396/article/details/54413615/
6、 结构数组的创建与操作实验:分别用直接创建法和命令(struct)创建法创建维度不超过3个、属性不超过5个的架构数组,演示fieldnames、getfield、setfield的用法和功能。
fieldnames 获取结构的字段名
getfield 获取结构中指定字段的值 rmfield 删除结构的字段(不是字段内容)
setfield 设置结构数组中指定的字段的值 struct 创建结构数组
s = struct('type',{'big';'little'},'color',{'blue';'red'},'x',{3;4}) 
s = 
2x1 struct array with fields:
type
color
x

FN=fieldnames(s)
FC=getfield(s,'x')
SSTF=setfield(s,'x',{2},{[5]});

7、 基本运算符号实验
运算符号 功能
+ 矩阵加 //注意矩阵运算规则
- 减
* 乘
\ 矩阵左除
/ 矩阵右除
^ 矩阵乘方
kron 克罗内克张量积 如果A是一个m×n的矩阵,而B是一个p×q的矩阵,克罗内克积则是一个mp×nq的分块矩阵

.* 数组乘
.^ 数组乘方
.\ 数组左除
./ 数组右除

& 逻辑与
| 逻辑或
~ 逻辑非
xor 逻辑异或 xor(a,b)//xor(0,1)

8、 矩阵分析实验:设计实验演示验证范数(norm)、条件数(cond)、行列式(det)、秩(rank)、特征值(eig)、化零矩阵(null)、
Cholesky分解(chol) 正定矩阵 分解为上三角矩阵chol(A)*chol(A)‘=A
、LU分解(lu) LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。 (不是所有矩阵都有) [l,u]=lu(B)
、正交分解(qr)、实数矩阵A的QR分解是把A分解为
A = QR
这里的Q是正交矩阵(意味着QTQ = I)而R是上三角矩阵。
类似的,我们可以定义A的QL, RQ和LQ分解。
更一般的说,我们可以因数分解复数m×n矩阵(有着m ≥ n)为 m×n 酉矩阵(在Q∗Q = I的意义上)和n× n上三角矩阵的乘积。
如果A是非奇异的,则这个因数分解为是唯一,当我们要求R的对角是正数的时候。

MATLAB以qr函数来执行QR分解法,其语法为
[Q,R]=qr(A)
其中Q代表正交矩阵,
而R代表上三角形矩阵。
奇异值分解(svd):https://ww2.mathworks.cn/help/matlab/ref/svd.html
s = svd(A)
[U,S,V] = svd(A)
[U,S,V] = svd(A,'econ')
[U,S,V] = svd(A,0)
s = svd(A) 以降序顺序返回矩阵 A 的奇异值。

示例
[U,S,V] = svd(A) 执行矩阵 A 的奇异值分解,因此 A = U*S*V'。

示例
[U,S,V] = svd(A,'econ') 为 m×n 矩阵 A 生成精简分解:

m > n - 只计算 U 的前 n 列,S 是一个 n×n 矩阵。

m = n - svd(A,'econ') 等效于 svd(A)。

m < n - 只计算 V 的前 m 列,S 是一个 m×m 矩阵。

精简分解从奇异值的对角矩阵 S 中删除额外的零值行或列,以及 U 或 V 中与表达式 A = U*S*V' 中的那些零值相乘的列。删除这些零值和列可以缩短执行时间,并减少存储要求,而且不会影响分解的准确性。

示例
[U,S,V] = svd(A,0) 为 m×n 矩阵 A 生成另一种精简分解:

m > n - svd(A,0) 等效于 svd(A,'econ')。

m <= n - svd(A,0) 等效于 svd(A)。
的用法和功能。

9、 数值计算实验:设计实验演示https://www.mathworks.com/help/optim/ug/fzero.html?searchHighlight=fzero&s_tid=doc_srchtitle
验证导数(diff)、
(gradient)[Fx,Fy]=gradient(F),其中Fx为其水平方向上的梯度,Fy为其垂直方向上的梯度
、多项式求根(roots)r = roots(p) 以列向量的形式返回 p 表示的多项式的根。输入 p 是一个包含 n+1 多项式系数的向量,以 xn 系数开头。0 系数表示方程中不存在的中间幂。例如:p = [3 2 -2] 代表多项式 3x2+2x−2。
、零点(fzero、fsolve)、
z=fzero('fname',x0,tol,trace)
其中fname是待求根的函数文件名,x0为搜索的起点。一个函数可能有多个根,但fzero函数只给出离x0最近的那个根。tol控制结果的相对精度,缺省时取tol=eps,trace指定迭代信息是否在运算中显示,为1时显示,为0时不显示,缺省时取trace=0。
X = fsolve(FUN,X0,OPTIONS)
[x,fval,exitflag]=fsolve(fun,x0,options)
其中fun是方程,x0是初值,需要提前设定,options是一些设定要求,可以用optimset函数来实现;exitflag用以描述出口条件

极值(fminbnd、fminsearch、fminunc)
fminbnd有边界的标量非线性最小化 x = fminbnd (@humps, 0.3, 1) 【0.3, 1】区间
找到固定区间内单变量函数的最小值。
fminbnd求取固定区间内单变量函数的最小值。
x = fminbnd(fun,x1,x2)返回区间{x1,x2}上fun参数描述的标量函数的最小值x。
x = fminbnd(fun,x1,x2,options)用options参数指定的优化参数进行最小化。
x = fminbnd(fun,x1,x2,options,P1,P2,...)提供另外的参数P1,P2等,传输给目标函数fun。如果没有设置options选项,则令options=[]。
[x,fval] = fminbnd(...)返回解x处目标函数的值。
[x,fval,exitflag] = fminbnd(...)返回exitflag值描述fminbnd函数的退出条件。
[x,fval,exitflag,output] = fminbnd(...)返回包含优化信息的结构输出。
fminsearch, 
fminsearch 求解多变量无约束函数的最小值。该函数常用于无约束非线性最优化问题。
x = fminsearch(fun,x0) 初值为x0,求fun函数的局部极小点x。x0可以是标量、向量或矩阵。
x = fminsearch(fun,x0,options)用options参数指定的优化参数进行最小化。
x= fminsearch(fun,x0,options,P1,P2,...) 将问题参数p1、p2等直接输给目标函数fun,将options参数设置为空矩阵,作为options参数的缺省值。
[x,fval] = fminsearch(...)将x处的目标函数值返回到fval参数中。
[x,fval,exitflag] = fminsearch(...)返回exitflag值,描述函数的退出条件。
[x,fval,exitflag,output] = fminsearch(...)返回包含优化信息的输出参数output。
fminunc无约束非线性最小化
fminunc给定初值,求多变量标量函数的最小值。常用于无约束非线性最优化问题。
x = fminunc(fun,x0)给定初值x0,求fun函数的局部极小点x。x0可以是标量、向量或矩阵。
x = fminunc(fun,x0,options)用options参数中指定的优化参数进行最小化。
x = fminunc(fun,x0,options,P1,P2,...)将问题参数p1、p2等直接输给目标函数fun,将options参数设置为空矩阵,作为options参数的缺省值。
[x,fval] = fminunc(...)将解x处目标函数的值返回到fval参数中。
[x,fval,exitflag] = fminunc(...)返回exitflag值,描述函数的输出条件。
[x,fval,exitflag,output] = fminunc(...)返回包含优化信息的结构输出。
[x,fval,exitflag,output,grad] = fminunc(...)将解x处fun函数的梯度值返回到grad参数中。
[x,fval,exitflag,output,grad,hessian] = fminunc(...)将解x处目标函数的Hessian矩阵信息返回到hessian参数中。
积分(quadl)[Q,Fcnt]=quad(function,a,b),其中function为被积函数(形式为函数句柄/匿名函数),a,b分别积分上限,[Q,Fcnt]分别返回数值积分的结果和函数计算的次数。
的用法和功能。

https://blog.csdn.net/shengwenj/article/details/49047863

10、 符号计算实验:(1)将 化简;(2)求 的解。
(1)例子: syms x y z
simplify(cos(x)*cos(y+z)+cos(x)+2*cos(y+z)-sin(x)*sin(y+z))

(2)https://blog.csdn.net/xiamenglei/article/details/80037968
例子:
syms a b c y x
[x,y]=solve([a*x^2+b*y+c==0,a*x+2*y==4],[x,y])

你可能感兴趣的:(matlab)