Matlab(数值微积分)
目录
1.多项式微分与积分
1.1 微分
1.2 多项式微分
1.3 如何正确的使用Matlab?
1.3.1 Matlab表达多项式
1.3.2 polyval() 多项式求值
1.3.3 polyder()多项式微分
1.4 多项式积分
1.4.1 如何正确表达
1.4.2 polyint() 多项式积分
2.数值的微分与积分
2.1 数值微分
2.2 diff() 计算差值
2.3 误差的准确性
2.4 二阶、三阶导数
2.5 数值积分
2.5.1中点规则
2.5.2 梯形规则(trapz)
2.5.3 辛普森积分法
2.5.4 三种积分方式比较
3.函数句柄
3.1 创建函数句柄
3.1.1 有参数的句柄函数
3.1.2 无参数的句柄函数
3.1.3 无参且无括号
3.2 匿名函数
3.3 错误示范
3.4 integral() 数值积分
3.4.1 一级积分
3.4.2 integral2() 二级积分
3.4.3 integral3() 三级积分
1.多项式微分与积分
1.1 微分
- 函数f(x)导数写为:F'(x)或者
- 函数f(x)关于x的变化率
f (x0) 表示点x0处曲线相切的直线的系数。

1.2 多项式微分
对于一个多项式: 来说,其微分多项式为:
1.3 如何正确的使用Matlab?
1.3.1 Matlab表达多项式
在上式中,我们用Matlab应该怎么进行表示(多项式在Matlab中被表示为行向量)

>> p=[1 0 -2 -5]p =1 0 -2 -5
1.3.2 polyval() 多项式求值
语法:y=polyval(p,x)
y= polyval(p,x) 计算多项式 p 在 x 的每个点处的值。参数 p 是长度为 n+1 的向量,其元素是 n 次多项式的系数(降幂排序):
示例1:
计算多项式 p(x)=3x^2+2x+1在点 x=5、7 、9 处的值。
>> p = [3 2 1];
x = [5 7 9];
y = polyval(p,x)y =86 162 262
示例2:
对该多项式进行画图求值
>> a = [9,-5,3,7]; x = -2:0.01:5;
f = polyval(a,x);
plot(x,f,'LineWidth', 2);%设置线条粗度
xlabel('x轴'); ylabel('f(x)');%设置xy轴名称
set(gca, 'FontSize', 14)%设置字体大小

1.3.3 polyder()多项式微分
语法一:k=polyder(p)
k=polyder(p)返回的p中的系数表示的多项式的导数
示例:
创建一个向量来表示多项式 p(x)=3x^5−2x^3+x+5。
p = [3 0 -2 0 1 5];
使用polyder对多项式进行求导,结果为:
q = polyder(p)
q = 1×515 0 -6 0 1
语法二:k= polyder(a,b) 返回多项式 a 和 b 的乘积的导数
示例:
创建两个向量来表示多项式 a(x)=x^4−2x^3+11 和 b(x)=x^2−10x+15。
a = [1 -2 0 0 11];
b = [1 -10 15];
q = polyder(a,b)
q = 1×66 -60 140 -90 22 -110
最后的结果为:
语法三:[q,d] = polyder(a,b) 返回多项式 a 和 b 的商的导数
示例:
创建两个向量来表示商中的多项式
p = [1 0 -3 0 -1];
v = [1 4];
[q,d] = polyder(p,v)
q = 1×53 16 -3 -24 1d = 1×31 8 16
结果为:
1.4 多项式积分
对于一个多项式:
积分多项式为:
1.4.1 如何正确表达
1.4.2 polyint() 多项式积分
语法:q=polyint(p,k) 如果只有的一个参数p,默认k是0,使用积分常量k返回p中的系数所表示的多项积分
示例:
对两个多项式的乘积求积分
- 创建向量来表示多项式
p = [1 0 -1 0 0 1];
v = [1 0 1];
- 多项式相乘,并使用积分常量k=3对所生成的表达式求积分
k = 3;
q = polyint(conv(p,v),k)
q = 1×90.1250 0 0 0 -0.2500 0.3333 0 1.0000 3.0000
- 通过在积分范围上计算q来求解I的值
a = 0;
b = 2;
I = diff(polyval(q,[a b]))
I = 32.6667
2.数值的微分与积分
2.1 数值微分
- 最简单的方法:有限差分近似法
- 计算x附近的割线
2.2 diff() 计算差值
diff() 计算向量中相邻元素之间的差值
x = [1 2 5 2 1];
diff(x)
>> x = [1 2 5 2 1];
diff(x)ans =1 3 -3 -1
示例:
求出两点之间的斜率
>> x = [1 2]; y = [5 7];
slope = diff(y)./diff(x) %y的变化量/x的变化量slope =2
2.3 误差的准确性
当
h=0.1、0.01、0.001s时误差有什么变化?
当h=0.1时:
>> x0 = pi/2; h = 0.1;
x = [x0 x0+h];
y = [sin(x0) sin(x0+h)];
m = diff(y)./diff(x)m =-0.0500
当h=0.01时:
>> x0 = pi/2; h = 0.01;
x = [x0 x0+h];
y = [sin(x0) sin(x0+h)];
m = diff(y)./diff(x)m =-0.0050
当h=0.001时:
>>
x0 = pi/2; h = 0.001;
x = [x0 x0+h];
y = [sin(x0) sin(x0+h)];
m = diff(y)./diff(x)m =-5.0000e-04
由分析得:所以当h->0时,误差越小
g = colormap(lines); hold on;
for i=1:4
x = 0:power(10, -i):pi;
y = sin(x); m = diff(y)./diff(x);
plot(x(1:end-1), m, 'Color', g(i,:));%每次微分,系数的个数少1
end
hold off;
set(gca, 'XLim', [0, pi/2]); set(gca, 'YLim', [0, 1.2]);
set(gca, 'FontSize', 18); set(gca, 'FontName', 'symbol');
set(gca, 'XTick', 0:pi/4:pi/2);
set(gca, 'XTickLabel', {'0', 'p/4', 'p/2'});
h = legend('h=0.1','h=0.01','h=0.001','h=0.0001');
set(h,'FontName', 'Times New Roman'); box on;
2.4 二阶、三阶导数
>> 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);%每次导数系数减1
xlabel('x', 'FontSize', 18);
ylabel('y', 'FontSize', 18);
legend('f(x) =x^3','f''(x)','f''''(x)');
set(gca, 'FontSize', 18);
2.5 数值积分
- 求积法——用有限集点逼近积分
2.5.1中点规则
示例:
我们通过积分可以求得:
但是我们通过中点积分可得:
>> h = 0.05; x = 0:h:2;
midpoint = (x(1:end-1)+x(2:end))./2;
y = 4*midpoint.^3;
s = sum(h*y)s =15.9950
解释:
midpoint = (x(1:end-1)+x(2:end))./2;
2.5.2 梯形规则(trapz)
>> h = 0.05; x = 0:h:2; y = 4*x.^3;
s = h*trapz(y)s =16.0100
我们也可以自定义该函数:
h = 0.05; x = 0:h:2; y = 4*x.^3;
trapezoid = (y(1:end-1)+y(2:end))/2;
s = h*sum(trapezoid)s =16.0100
2.5.3 辛普森积分法
>> h = 0.05; x = 0:h:2; y = 4*x.^3;
s = h/3*(y(1)+2*sum(y(3:2:end-2))+...
4*sum(y(2:2:end))+y(end))s =16
2.5.4 三种积分方式比较
由分析易得: 辛普森积分法误差最小
3.函数句柄
函数句柄是一种存储指向函数的关联关系的Matlab数据类型,间接调用函数使您在调用函数时无需考虑调用位置,函数句柄的典型用法包括:
- 将一个函数传递到另一个函数(通常称为复合函数)
- 指定回调函数
- 构造以内联方式定义而非存储在程序文件(匿名函数)中的函数句柄
- 从主函数外调用局部函数
查看h是否是函数句柄
isa(h,'function_handle')
3.1 创建函数句柄
通过在函数名称前添加一个 @ 符号来为函数创建句柄。
f = @myfunction;
3.1.1 有参数的句柄函数
使用句柄调用函数的方式与直接调用函数一样,例如:
function y = computeSquare(x)
y = x.^2;
end
创建句柄并调用该函数以计算 4 的平方。
f = @computeSquare;
a = 4;
b = f(a)
b =16
3.1.2 无参数的句柄函数
如果该函数不需要任何输入,则您可以使用空括号调用该函数,例如:
h = @ones;
a = h()
a =1
3.1.3 无参且无括号
如果不使用括号,则该赋值会创建另一个函数句柄。
a = h
a = @ones
3.2 匿名函数
您可以创建指向匿名函数的句柄。匿名函数是基于单行表达式的 MATLAB 函数,不需要程序文件。构造指向匿名函数的句柄,方法是定义 anonymous_function 函数主体,以及指向匿名函数 arglist 的以逗号分隔的输入参数列表。语法为:
h = @(arglist)anonymous_function
例如,创建一个指向用于计算平方数的匿名函数的句柄 sqr,并使用其句柄调用该匿名函数。
sqr = @(n) n.^2;
x = sqr(3)
x =9
3.3 错误示范
function [y] = xy_plot(input,x)
% xy_plot receives the handle of a function
% and plots that function of x
y = input(x); plot(x,y,'r--');
xlabel('x'); ylabel('function(x)');
end
>> xy_plot(sin,0:0.01:2*pi)
错误使用 sin
输入参数的数目不足。
调用参数的时候,如果该参数也是一个函数,这个时候直接将函数当成参数输入进去是不妥的,会直接报错,这个时候我们就需要句柄
>>
xy_plot(@sin,0:0.01:2*pi)ans =列 1 至 110 0.0100 0.0200 0.0300 0.0400 0.0500 0.0600 0.0699 0.0799 0.0899 0.0998列 12 至 220.1098 0.1197 0.1296 0.1395 0.1494 0.1593 0.1692 0.1790 0.1889 0.1987 0.2085列 23 至 330.2182 0.2280 0.2377 0.2474 0.2571 0.2667 0.2764 0.2860 0.2955 0.3051 0.3146
...
3.4 integral() 数值积分
3.4.1 一级积分
我们通过句柄该怎么去解决呢?
>> y = @(x) 1./(x.^3-2*x-5);
integral(y,0,2)ans =-0.4605
3.4.2 integral2() 二级积分

>> f = @(x,y) y.*sin(x)+x.*cos(y);
integral2(f,pi,2*pi,0,pi)ans =-9.8696
3.4.3 integral3() 三级积分

>> f = @(x,y,z) y.*sin(x)+z.*cos(y);
integral3(f,0,pi,0,1,-1,1)ans =2.0000
相关文章:
Matlab(数值微积分)
目录 1.多项式微分与积分 1.1 微分 1.2 多项式微分 1.3 如何正确的使用Matlab? 1.3.1 Matlab表达多项式 1.3.2 polyval() 多项式求值 1.3.3 polyder()多项式微分 1.4 多项式积分 1.4.1 如何正确表达 1.4.2 polyint() 多项式积分 2.数值的微分与积分 2.1 数值微分 2…...
【数据结构回顾】
数据结构回顾 一、单链表二、单循环链表 一、单链表 #include <stdio.h> #include <stdlib.h>typedef struct Node {int data;Node *next; }Node;Node* initList() {Node *list (Node*)malloc(sizeof(Node));list->data 0;list->next NULL;return list; }…...
QT创建可移动点类
效果如图所示: 创建新类MovablePoint,继承自QWidget. MovablePoint头文件: #ifndef MOVABLEPOINT_H #define MOVABLEPOINT_H#include <QWidget> #include <QPainter> #include <QPaintEvent> #include <QStyleOption> #includ…...
Flutter启动页
效果图 import dart:async; import package:flutter/cupertino.dart; import package:flutter/material.dart; import jumpPage.dart;class TransitPage extends StatefulWidget {const TransitPage({super.key});overrideState<TransitPage> createState() > _Trans…...
读word模板批量生成制式文件
文章目录 1、Maven依赖2、.docx或.doc格式的word模板准备3、读word模板,批量替换代码域,生成文件,demo4、结果展示 1、Maven依赖 <dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagre…...
Node.js crypto模块 加密算法
背景 微信小程序调用飞蛾热敏纸打印机,需要进行参数sig签名校验,使用的是sha1进行加密 // 通过crypto.createHash()函数,创建一个hash实例,但是需要调用md5,sha1,sha256,sha512算法来实现实例的…...
Win11 避坑安装WSL2 Ubuntu22.04
开始之前以管理员身份打开 PowerShell 启用适用于 Linux 的 Windows 子系统 需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。 PowerShell然后输入以下命令: dism.exe /online /enable-feature /featur…...
ESP8266+继电器+MQTT+VUE 实现远程开关灯
超详细教程 – ESP8266继电器MQTTVUE 实现远程开关灯 超详细教程 – ESP8266继电器MQTTVUE 实现远程开关灯 接线图 NC(通常闭合)与COM(公共)、NO(通常开放)与COM 是继电器引脚的不同配置,用于不…...
Android中级——四大组件工作过程
四大组件工作过程 ActivityServicestartService()过程bindService()过程 BroadcastReceiver注册过程发送和接收过程 ContentProvider Activity startActivity()最终都会调用到startActivityForResult() public void startActivityForResult(RequiresPermission Intent intent…...
【RabbitMQ】RabbitMQ 服务无法启动。系统出错。发生系统错误 1067。进程意外终止。
问题描述 RabbitMQ 服务无法启动。 rabbitmq-service.bat startRabbitMQ 服务正在启动 . RabbitMQ 服务无法启动。系统出错。发生系统错误 1067。进程意外终止。原因分析 RabbitMQ和Erlang版本不匹配。 解决方案 查询并安装RabbitMQ版本对应Erlang版本 https://www.rabbitm…...
如何理解attention中的Q、K、V?
y直接用torch实现一个SelfAttention来说一说: 1、首先定义三哥线性变换,query,key以及value: class BertSelfAttention(nn.Module):self.query nn.Linear(config.hidden_size, self.all_head_size)#输入768,输出768…...
Redis----取代RabbitMq 和 Kafka的解决方案
背景 已知rabbitmq和kafka作为消息中间件来给程序之间增加异步消息传递功能,这两个中间件都是专业的,功能也很强,但是有的时候过于复杂,对于只有一组消费者的消息队列,使用Redis 就可以轻松搞定。 异步消息队列 读者…...
动态规划之连续乘积最大子数组 连续和最大子数组
一. 连续和最大子数组 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,…...
keil在点击debug无法运行(全速运行)
1、今天发现我之前可以debug的程序,在板子上无法debug了,打断点完全没用 2、换了电脑,带板子过去也这样,之前可以运行的代码都debug不了 3、按照网上的方法,都不行,全速运行,单步执行都是灰色…...
go语言-协程
mOS结构体 每一种操作系统不同的线程信息 g给g0栈给g0协程内存中分配的地址,记录函数跳转信息, 单线程循环 0.x版本 1.0版本 多线程循环 操作系统并不知道Goroutine的存在 操作系统线程执行一个调度循环,顺序执行Goroutine 调度循环非常…...
如何伪造http头,让后端认为是本地访问
0x00 前言 这个知识点纯粹就是为了ctf准备的,很少有系统会出现这种情况。 0x01 正文 1.host头 如果后端从host取值来判断是否是本地就可以通过此方法进行绕过: host: 127.0.0.12.X-Forwarded-For X-Forwarded-For(XFF)是用来…...
视频剪辑音效处理软件有哪些?视频剪辑软件那个好用
音效是视频剪辑的重要部分,能起到画龙点睛的作用。在短视频平台中,一段出彩的音效能将原本平平无奇的视频变得生动有趣。那么,视频剪辑音效处理软件有哪些?本文会给大家介绍好用的音效处理软件,同时也会介绍视频剪辑音…...
搭建STM32F407的Freertos系统(基于STM32CubeMX)
本人长期开发Linux、Windows上应用软件,一直以来MCU开发有所接触,但较少(最近项目需要,小公司么,都得会,被逼的),好在有STM32CubeMX这样工具,貌似就是我想要的工具。 本次…...
vite 配置自动补全文件的后缀名
vite 不建议自动补全,文件的后缀名的 const Home ()>import("/views/Home.vue");文件是必须要加上 .vue 的后缀名的 如果 想要像 webpack 一样的不用写, 可以在vite.config.js中配置如下就可以了...
基于Spring Boot的人才公寓管理系统设计与实现(Java+spring boot+MySQL)
获取源码或者论文请私信博主 演示视频: 基于Spring Boot的人才公寓管理系统设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java spring…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...
VSCode 使用CMake 构建 Qt 5 窗口程序
首先,目录结构如下图: 运行效果: cmake -B build cmake --build build 运行: windeployqt.exe F:\testQt5\build\Debug\app.exe main.cpp #include "mainwindow.h"#include <QAppli...
算法刷题-回溯
今天给大家分享的还是一道关于dfs回溯的问题,对于这类问题大家还是要多刷和总结,总体难度还是偏大。 对于回溯问题有几个关键点: 1.首先对于这类回溯可以节点可以随机选择的问题,要做mian函数中循环调用dfs(i&#x…...
