您的位置:首页 > 编程语言 > MATLAB

Matlab学习笔记--数值计算

2017-10-30 21:21 501 查看
数据拟合

多项式运算
多项式创建

多项式求值

多项式求根

多项式乘法运算

多项式除法运算

多项式的微积分

代数方程求解

数据拟合

>> x0=0:0.1:1;
>> y0=[-0.447 1.978 3.11 5.25 5.02 4.66 4.01 4.58 3.45 5.35 9.22];
>> p=polyfit(x0,y0,3)                 %数据拟合为3次函数型

p =

56.6915  -87.1174   40.0070   -0.9043

>> xx=0:0.01:1;yy=polyval(p,xx);     %计算函数的预计值
>> plot(xx,yy,'-b',x0,y0,'or')       %绘制拟合曲线和离散数据点


多项式运算

多项式创建

>> p=[1 -5 -4 3 -2 1];
>> y=poly2sym(p)

y =x^5 - 5*x^4 - 4*x^3 + 3*x^2 - 2*x + 1

>> y=poly2str(p,'x')

y = x^5 - 5 x^4 - 4 x^3 + 3 x^2 - 2 x + 1


多项式求值

>> p1=polyval(p,6)

p1 =529


多项式求根

roots用于根据多项式系数的行向量求解多项式的根。

poly用于根据根矢量返回多项式系数的形式。

roots与poly互为逆操作

>> p=[1 2 3 4];%
>> y=poly2sym(p)

y =x^3 + 2*x^2 + 3*x + 4        %得到多项式

>> r=roots(p)                   %求多项式的根

r =

-1.6506 + 0.0000i
-0.1747 + 1.5469i
-0.1747 - 1.5469i

>> p2=poly(r)

p2 = 1.0000    2.0000    3.0000    4.0000      %由多项式的根得到原多项式

%-------------------------------------------------------------------

>> p=[1 2 1];
>> y=poly2sym(p)

y =x^2 + 2*x + 1

>> r=roots(p)

r =
-1
-1

>> r=[0 2];
>> p2=poly(r)

p2 = 1    -2     0


tips:知道多项式的根x1,x2,x3⋅⋅⋅⋅⋅⋅xn.那么多项式就是y=(x−x1)∗(x−x2)∗(x−x3)⋅⋅⋅⋅⋅⋅(x−xn)展开即可

多项式乘法运算

conv(a,b) a,b为两个多项式的系数向量

c(x)=a(x)∗b(x)=(x2+2x+3)∗(4x2+5x+6)

>> a=[1 2 3];b=[4 5 6];
>> c=conv(a,b)

c = 4    13    28    27    18

>> poly2str(c,'x')

ans = 4 x^4 + 13 x^3 + 28 x^2 + 27 x + 18


多项式除法运算

deconv(a,b) 参数a,b表示为两个多项式系数的行向量,表示多项式a除以多项式b

>> a=[1 2 3];c=[4 13 28 27 18];
>> [d,r]=deconv(c,a)

d = 4     5     6                   %返回商多项式

r = 0     0     0     0     0       %返回余多项式


多项式的微积分

polyder(p):求p的微分

polyint(p):求p的不定积分,常数项为0

>> a=[1 2 3 4 5];poly2str(a,'x')

ans = x^4 + 2 x^3 + 3 x^2 + 4 x + 5

>> b=polyder(a)                   %微分

b =   4     6     6     4

>> poly2str(b,'x')

ans = 4 x^3 + 6 x^2 + 6 x + 4

>> c=polyint(a)                    %不定积分

c =  0.2000    0.5000    1.0000    2.0000    5.0000         0

>> poly2str(c,'x')

ans =0.2 x^5 + 0.5 x^4 +  x^3 + 2 x^2 + 5 x


代数方程求解

ax=b=>x=ba=a−1b

a11x1+a12x2+⋅⋅⋅+a1nxn=y1a21x1+a22x2+⋅⋅⋅+a2nxn=y1a31x1+a32x2+⋅⋅⋅+a3nxn=y1⋅⋅⋅⋅⋅⋅an1x1+an2x2+⋅⋅⋅+annxn=y1=>⎡⎣⎢⎢⎢⎢⎢a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann⎤⎦⎥⎥⎥⎥⎥∗⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢y1y2⋮yn⎤⎦⎥⎥⎥⎥⎥

所以⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann⎤⎦⎥⎥⎥⎥⎥−1∗⎡⎣⎢⎢⎢⎢⎢y1y2⋮yn⎤⎦⎥⎥⎥⎥⎥

x1+2x2=82x1+3x2=13

>> a=[1 2;2 3];b=[8;13];
>> x=a\b                      %矩阵除法求解

x =
2.0000
3.0000

>> x=inv(a)*b                %等价矩阵求逆求解

x =
2
3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: