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))/ay =-(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

Matlab求解数学问题相关推荐

  1. matlab求解数学题,Matlab求解数学问题

    Matlab 求解数学问题 如果看完之后还是对相关函数的运用不甚了解,请务必使用 help 查看更详细的帮助文档! 求解一元 n 次方程 例:求解一元二次方程 x^2+2*x+1 = 0 clc, c ...

  2. matlab联立两个方程组求解,实验二 Matlab求解数学问题(终稿)2

    实验二 MATLAB求解数学问题 2.1实验目的 掌握MATLAB在大学数学问题中的基本应用,会使用MATLAB软件求解高等数学.线性代数和概率统计中的常见问题. 2.2实验要求 掌握MATLAB简单 ...

  3. 数学建模微分方程导弹问题matlab求解,数学建模之微分方程(符实现例题和MATLAB源码)...

    微分方程的基本概念 微分方程:一般的,凡表示未知函数.未知函数的导数与自变量之间的关系的方程,叫做微分方程,有时也简称方程. 微分方程的阶:微分方程中所出现的未知函数的最高阶导数的阶数,叫做微分方程的 ...

  4. 数学建模酶促反应matlab求解,数学建模——酶促反应.doc

    数学建模--酶促反应 数学建模 摘要 本文针对嘌呤霉素在某项酶促反应中对反应速度和底物浓度之间的关系的影响的问题,根据实际可知符合底物浓度与反应速度的模型有两种,即Michaelis-Menten模型 ...

  5. 数学建模酶促反应matlab求解,数学建模——酶促反应论文.doc

    PAGE word文档 可自由复制编辑 word文档 可自由复制编辑 数学建模 摘要 本文针对嘌呤霉素在某项酶促反应中对反应速度和底物浓度之间的关系的影响的问题,根据实际可知符合底物浓度与反应速度的模 ...

  6. matlab求解微分方程6,牛津大学出版社数学应用软件作业6 用Matlab求解微分方程(组)的解析解和数值解:经典爱情语录大全...

    漳州理工职业学院-酒会礼仪 注:上机作业文件夹以自己的班级姓名学号命名,文件夹包括如下上机报告和Matlab程序. 上机报告模板如下: 佛山科学技术学院 上 机 报 告 课程名称 数学应用软件 上机项 ...

  7. 数学建模微分方程导弹问题matlab求解,Matlab建模—导弹追踪问题

    数学建模期末复习,撰写博客做总结之用,主要侧重于算例的模型建立与部分代码的实现,其中不足之处望读者多多指正. Matlab微分求解工具箱使用 求数值解 dsolve('方程1','方程2',-,'方程 ...

  8. MATLAB数学建模-规划模型总结| MATLAB求解

    目录 1 线性规划问题(LP) 风格1 风格2 2 非线性规划 3 动态规划 A星算法 基于dijkstra的概率路线图 4 多目标规划 帕累托最优 支配(Dominace) 不可支配解集 帕累托最优 ...

  9. 小行星轨道 matlab,小行星轨道问题的建模与求解数学建模论文.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp学术论文&nbsp>&nbsp自然科学论文 小行星轨道问题的建模与求解数学建模论文.doc6 ...

最新文章

  1. mysql事务的4大特性
  2. 操作系统性能监控-磁盘IO
  3. 好好学python·集合
  4. Jdbc模版式写法与Spring-JdbcTemplate的比较
  5. 飞机大战--显示玩家飞机
  6. 用于CRUD和更多的模型驱动的RESTful API
  7. VS2010 TFS 如何把一个项目添加到源代码管理中及其他管理
  8. 蛋糕是叫胚子还是坯子_最好吃的蛋糕胚子——分蛋海绵蛋糕详解
  9. 如何正确彻底的删除2345软件
  10. 软件需求说明书模板概要书
  11. Linux键盘驱动详解 转
  12. acceleration transducer
  13. POWERBUILDER12.6开发实验室管理系统[LIS](四),希森美康XN-350全自动血球计数仪接口
  14. 在Domino上部署运行在Web浏览器中的Notes客户机
  15. Web前端第三阶段--DOM
  16. 使用python批量修改图片名称
  17. [Android]桌面应用
  18. HTTP状态码详解大全
  19. 几个Sniffer(嗅探器)工具
  20. 计算机网络系统有哪些核心技术,超级计算机的核心技术是什么

热门文章

  1. 浏览器插件——清除百度推荐
  2. CODING —— 云原生时代的研发工具领跑者
  3. 华为路由器AR2200-S调试限速
  4. EEGLAB脑电数据预处理指导手册
  5. 编译原理程门立雪再回首时雪拥蓝关
  6. java面试之每天五题
  7. 刷题笔记之十一 (计算字符串的编辑距离+微信红包+年终奖+迷宫问题+星际密码+数根)
  8. 2022-12-09 Ubuntu16.4中访问另一台Ubuntu samba共享出来的目录方法
  9. 华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界翘楚?
  10. nginx配置web项目外网访问