首页 > 其他分享 >Matlab : 数值运算

Matlab : 数值运算

时间:2023-09-28 13:33:00浏览次数:42  
标签:end 运算 多项式 0.5 数值 Matlab diff x0 sin

学习一门技术最好的方式就是阅读官方文档,可以查看MATLAB官方文档

多项式的数值运算

使用MATLAB表示多项式

使用向量表示多项式

在MATLAB中,多项式可以用向量表示,向量中的元素为多项式的系数(降幂排序):第一位为多项式最高次项系数,最后一位为常数项.

例如多项式:
f ( x ) = x 3 − 2 x − 5 f(x) = x^3 - 2x - 5 f(x)=x3−2x−5

可以用向量p = [1 0 -2 -5]表示.

多项式求值:polyval()

使用polyval(p, x)可以计算多项式px的每个点处的值.

a = [9,-5,3,7]; x = -2:0.01:5;
f = polyval(a,x);
plot(x,f);

Matlab : 数值运算_MATLAB

多项式的乘法:conv()

使用conv(p1, p2)函数可以对两个向量p1p2进行卷积相乘,用于计算多项式的乘法.

例如多项式:
f ( x ) = ( x 2 + 1 ) ( 2 x + 7 ) f(x) = (x^2+1) (2x+7) f(x)=(x2+1)(2x+7)

可以使用conv()函数得到展开后的多项式:

p = conv([1 0 1], [2 7])

得到p = [2 7 2 7].

多项式的数值运算

多项式的因式分解:roots()

使用roots(p)函数可以对多项式p进行因式分解,即求表达式值为0的根.

p = roots([1 -3.5 2.75 2.125 -3.875 1.25])

得到p = [2 -1, 1+0.5i, 1-0.5i, 0.5],表示 x 5 − 3.5 x 4 + 2.75 x 3 + 2.125 x 2 + − 3.875 x + 1.25 = ( x − 2 ) ( x + 1 ) ( x − 1 − 0.5 i ) ( x − 1 + 0.5 i ) ( x − 0.5 ) x^5 -3.5 x^4 +2.75 x^3 + 2.125 x^2 + -3.875 x+1.25 = (x-2)(x+1)(x-1-0.5i)(x-1+0.5i)(x-0.5) x5−3.5x4+2.75x3+2.125x2+−3.875x+1.25=(x−2)(x+1)(x−1−0.5i)(x−1+0.5i)(x−0.5).

多项式的微分:polyder()

使用polyder(p)函数可以计算多项式的导数.

例如对下面多项式求导:
f ( x ) = 5 x 4 − 2 x 2 + 1 f(x) = 5x^4 - 2x^2 + 1 f(x)=5x4−2x2+1

p = polyder([5 0 -2 0 1]);

得到p = [20 0 -4 0],表示计算得到导数 f ′ ( x ) = 20 x 3 − 4 x f'(x) = 20 x^3 - 4x f′(x)=20x3−4x.

多项式的积分:polyint()

使用polyint(p, k)函数可以计算多项式p的积分,积分结果的常数项设为k.

例如对下面多项式求导:
f ( x ) = 5 x 4 − 2 x 2 + 1 f(x) = 5x^4 - 2x^2 + 1 f(x)=5x4−2x2+1

p = polyint([5 0 -2 0 1], 3)

得到p = [1 0 -0.6667 0 1 3],表示计算得到积分 ∫ f ( x ) d x = x 5 − 0.6667 x 3 + x + 3 \int f(x) dx = x^5 -0.6667x^3 + x + 3 ∫f(x)dx=x5−0.6667x3+x+3.

非线性表达式的数值运算

方程(组)求根fsolve()

使用fsolve(fun, x0)求非线性方程组的根,fun为待求方程的函数句柄,x0为初值.

  1. 求方程 1.2 x + x sin ⁡ ( x ) + 0.3 = 0 1.2x+x\sin(x)+0.3=0 1.2x+xsin(x)+0.3=0在 x = 0 x=0 x=0附近的解.
f2 = @(x) (1.2*x+x*sin(x)+0.3);
fsolve(f2,0)	% 得到 -0.3500
  1. 解方程组
    { e − e − ( x 1 + x 2 ) − x 2 ( 1 + x 1 2 ) = 0 x 1 cos ⁡ x 2 + x 2 sin ⁡ x 1 − 1 2 = 0 \begin{aligned} \left\{ \begin{aligned} e^{-e^{-(x_1+x_2)}} - x_2(1+x_1^2) = 0 \\ x_1 \cos x_2 + x_2 \sin x_1 - \frac{1}{2} = 0 \end{aligned} \right. \end{aligned} ⎩⎪⎨⎪⎧e−e−(x1+x2)−x2(1+x12)=0x1cosx2+x2sinx1−21=0
    设定初值为 [ 0 , 0 ] [0, 0] [0,0]
fun = @(x) [exp(-exp(-(x(1)+x(2))))-x(2)*(1+x(1)^2)...
    x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5]
x0 = [0,0];
x = fsolve(fun,x0)	% 得到[0.3532 0.6061]

数值微分

求差分:diff()

使用diff(X, n)计算向量Xn阶差分,n默认为1.

x = [1 2 5 2 1];
diff(x);	% 得到 [1 3 -3 -1]
diff(x,1);	% 得到 [1 3 -3 -1]
diff(x,2);	% 得到 [2 -6 2]

求导数:diff(y)./diff(x)

使用导数的定义
f ′ ( x 0 ) = lim ⁡ h → 0 f ( x 0 + h ) − f ( x 0 ) h f'(x_0) = \lim_{h\rarr 0} \frac{f(x_0 + h) - f(x_0)}{h} f′(x0)=h→0limhf(x0+h)−f(x0)

可以计算函数在某点的近似导数.

x0 = pi/2; h = 0.1;
x = [x0 x0+h];
y = [sin(x0) sin(x0+h)];
m = diff(y)./diff(x)		% 得到 m = -0.005

h的取值越小,得到的近似导数越精确.

Matlab : 数值运算_多项式_02

下面程序计算 f ( x ) = x 3 f(x) = x^3 f(x)=x3的一阶和二阶导数的值.

x = -2:0.005:2; y = x.^3;
m = diff(y)./diff(x);			% 计算一阶导数
m2 = diff(m)./diff(x(1:end-1));	% 计算二阶导数

plot(x,y,x(1:end-1),m,x(1:end-2),m2);
xlabel('x'); ylabel('y');
legend('f(x) =x^3','f''(x)','f''''(x)', 4);

Matlab : 数值运算_数值积分_03

数值积分

数值积分原理

有三种常见算法用于计算数值积分: 矩形法,梯形法,抛物线法,它们分别把微分区间的图形视为矩形,梯形,抛物线以计算面积.

Matlab : 数值运算_数值积分_04

下面分别使用三种方法计算 f ( x ) = 4 x 3 f(x) = 4x^3 f(x)=4x3在区间 ( 0 , 2 ) (0, 2) (0,2)内的积分.

h = 0.05; x = 0:h:2;
y = 4*midpoint.^3;

% 使用矩形法计算近似积分
midpoint = (x(1:end-1)+x(2:end))./2;
s = sum(h*y)			% 得到 15.9950

% 使用梯形法计算近似积分
trapezoid = (y(1:end-1)+y(2:end))/2;
s = h*sum(trapezoid)	% 得到 15.2246

% 使用抛物线法计算数值积分
s = h/3*(y(1)+2*sum(y(3:2:end-2))+4*sum(y(2:2:end))+y(end))	% 得到 15.8240

数值积分函数:integral()

integral(),integral2(),integral3()分别对函数在xminxmax间进行一重,二重,三重积分.

它们的第一个参数都应该是一个函数句柄,下面例子演示他们的用法:

  1. 计算 ∫ 0 2 1 x 3 − 2 x − 5 \int_0^2 \frac{1}{x^3-2x-5} ∫02x3−2x−51
f = @(x) 1./(x.^3-2*x-5);
integral(f,0,2)		% 得到 -0.4605
  1. 计算 ∫ 0 π ∫ π 2 π ( y sin ⁡ ( x ) + x cos ⁡ ( y ) ) d x d y \int_0^\pi \int_\pi^{2\pi} (y\sin(x) + x \cos(y)) dx dy ∫0π∫π2π(ysin(x)+xcos(y))dxdy
f = @(x,y) y.*sin(x)+x.*cos(y);
integral2(f,pi,2*pi,0,pi)	% 得到 -9.8696
  1. 计算 ∫ − 1 1 ∫ 0 1 ∫ 0 π ( y sin ⁡ ( x ) + z cos ⁡ ( y ) ) d x d y d z \int_{-1}^1 \int_0^1 \int_0^\pi (y\sin(x) + z \cos(y)) dx dy dz ∫−11∫01∫0π(ysin(x)+zcos(y))dxdydz
f = @(x,y,z) y.*sin(x)+z.*cos(y);
integral3(f,0,pi,0,1,-1,1)

标签:end,运算,多项式,0.5,数值,Matlab,diff,x0,sin
From: https://blog.51cto.com/u_16189732/7638448

相关文章

  • 结对项目:自动生成小学四则运算题目
    所属课程软件工程导论作业要求个人项目作业目标熟悉结对编程、完成小学四则运算题目的自动生成小组成员姓名班级学号林劲辰计科2班3121004707许庆阳计科2班3121004931Github链接:https://github.com/HsuQingYoung/PeerWork项目要求1、......
  • 结对项目:用python实现一个自动生成小学四则运算题目的命令行程序
    这个作业属于哪个课程计科21级12班这个作业的要求在哪里结对项目这个作业的目标了解结对项目的过程团队成员信息姓名学号肖兴明3121004712徐强3121004713Github链接GithubPSPPSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实......
  • 结对项目:自动生成小学四则运算题目
    软件工程https://edu.cnblogs.com/campus/gdgy/CSGrade21-12?filter=all作业要求https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13016作业目标学习算法,完成简单的四则运算团队成员:姓名:陈鑫杰学号:3121004688姓名:黄嘉俊学号:3121004696Git链接:h......
  • 小学四则运算题目生成器
    这个作业属于哪个课程软件工程这个作业要求在哪里在这里这个作业的目标写个小学四则运算题目生成器,学会与同伴合作做项目陈威衡3121005206郑贵南3121005237github连接需求分析表达式中的分数都用真分数的形式表示生成的表达式里只包含四则运算和括号每......
  • 9.27四则运算思路
    1.写一个控制操作数的函数,控制随机数范围,是否有括号,操作数,是否写入文件可以用数组储存数值用集合存运算符,存括号可以采用随机第一个左括号产生0到n-1之间,包左不包右,假设y,第二个的取值是第一个y+1到n若有括号n个数,n-1个运算符,数据结构,两个栈,一个存数,一个存运算符,然后运算得出结......
  • Python实现自动生成四则运算题目和答案检测
    这个作业属于哪个课程软件工程这个作业要求在哪里结对项目这个作业的目标实现自动生成四则运算题目功能,以及给定题目和答案、判断答案对错的功能本项目上传至个人GitHub:yulinnn/PythonProject_FourOperations项目需求题目:实现一个自动生成小学四则运算题目的......
  • 结对编程-小学四则运算
    结对编程——小学四则运算这个作业属于哪个课程软件工程这个作业要求在哪里软件工程这个作业的目标1、尝试结对编程2、深入熟悉开发过程3、设计一个能自动生成小学四则运算题并批改题目的程序 一、合作者姓名学号郑佳媚322100507......
  • Matlab 设计仿真CIC滤波器
    2023.09.26使用CIC滤波器用于降采样。同样的,CIC滤波器也适用于升采样。参考连接:[1]Matlab中CIC滤波器的应用_dsp.cicdecimator_张海军2013的博客-CSDN博客[2]Matlab中CIC滤波器的应用-知乎(zhihu.com)[3]CICfilter及其matlab实现-CSDN博客[4]【ljelly原创】Matla......
  • 结对项目-四则运算题目生成
    前言这个作业属于哪个课程21计科三班这个作业要求在哪里结对项目这个作业的目标结对完成一个四则运算生成器及判题器,体验并熟悉结对编程的流程开发者黄锐智(3121005262)岑坤涛(3121005077)项目地址https://github.com/Taoika/Arithmetic已实现功能点使......
  • Java实现四则运算生成器
    这个作业属于哪个课程计科二班这个作业要求在哪里结对项目这个作业的目标熟悉结对编程项目成员龙新超3121004921github链接:龙新超github艾孜海尔江3121004900github链接:海尔江githubPSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实......