Matlab求解数学问题

2023-11-01

Matlab 求解数学问题

如果看完之后还是对相关函数的运用不甚了解,请务必使用 help 查看更详细的帮助文档!

求解一元 n 次方程

例:求解一元二次方程 x^2+2*x+1 = 0

clc, clear;
% 定义函数
syms f(x);
f = x^2 + 2*x +1;
% 利用 solve 函数求解方程
x = solve(f);
% 显示结果
disp(x);

求解方程组

例:求二元一次方程组
**
9x + 8y = 10 ①
13x + 14y = 12 ②
**

%% 求解多元方程组
clc, clear;
% 定义函数
syms f1(x,y) f2(x,y);
f1 = 9*x + 8*y - 10;
f2 = 13*x + 14*y - 12;
% 求解方程组
[x, y] = solve(f1, f2)

例:求非线性方程组
**
x^2 + y^2 = 10 ①
2x + 3y = 0 ②
**

%% 求解多元方程
clc, clear;
% 定义函数
syms f1(x,y) f2(x,y);
f1 = x^2 + y^2 - 10;
f2 = 2*x + 3*y;
% 求解方程组
[x, y] = solve(f1, f2)

求出来的结果是两个点的坐标,x 为横坐标, y为纵坐标。

求解符号解

求解符号解只需要我们利用 syms 函数在方程函数中声明符号变量就好了。
例:

%% 求解符号方程
clc, clear;
% 定义函数及变量 a, b, c 
syms f1(x,y) f2(x,y) a b c;
f1 = a*x^2 + b*y^2 + c;
f2 = a*x + b*y + c;
% 求解方程组
[x, y] = solve(f1, f2)

解得的结果就是带 a, b, c 三个符号变量的符号解:

x =

 -(c - (b*(c - (-(a*c*(a + b + c))/b)^(1/2)))/(a + b))/a
 -(c - (b*(c + (-(a*c*(a + b + c))/b)^(1/2)))/(a + b))/a


y =

 -(c - (-(a*c*(a + b + c))/b)^(1/2))/(a + b)
 -(c + (-(a*c*(a + b + c))/b)^(1/2))/(a + b)

函数求导

%% 函数求导
clc, clear;
% 定义函数
syms y(x);
y = 2 * x^2;
% 求函数的导
Dy = diff(y); % 求函数的一阶导
D2y = diff(y, 2); % 求函数的二阶导

求解微分方程

下面的例子为输入 help dsolve 命令后,帮助文档中所给出的例子。

%% 求解常微分方程
clc, clear;
% 定义函数及变量
syms y(x) a;
% 函数微分方程
Dy = diff(y); % 求 y 的一阶导
D2y = diff(y, 2); % 求 y 的二阶导
%求解微分方程
dsolve(D2y == -a^2*y, y(0) == 1, Dy(pi/a) == 0)

注意: dsolve 求解微分方程的时候,如果里面求的为 n 阶导,那么后面对应给 n 个等式。(另外:是 ‘==’ 而不是 ‘=’ ,写的时候需要注意!)

求解不定积分

使用 int 函数求解不定积分:

%% 求解不定积分
clc, clear;
% 定义函数及常数 C
syms f(x) C;
f = sin(x)/x;
% 求解不定积分
int(f) + C

运行脚本后得到如下的结果:

ans =

C + sinint(x)

其中,sinint() 为正弦积分函数,返回 sin(x)/x 在区间 [0, x]之间的定积分,不是初等函数。

求解定积分

例:求函数 x^2*e^x 在 (0,1) 上的积分。

%% 求解定积分
clc, clear;
% 定义函数
syms f(x);
f = x^2*exp(x);
% 求解函数在 0 到 1 上的定积分
int(f, 0, 1)

结果化简及结果的美化

使用 simplify() 函数可以对结果进行化简。而使用 pretty() 函数可以把得到的结果以相对美观的方式输出。

%% 方程式的化简
clc, clear;
% 定义变量
syms a b;
f = 2*a + 4*b
% 化简
simplify(f)

%% 方程的美化
clc, clear;
% 定义变量
syms a b;
f = sqrt(a^2+b^2)/b
% 美化结果
pretty(f)

符号替换

当我们要给一个方程中的变量赋值的时候,我们可以采用 subs() 函数进行符号替换。当然我们也可以把其中的一个或一串字符替换成另一串字符。

%% 符号替换
clc, clear;
% 定义变量
syms a b;
f = a + b;
% 给 a, b 赋值
a = 2; b = 4;
% 变量替换
f2 = subs(f, {'a', 'b'}, {a, b})

求矩阵的行最简及求矩阵的秩

求矩阵的行最简可以使用 rref 函数;求矩阵的秩可以使用 rank 函数。

%% 求矩阵 A 的行最简
clc, clear;
% 定义矩阵
A = [1 1 -3 -1; 3 -1 -3 4; 1 5 -9 -8];
% 指定有理式格式
format rat
% 求矩阵 A 的行最简
S = rref(A)
% 求矩阵 A 的秩
rank = rank(A)

齐次线性方程组的通解

在 MATLAB 中, 函数 null 用来求解零空间,即满足 A·X = 0 的解空间,实际上是求出解空间的一组基。
格式:

z = null; % z 的列向量为方程组的正交规范基, 满足 Z' x Z = I
z = null(A, 'r'); % z 的列向量是方程 A·X = 0 的有理基

例:求解下列方程组的通解

matlab 求解程序代码如下:

A = [1 2 2 1; 2 1 -2 -2; 1 -1 -4 -3];  % 原始系数矩阵
format rat;  % 指定有理式格式
B = null(A, 'r');  % 求解空间有理基
disp(B);

结果如下:

   2              5/3     
  -2             -4/3     
   1              0       
   0              1       

即:

2k1 + (5/3) k2  % 通解1
-2k1 + (-4/3) k2 % 通解2
k1
k2

我们也可以通过最简行得到基:

B = rref(A)  % 求 A 的最简行

则相应的写出线性方程组的通解:

% 利用求解空间的有理基继续运算    
syms k1 k2;  % 定义字符变量
X = k1*B(:, 1) + k2*B(:, 2)  % 得到方程组的通解

非齐次线性方程组的通解

需要先判断非齐次线性方程组是否有解,若有解,然后求通解,步骤如下。
Step1:判断 A·X = b 是否有解,若有解,则进行第二步,否则求解终止;
Step2:求 A·X = b 的一个特解;
Step3:求 A·X = 0 的通解
Step4:求 A·X = b 的通解等于 A·X = 0 的通解加上 A·X = b 的一个特解。

例:求解方程组

在 MATLAB 中建立脚本 M 文件:

clc, clear;    
A = [1 -2 3 -1; 3 -1 5 -3; 2 1 2 -2];  % 原始系数矩阵
b = [1 2 3]';  % 解析矩阵
B = [A b];  % 增广矩阵
n = 4;
RA = rank(A)  % 求 A 的秩
RB = rank(B)  % 求 B 的秩
format rat  % 指定有理式格式
if RA==RB && A==n  % 判断是否有唯一解
    X = A \ b
elseif RA==RB && RA<n  % 判断是否有无穷解
    X = A \ b  % 求特解
    C = null(A, 'r')  % 求 AX=0 的基础解系
else X='equition no solve'  % 判断无解
end

运行后的结果为:

RA =
       2       
RB =
       3       
X =
equition no solve
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab求解数学问题 的相关文章

  • C++STL之List容器

    C STL之List容器 1 再谈链表 List链表的概念再度出现了 作为线性表的一员 C 的STL提供了快速进行构建的方法 为此 在前文的基础上通过STL进行直接使用 这对于程序设计中快速构建原型是相当有必要的 这里的STL链表是单链表的
  • 【Linux】进程间通信(无名/有名管道及System V共享内存)

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 通信的相关概念 二 管道 半双工 1 管道的概念 三
  • vue-router学习总结

    vue router学习 vue router介绍 vue router借鉴了react router和ui router中所有的优点 官方文档 https router vuejs org 路由的快速开始 定义各页面容器组件 定义路由配置
  • Git把本地内容push到远程仓库

    第一次提交本地项目代码到github仓库 一 所需的命令 git init 1 初始化项目文件夹 git add 2 将所有文件添加到暂存区 git commit m first commit 3 提交到本地仓库 双引号内是提交的备注信息
  • 【已解决】libcef.dll怎么修复?libcef.dll丢失怎么办电脑上总显示

    libcef dll怎么修复 libcef dll丢失怎么办电脑上总显示 我们在日常使用电脑的时候 有些情况下可能会遇到出现提示计算机丢失libcef dll文件的情况 对于这种问题小编觉得我们可以先尝试使用第三方软件进行扫描下载 或者还可
  • Typescript学习(1)

    安装typescript 查看本机是否安装了node npm install g typescript 全局安装typescript tsc v 查看安装的typescript版本 使用vs code新建一个文件夹 进入该文件夹创建一个te
  • 为什么Collection不从Clone和Serializable接口继承

    Collection表示一个集合 包含了一组对象 如何存储和维护这些对象是由具体实现来决定的 因为集合的具体形式多种多样 例如list允许重复 set则不允许 而克隆 clone 和序列化 serializable 只对于具体的实体 对象有
  • Halcon和Opencv 的区别

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 OpenCV Halcon 开发语言 C C emgu Python Ruby MATLAB等语言 C C C Visual basic和Delphi等语言 应用场合 侧
  • 使用若依分离版实现Excel导入功能

    使用若依分离版实现导入功能 1 后台代码 controller层 导入学生数据 下载模板 GetMapping importTemplate ResponseBody public AjaxResult importTemplate Exc
  • 【C++】友元函数、友元类、内部类

    文章目录 一 友元函数 二 友元类 三 内部类 四 小结 一 友元函数 友元函数是定义在类外的普通函数 但是可以访问类的所有成员 包括私有和保护成员 它不是类的成员函数 但是要在类里声明 例子 class A 友元函数可以在类中任何地方声明
  • 基于SpringBoot的单点登录实现

    一 实现原理 本单点登录原理是基于SpringBoot的HandlerInterceptor拦截器实现的 大致思路如下 SP提供单点登录接口 并通过HandlerInterceptor对该地址进行拦截 统一平台访问该SP时携带认证Token
  • blender学习记录2--常见的问题

    视图问题 镜头无法放大 有两个体积相差较大的物体 滚轮无法将较小的那个很好的显示出来 解决方法 将鼠标放到较小的物体上 按照 不放 选择查看所选 就能进行正常缩放 视图问题 视图旋转偏移 选中了一个相距较远的物体 旋转并非以当前物体为中心
  • MATLAB——最小二乘法拟合指数函数“y=Ae^Bx”

    一 相关函数 1 MATLAB中polyfit函数是用来进行多项式拟合的 其数学原理是基于最小二乘法进行拟合的 具体使用语法是 p polyfit x y n 其中x y表示需要拟合的坐标点 大小需要一样 n表示多项式拟合的次数 返回值p表
  • Google也裁员啦!!

    国外媒体报道 在谷歌 要不就不下雨 要下就是倾盆大雨 google宣布首次裁员 裁减内部员工100个 合同工和劳务工都将裁掉 挪威 瑞典 奥斯汀 得克萨斯 等分部将全部关闭 分部员工全部回美国总部 谷歌还发表数篇博客 详细说明了即将关闭的多
  • select,poll,epoll优缺点及比较

    在之前我已经分析了这三个函数 请看我之前的文章 IO多路复用之select函数详解 IO多路复用之poll函数详解 IO多路复用之epoll函数详解 这篇文章只总结优缺点 以便面试时回答 select优点 1 select 的可移植性更好
  • 逆向分析脱壳

    1 用PEiD查壳 UPX或者FSG PECompact ASPack 2 12 2 使用OD载入程序 第一个为入口点 3 手动寻找OEP 一 查找尾部跳转指令 通常情况下 它是一条jmp指令 这条指令的后面 存在着非常多的0x00字节 我
  • 17.Xaml DockPanel控件 ---> 停靠面板

    1 运行效果 2 运行源码 a Xaml源码
  • 【计算机视觉

    文章目录 一 分割 语义相关 16篇 1 1 Test time augmentation based active learning and self training for label efficient segmentation 1
  • .net 在js中判断checkboxlist是否有选中

    在提交添加或修改内容时 需要对关键数据进行判空处理 如何在js中判断checkboxlist是否有选择项呢 具体操作如下 var CheckBox document getElementById getElementsByTagName I

随机推荐

  • b树和b+树的区别

    一 b树 b树 balance tree 和b 树应用在数据库索引 可以认为是m叉的多路平衡查找树 但是从理论上讲 二叉树查找速度和比较次数都是最小的 为什么不用二叉树呢 因为我们要考虑磁盘IO的影响 它相对于内存来说是很慢的 数据库索引是
  • OBS虚拟摄像头没有声音

    点击上方编辑 高级音频属性 打开对应的视频源音频监听
  • 原型模式例题——订单处理系统

    文章目录 原型模式例题 订单处理系统 思路 UML 图 代码 产品类 订单类 客户端 原型模式例题 订单处理系统 现在有一个订单处理系统 里面有一个保存订单的业务功能 需求 每当订单的预定产品数量超过1000的时候 就需要把你单拆成两份订单
  • B - Polycarp‘s Practice

    Polycarp is practicing his problem solving skill He has a list of nn problems with difficulties a 1 a 2 dots a na1 a2 an
  • 【蓝桥杯】01背包问题

    一 问题描述 有 N 个物品 并且每个物品都有一个重量 W 和一个价值 V 你有一个能装 M 重量的背包 问怎么装才能使所装的价值最大 每个物品只有一个 输入 输入的第一行包含两个整数 n m 分别表示物品的个数和背包能装的重量 以后N行每
  • xcode iphone messagebox

    Show a main window message box Alert View will automatically adjust for landscape orientation UIAlertView alert UIAlertV
  • crm客户管理是什么 好的销售crm具备哪些特点

    近年来crm日益流行 也得到了越来越多企业的重视 crm的C是Customer R代表Relationship M是Management 也就是客户关系管理 什么是crm客户管理呢 crm也是一种管理软件 是一种以信息技术为手段 有效提高企
  • ExMobi文档

    EXmobi官方文档 ExMobi 从入门到精通 本书电子版和示例代码请访问GIT仓库 https github com nandy007 ExMobiBeginnerBook ExMobi门户 http www exmobi cn ExM
  • Django 简单教程(入门级)

    一 Django简介 1 web框架介绍 具体介绍Django之前 必须先介绍WEB框架等概念 web框架 别人已经设定好的一个web网站模板 你学习它的规则 然后 填空 或 修改 成你自己需要的样子 一般web框架的架构是这样的 其它基于
  • 数字电路设计之加法器的实现

    今天在看博客的时候看到有一种新颖的加法器写法 这和之前的超前进位加法器 二进制加法器不同 这个加法器应用了循环 我觉得应该会综合出来一个很差的东西 然后我试了一下 代码 module adder x y cin sum cout param
  • ubuntu登录输入密码后无法进入系统,重新返回输入密码界面(已解决)

    修改 etc profile时 由于未知问题导致无法使用ls等命令 重启后输入密码无法进入Ubuntu系统 反复回到输入密码界面 解决方法 1 按下Ctrl Alt F1 输入用户名 密码 2 输入 export PATH usr loca
  • 9 QT的窗口系统-QMainWindow

    QMainWindow是一个为用户提供主窗口程序的类 包含一个菜单栏 menu bar 多个工具栏 tool bars 多个浮动窗口 dock widgets 一个状态栏 status bar 及一个中心部件 central widget
  • Taro多端开发实现原理与项目实战(一)

    Taro 多端开发实现原理与项目实战 前端多端统一开发背景与趋势介绍 背景 大前端 不仅会成为移动开发与 Web 前端的发展趋势 也会是未来的显示设备终端的开发技术趋势 越来越多的业内人士对此表示肯定 因为终端碎片化和 Serverless
  • matlab运行sph法,SPH法一维实例:启发

    左志华 在读硕士 zuo zhihua qq com 深圳市罗湖区 2021 1 12 ThinkPad S2 2018 Windows10 Home 关键词 SPH法 一维 启发 B样条核函数 Octave 6 1 1 背景 从2020年
  • 个人网银系统平台搭建教程

    本教程目标 熟悉并了解EMP开发平台 学会自行搭建个人网银平台 EMP平台 1 何为EMP EMP平台是北京宇信集团开发的一个基于J2EE体系的 WEB应用的 基础框架平台 具有如下特性 表现逻辑框架 MVCFrameWork 与业务逻辑框
  • Tracy JS 小笔记 - 浏览器,JS 特性, JS 引入,变量

    浏览器 主流浏览器 拥有独立内壳的 IE 内壳是 Trident Chrome Blink Webkit的分支 Firefox Gecko Opera Blink Opera内核原为 Presto 现为 Blink Safari Webki
  • VMware Fusion 13在M2芯片的Mac上安装 Windows 11

    首先需要下载Windows 11镜像 以下给出一种官方方法 当然也可以自己去网上搜索 有很多资源 注册微软账号 使用注册的账号登录 访问 https www microsoft com en us windowsinsider regist
  • curl: (7) Failed to connect to raw.github.com port 443: 拒绝连接

    在使用快捷命令安装oh my zsh时出现如题错误 原因 你机器所配置的DNS服务器无法解析raw github com 也就是我们经常说的被墙了 可以通过科学上网解决 本文附上另外一种解决方法 如果你不满足科学上网的条件 你可以采用这种方
  • 华为鸿蒙系统支持什么手机_目前鸿蒙系统并不支持低端手机,反而支持的都是华为高端机...

    鸿蒙OS支持的手机名单 最新 华为P40 ANA AN00 华为P40Pro ELS AN00 华为Mate30 TAS AL00 TAS AN00 华为Mate30Pro UO AL00 UO AN00 从上面的名单可以看出 这四款机型都
  • Matlab求解数学问题

    Matlab 求解数学问题 如果看完之后还是对相关函数的运用不甚了解 请务必使用 help 查看更详细的帮助文档 求解一元 n 次方程 例 求解一元二次方程 x 2 2 x 1 0 clc clear 定义函数 syms f x f x 2