003 MATLAB基础计算

news/2024/11/30 9:54:37/

01 方程组的求解

多项式及其运算

多项式在MATLAB中以向量形式存储。
即n次多项式用一个长度为n+1的系数向量来表示,且按降幂,缺少的幂次对应的向量元素为0。 多项式的运算主要包括多项式的四则运算、求导、求值和求根运算

多项式的四则运算:

>> p1=[2 0 -6 1];
>> p2=[1 -1];

加减运算       p=polyadd(p1,p2)
                     p =      2     0    -5     0        ,适用于任意阶次间多项式相加
乘法运算       p=conv(p1,p2)
                     p =      2    -2    -6     7    -1        ,p=conv(p1,p2) 
除法运算       [p,r]=deconv(p1,p2)
                      p =      2     2    -4 r =      0     0     0    -3      
                ,[p,r]=deconv(p1,p2),其中k是商,r是余数。

多项式求导:

利用函数polyder来实现,语法格式:
 poly(p):返回多项式p的导数。  
poly(p1,p2):返回多项式p1*p2的导数。
[q,d]=poly(p1,p2):返回多项式p1/p2的导数,q是分子,d是分母。

多项式求值:

y=polyval(p,x):按数组运算规则计算多项式值。
y=polyvalm(p,X):按矩阵运算规则计算多项式值,且X只能是方阵

多项式求根:

>> p=[1 2 -5 0 4];
>> r=roots(p)

当多项式的根已知时,可以利用函数poly(r)来构建多项式的系数。
>> poly(r)
 ans =     1.0000    2.0000   -5.0000    0.0000    4.0000

02 线性方程组的求解:

可直接通过矩阵相除得到

>> A=[1 1 1;2 3 -1;-1 2 4];
>> B=[1;3;2];
>> x=A\B

03 非线性方程组的求根:

x=fzero(fun,x0)
建立函数文件方式:

%建立函数文件fun1.m。
function f=fun1(x)
f=x^2+2*x-exp(x)+5;
%以M函数文件的函数句柄输入方程

>> x=fzero(@fun1,1)                      
x =2.9929
以匿名函数方式输入方程方式:

%以匿名函数方式输入方程

>> x=fzero(@(x)x^2+2*x-exp(x)+5,1)        

x =     2.9929

%以字符串方式输入方程

>> x=fzero('x^2+2*x-exp(x)+5',1)            
x =     2.9929
以字符串方式输入方程:
>> x=fzero('x^2+2*x-exp(x)+5',1)            
x =     2.9929

非线性方程组求解:

x=fsolve(fun,x0)
求解时还可以在指令中加入options:
x=fsolve(fun,x0,options)
其中options通过调用optimset函数来设定最大优化代数、优化精度、中间结果的显示等等。
例如'Display'选项决定显示优化的中间结果的方式,其调用格式为:
options=optimset('Display','off'或'iter'或'final')
其中'off'表示不显示,'iter'表示每步都显示,'final'表示仅显示最终结果。

fun也可以以M函数文件的函数句柄、匿名函数或字符串方式输入

04 插值和拟合

由离散点数据来确定函数的方法

测量值是准确的,没有误差,一般用插值

测量值与真实值有误差,一般用曲线拟合

1 函数插值

作用:函数插值是根据给定的有限个样本点,产生另外的估计点以达到数据更为平滑的效果

一维插值函数的调用格式为:
yi=interp1(x,y,xi, 'method')

method是内插方法,可选择:
最近项插值'nearest'、线性插值'linear'、样条插值'spline'或立方插值'cubic',默认为线性插值。

其中的插值方式也可直接这么用:

s = spline(x,y,xq)

返回与查询点xq对应的插值向量s。s的值由x和y的三次样条插值确定。

>> x=0:10;y=sin(x)+cos(x);
>> xi=0:0.1:10;
>> y1=interp1(x,y,xi);
>> y2=interp1(x,y,xi,'nearest');
>> y3=interp1(x,y,xi,'spline');
>> y4=interp1(x,y,xi,'cubic');
plot(xi,y1,xi,y2,'-s',xi,y3,'-.',xi,y4,'-*')

  ‘nearest’为直角转折; ‘linear’是分段线性变化; 'spline'和 'cubic'形成的曲线很平滑

二维数据插值:
Z1=interp2(X,Y,Z,X1,Y1,'method')

其中X,Y是两个向量,分别描述两个参数的采样点,Z是与参数采样点对应的函数值,X1,Y1是两个向量或标量,描述欲插值的点。Z1是根据相应的插值方法得到的插值结果。 method的取值与一维插值函数相同

其中X1,Y1的取值范围不能超出X,Y的给定范围,否则,会给出“NaN”错误

>>x=0:2.5:10;
>>h=[0:30:60]';
>>T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];
>>xi=[0:0.5:10];
>>hi=[0:10:60]';
>>temps=interp2(x,h,T,xi,hi,'cubic');
>>mesh(xi,hi,temps)

 其中mesh是三维网格图绘制

2 曲线拟合 

作用:曲线拟合就是寻找一个函数(或曲线),使该函数(或曲线)在某种准则下与样本点数据最为接近,但并不要求拟合曲线通过全部已知的样本点

p=polyfit(x,y,n)

函数ployfit使用的准则是最小二乘准则:测得m个离散点,构造一个n(n<m)次多项式:p(x)=a1x^n+a2x^n-1+...+anx+an+1,使得在各个已知数据点处,(p(xi)-yi)^2之和达到最小。 

其中,x和y是已知样本点数据,n是拟合多项式的阶次,p为返回的拟合多项式的系数。

>> x=0:10;y=sin(x)+cos(x);
>> p1=polyfit(x,y,1),p2=polyfit(x,y,2),p3=polyfit(x,y,3),p4=polyfit(x,y,4);
>> x1=-1:0.1:11;
>> y1=polyval(p1,x1);
>> y2=polyval(p2,x1);
>> y3=polyval(p3,x1);
>> y4=polyval(p4,x1);
>>plot(x1,y1,'-*',x1,y2,'--',x1,y3,'-.',x1,y4)

05 常用于数据统计与分析的函数

1. 求矩阵最大元素和最小元素

(1)求最大值和最小值

y=max(X)
y=min(X)
  • 当X为向量时:

返回向量X的最大(小)值存入y,如果X中包含复数元素,则按模取最大(小)值

  • 当X为矩阵时:

返回一个行向量,返回每列的最大元素

[y,I]=max(X)
[y,I]=min(X)
  • 当X为向量时:

返回向量X的最大值(小)存入y,最大(小)值的序号存入I,如果X中包含复数元素,则按模取最大(小)值

  • 当X为矩阵时:

返回每列的最大元素和对应行号

max(A,[],dim)

dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量

 2. 求矩阵的平均值和中值

(1)求平均值和中值

mean(X)
  • 当X为向量时:

返回向量X的算术平均值。

  • 当X为矩阵时:

返回一个行向量,各列的平均值

mean(A,dim):当dim为1时,该函数等同于mean(A)。当dim为2时,各行的平均值
median(X)
  • 当X为向量时:

返回向量X的中值。(数据序列为偶数个,则取中间两项的平均值)

  • 当X为矩阵时:

返回一个行向量,各列的中值

median(A,dim):当dim为1时,该函数等同于median(A);当dim为2时,各行的中值

3. 矩阵元素求和与求积

 sum(X)
  • 当X为向量时:

返回向量X各元素的和

  • 当X为矩阵时:

返回一个行向量,各列之和

sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,各行之和
 prod(X)
  •  当X为向量时:

返回向量X各元素的乘积

  • 当X为矩阵时:

返回一个行向量,各列之积

prod(A,dim):当dim为1时,该函数等同于prod(A);当dim为2时,返回一个列向量,各行之积

 4.求标准方差

对于向量X:
std(X)
对于矩阵A: 
   Y=std(A,flag,dim)

其中当dim=1时,求各列元素的标准方差(返回行向量);
       当dim=2时,则求各行元素的标准方差(返回列向量)。

当flag=0时,按σ1所列公式计算标准差,
当flag=1时,按σ2所列公式计算标准差。
                省略时flag=0,dim=1

5.相关系数

 X,Y是向量:
 corrcoef(X,Y)
X是矩阵:
corrcoef(X)

返回从矩阵X形成的一个相关系数矩阵。它把矩阵X的每列作为一个变量,然后求它们的相关系数(各列两两之间,依次求相关系数)。

6.  排序 

对向量X:
sort(X)

函数返回一个对X中的元素按升序排列的新向量

 [Y,I]=sort(A,dim,mode)

其中若dim=1,则按列排;
       若dim=2,则按行排。

mode默认‘ascend’,若取‘descend’,则按降序。
Y是排序后的矩阵,而I记录Y中的元素在A中原来的位置。


http://www.ppmy.cn/news/1551159.html

相关文章

CTF之WEB(sqlmap tamper 参数)

apostropheask.py 作用:将单引号替换为UTF-8,用于过滤单引号。 base64encode.py 作用:替换为base64编码。 multiplespaces.py 作用:绕过SQL关键字添加多个空格。 space2plus.py 作用:用号替换…

Flink学习连载文章10--CheckPoint和维表Join

一、Checkpoint 1、State Vs Checkpoint State:状态,是Flink中某一个Operator在某一个时刻的状态,如maxBy/sum,注意State存的是历史数据/状态,存在内存中。 Checkpoint:快照点, 是Flink中所有有状态的Operator在某一个时刻的State快照信息/存档信息。 一句话概括: Checkpoi…

auto与decltype

auto: 1.定义&#xff1a; 在C中&#xff0c; auto 是一个类型说明符&#xff0c;它让编译器在编译阶段自动推导变量的类型&#xff0c;其类型取决于初始化表达式的类型。auto 在声明变量时使用&#xff0c;编译器会根据变量初始化表达式自动推断类型。 #include<iostrea…

IvorySQL与pg_failover_slot插件:如何实现逻辑复制槽的高可用主备同步

前言 在数据库高可用架构中&#xff0c;逻辑复制是实现数据同步和扩展的重要机制之一。通过逻辑复制&#xff0c;数据库管理员可以选择性地复制特定表的数据&#xff0c;而不必像物理复制那样进行全量数据库实例的复制。然而&#xff0c;逻辑复制槽的局限性在于它仅存在于主节…

QT的exec函数

在Qt框架中&#xff0c;exec()方法是QDialog类&#xff08;及其子类&#xff09;的一个成员函数&#xff0c;用于以模态&#xff08;modal&#xff09;方式显示对话框。当exec()被调用时&#xff0c;它会启动一个局部的事件循环&#xff0c;这个循环会阻塞对对话框之外的其他窗…

实时数据开发 | Flink反压机制原因、影响及解决方案

今天是很忙碌的一天哦&#xff0c;有两个业务在催着验收&#xff0c;终于21&#xff1a;45卡点交上去了。 明早再修修补补一下应该就可以开始做实时方面的需求了&#xff0c;小紧张&#xff0c; 今天同事在同步会上讲这块业务的数据流时就提到了checkpoint和savepoint还有流处理…

深入讲解Spring Boot和Spring Cloud,外加图书管理系统实战!

很抱歉&#xff0c;我的疏忽&#xff0c;说了这么久还没有给大家详细讲解过Spring Boot和Spring Cloud,那今天给大家详细讲解一下。 大家可以和下面这三篇博客一起看&#xff1a; 1、Spring Boot 和 Spring Cloud 微服务开发实践详解https://blog.csdn.net/speaking_me/artic…

Vite 6 正式发布

11 月 26 日&#xff0c;Vite 6.0 正式发布。自一年前 Vite 5 发布以来&#xff0c;Vite 的采用率持续增长&#xff0c;每周 npm 下载量已从 750 万次跃升至 1700 万次。与此同时&#xff0c;Vitest 不仅越来越受到用户的青睐&#xff0c;并开始逐步建立起属于自己的生态系统。…