我是靠谱客的博主 欢呼大船,最近开发中收集的这篇文章主要介绍Matlab多项式和符号函数简介,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本篇博客是B站教学视频的学习笔记,视频教程地址:https://www.bilibili.com/video/BV1hE411Q7T4,Up主讲的很好,部分内容有删减。部分内容为我自己的理解,由于本人水平有限,可能存在表述不准确的地方,见谅!

Matlab多项式与数据统计

% 介绍多项式的内容
p=[1,2,3,4];
f1=poly2str(p,'x'); % 生成好看的符号串
% disp(f1) 结果为 x^3 + 2 x^2 + 3 x + 4
f2=poly2sym(p); % 生成可用的符号函数
% disp(f2) 结果为 x^3 + 2*x^2 + 3*x + 4
x=2;
y=polyval(p,x); %带入求值,即求 x^3 + 2*x^2 + 3*x + 4 在x=2时的值。
% 知道系数矩阵,求根
r=roots(p);
% 知道根,求系数矩阵
p_=poly(r);
% 数据插值操作
X=[-3,-1,0,1,3];
Y=[9,1,0,1,9];
% 上面两行描述已知点。
y2=interp1(X,Y,2); % 使用插值方法,预测当x=2时,值为多少 
y2m=interp1(X,Y,2,'spline'); %使用三次样条方法插值,估计当x=2时的值为多少。

% 数据统计操作
% 定义数据
X = [2, 3, 9, 15, 6, 7, 4];
A = [1, 7, 2; 9, 5, 3; 8, 4 ,6];
B = [1, 7, 3; 9, 5, 3; 8, 4 ,6];

% 求矩阵的最大值
y=max(X);
[y,k]=max(X); % k为最大值的角标,y为最大值的值
max(A,[],1); % 求每一列的最大值,结果为行向量
max(A,[],2); % 求每一行的最大值,结果为列向量,
[y,k]=max(A,[],1); % 不仅返回最大值,还有角标位置

% 均值和中值
y=mean(X);
mean(A,1); % 求A每一列的均值,结果为行向量
mean(A,2); % 求A每一行的均值,结果为列向量
y=median(X);
median(A,1); % 求A每一列的中值,结果为行向量
median(A,2); % 求A每一行的中值,结果为列向量

% 其它运算
y = sum(X); % 求和
y = prod(X); % 求积
y = cumsum(X); % 累加
y = cumprod(X); % 累乘

% 排序操作
% sort(矩阵, dim, 'method') dim为1按列排序,2按行排序;
% ascend升序,descend降序
Y = sort(A, 1, 'ascend');
[Y,I] = sort(A, 1, 'ascend'); % I表示Y中对应元素在原来数组中的角标

Matlab符号函数

% 符号函数创建
% 使用sym函数
p=sin(pi/3); % p = 0.8660
% p:符号常量
% 第二个参数:d:浮点数,f:有理分数,e:有理数和误差,r:有理数
P=sym(p,'r'); % 用数值创建符号常量P;

%使用syms函数
syms x; %声明符号变量
f=7*x^2+2*x+9; %创建符号函数

% 符号运算
%符号运算
% 加减乘除外
% '转置 ; ==相等 ; ~=不等
% sin, cos, tan; asin, acos, atan 三角反三角
% sinh, cosh, tanh; asinh, acosh, atanh 双曲反双曲
% conj复数共轭;real复数实部;imag复数虚部;abs复数模;angle复数幅角
% diag矩阵对角;triu矩阵上三角;tril矩阵下三角;inv逆矩阵;det行列式;rank秩;poly特征多项式;
% |----expm矩阵指数函数;eig矩阵特征值和特征向量;svd奇异值分解;

% 精度控制
digits; % 显示当前计算精度
digits(16); % 将精度设置为16
a16=vpa(sqrt(2)); % 以16位的精度计算sqrt(2);
a8=vpa(sqrt(2),8); % 以8位的精度计算sqrt(2);

% 符号多项式函数运算
g=expand(f); % 展开
h=collect(g); % 整理,默认按照x整理
h1=collect(f,x); % 按照x整理;
% 因式分解展开质因数
fac=factor(h);
factor(12);
% 符号多项式向量形式与计算
syms a b c; % 定义符号变量
n=[a,b,c]; % 构建符号向量
roots(n);  % 求符号多项式ax^2+b^x+c=0的根
n=[1,2,3];
roots(n); % 求符号多项式带入 a=1,b=2,c=3的根
% 反函数
fi=finverse(f,x);

% 符号函数微积分
limit(f,x,4); % 求关于x的函数在x->4时的极限
limit(f,4); % 默认变量等于4时的极限
limit(f); % 等价于 limit(f,0) 
limit(f,x,4,'left'); % 求左极限,x->4-

% 基本级数运算
syms x;
s=x+1;
symsum(s,x,[0 2]); % 结果是6,分别将0,1,2 带入x+1并求和
symsum(s,x,0,2); %与上面等价
symsum(s,x,[0;2]) % 与上面等价
% 一维泰勒展开
taylor(f,x,4); % 在x=4处展开为5阶泰勒级数
taylor(f,4); % 在默认变量=4处展开为5阶泰勒级数
taylor(f); % 在默认变量=0处展开为5阶泰勒级数

% 符号微分
n=1;
fn=diff(f,x,n); % f(x) 对x的n阶导
diff(f,1);
diff(f);

% 多元偏导
fxy=diff(f,x,y); % 先求x偏导,再求y偏导
fxyz=diff(f,x,y,z); % 先求x偏导,再求y偏导,最后求z偏导

% 符号积分
% 定积分
int(s,x,1,2);
int(s,1,2);
% 不定积分
int(s,x);
int(s);

% 符号方程求解
% 一元方程
eqn1=a*x==b;
S=solve(eqn1);
% 多元方程组
eqn21 = x-y==a;
eqn22 = 2*x+y==b;
% [Svar1,...SvarN]=solve(eqn1,...eqnM, var1,...varN),MN不一定相等
[Sx, Sy] = solve(eqn21, eqn22, x, y);
% 加上参数ReturnCondition可返回通解及解的条件
[Sxn, Syn] = solve(eqn21, eqn22, x, y, 'ReturnCondition', true);
% 其他参数(参数加上true生效)
% IgnoreProperty,忽略变量定义时一些假设
% IgnoreAnalyticConstraints,忽略分析限制;
% MaxDegree,大于3解显性解;
% PrincipleValue,仅主值
% Real,仅实数解

最后

以上就是欢呼大船为你收集整理的Matlab多项式和符号函数简介的全部内容,希望文章能够帮你解决Matlab多项式和符号函数简介所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部