matlab入门学习(四)多项式、符号函数、数据统计

一、多项式

%多项式(polynomial)

%创建
p=[1,2,3,4] %系数向量,按x降幂排列,最右边是常数(x的0次幂)
f1=poly2str(p,'x') %系数向量->好看的字符串 f=' x^3 + 2 x^2 + 3 x + 4'(不能运算的式子,仅供查看)
f2=poly2sym(p) %系数向量->可用的符号函数 f=x^3 + 2*x^2 + 3*x + 4默认用x

%求值
x=4;
y1=polyval(p,x) %polyval(系数向量,x)

%求根
r=roots(p) %由系数求根
p0=poly(r) %由根求系数

%数据插值
 %一维插值 yi=interp1(X,Y,xi,'method')
X=[-3,-1,0,1,3];
Y=[9,1,0,1,9];
yi=interp1(X,Y,2) %插值:估算在x=2的y的值(x不能查出已知范围)
yi=interp1(X,Y,2,'spline') %选择spline(三次样条法)进行插值,更精准但耗时长
 %二维插值 zi=interp1(X,Y,Z,xi,yi,'method')

二、符号函数 

创建符号函数、函数计算、精度转换;多项式的展开整理,求反函数

%符号函数

syms x; %声明符号变量
f1=poly2sym([7,5])
f2=7*x+5 %创建符号函数(直接写出来即可)

%符号函数计算
f=(3*x+2)*(4*x-1)
subs(f,x,4)
%subs 可以在符号表达式中将符号变量替换为其他值或表达式
% 例如:你有一个符号表达式 f 和一个符号变量 x,可以使用 subs(f, x, 4) 将 x 替换为 4

%精度转换
digits %显示当前计算精度
digits(16) %修改精度
ans16=vpa(sqrt(2)) %按指定精度计算
ans8=vpa(sqrt(2),8) %修改精度,并按指定精度计算

f=(3*x+2)*(4*x-1)
%多项式的展开整理
g=expand(f) %展开
h=collect(g) %整理,默认按x整理
h1=collect(g,x) %按x整理(降幂排列)

%求反函数
fin=finverse(f,x) %对f中的x变量求反函数

求极限,泰勒展开;求微分,求积分 

%极限
limit(f2,x,4) %求f(x),x->4
limit(f2,4) %默认变量->4
limit(f2) %默认变量->0
limit(f2,x,4,'right') %求右极限,x->4+ 'left'求左极限

%泰勒展开
f3=sin(x)
taylor(f3,x,4) %将f3在x=4处展开成五阶泰勒级数(默认变量,默认在0处)

%微分(求偏导)
diff(f,x,2) %f1对x的2阶导,相当于diff(f,x,x)
diff(f) %(默认变量,默认一阶导)
%多元偏导
fxy=diff(f,x,y) %先对x求偏导,再对y求偏导
fxyz=diff(f,x,y,z)

%积分
int(f,x,1,2) %f对x在1-2上积分(不写x则认为是默认变量,不写区间则认为是不定积分)
int(f)

 方程求解(线性、非线性)

syms x y;  % 正确声明符号变量

a = 4; b = 10;

% 线性一元方程
eqn1 = a*x == b;  % 生成符号方程式
Sx = solve(eqn1);  % solve求解

% 线性多元方程组
e1 = x + y == a; %生成符号方程式
e2 = x - y == b;
[Sx, Sy] = solve(e1, e2, x, y);  % 求解方程组(方程1,方程2,...,变量1,变量2,...)按顺序写变量,与Sx,Sy呼应

%非线性
f=@(var) [var(1)^2+var(2)^2-100; var(1)-var(2)-2];
initGuess=[6,6];
S=fsolve(f,initGuess) %fsolve(@函数名称/ 函数句柄,求解的起始点,option),至少包含两个参数
%注意:handle = @myFunction; 将函数名称转换为函数句柄

三、数据统计

%数据统计

A=[1,2,3;4,5,6;7,8,9]

%最大值
A_m=max(A) 
[A_m,k]=max(A) %没写则默认维度是1,求每列的最大值,k接收下标
[A_m,k]=max(A,[],2) %求每行的最大值

%均值
mean(A) %每一列
mean(A,2) %每一行

%中值
median(A) %每一列
median(A,2) %每一行

sum(A); sum(A,2);
prod(A); prod(A,2);  %求积
cumsum(A);  cumsum(A,2) %累加->对每一行,逐元素累加(仍是m*n矩阵)
cumprod(A);  cumprod(A,2) %累乘

%排序
Y=sort(A,1,"ascend") %对矩阵的列向量进行升序排序(ascend)降序(descend)
[Y,I]=sort(A,1,'descend') %I保存了列元素之前的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值