MATLab --数值计算

多项式

  1. 多项式的表示
    对于多项式
    P(x)= a0xn+ a1xn-1+…+ an-1x+an
    可用矩阵表示,即
    P=[a0 a1 … an-1 an]

例: 系数向量直接输入多项式2x3-5x2+6x+3
命令如下:

p=[2,-5,6,3];
y=poly2sym(p) % 将系数向量表示成符号多项式
y = 2*x^3 - 5*x^2 + 6*x + 3
    • 多项式计算
      polyval函数用来求代数多项式的值,其调用格式为:
Y=polyval(P,x)
  • 若x为数值,则求多项式在该点的值;
  • 若x为矩阵,则对矩阵每个元素求其多项式的值。

例: 已知多项式x4+8x3-10,分别取x=1.2和一个3×2矩阵为自变量计算该多项式的值

w=[1,8,0,0,-10];
x=1.2;
s1=polyval(w,x)  // 多项式求值
s2=x.^4+8*x.^3-10 // 表达式验证
y=[1.2 -0.9; 0.3 1.4; 1 0.1];
s3=polyval(w,y)   // 多项式求值

结果:

s1 =  5.8976
s2 =  5.8976
s3 =
    5.8976  -15.1759
   -9.7759   15.7936
   -1.0000   -9.9919
  1. 多项式求根
x=roots(P)

其中P为多项式的系数向量,求得的根赋给向量x,即x(1),x(2),…,x(n)分别代表多项式的n个根

线性方程组

一般形式的线性方程组:
在这里插入图片描述
可转换为:
在这里插入图片描述
例: 求解线性方程组

在这里插入图片描述
程序如下:

A=[2,1,-5,1; ...
      1,-5,0,7; ...
      0,2,1,-1; ...
      1,6,-1,-4];
B=[13,-9,6,0]';
X=A\B   % 求解
               % R=inv(A)*B
C=A*X   % 验证

det(A):求方阵A的行列式
rank(A):求矩阵A的秩,即A中线性无关的行数和列数
inv(A):求方阵A的逆矩阵
trace: 求矩阵A的迹

  1. 矩阵分解
    常见的矩阵分解有:
    LU分解
    QR分解
    Cholesky分解

曲线拟合

使用polyfit函数求最小二乘法拟合多项式的系数,其调用格式为:

[P,S]=polyfit(X,Y,m)

X和Y为采样点数据;P为m次多项式的系数向量;
S为在采样点的误差向量,包括:

R:polyfit函数中,先根据输入的x构建范德蒙矩阵V,然后进行QR分解,得到的上三角矩阵。
df:自由度, df=length(Y)-(n+1)。
normr:标准偏差、残差范数。

clc; clear; close all;
x=1:5;
y=[2.7,7.4,20.0,54.5,148.4];
[b s]=polyfit(x,y,3)   
% 3次多项式拟合
% b是多项式拟合系数
% s是误差向量
xi=1:0.2:5;
yi=polyval(b,xi);  % 拟合函数在xi的数值
yf=polyval(b,x);   % 拟合函数在x的数值
plot(x,y,'rd',xi,yi,'b-.');
N2=norm(yf-y)   % 残差范数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值