利用matlab进行多项式求根——符号解

article/2025/10/13 5:12:56

问题描述:对于一个方程,比如: a x 2 + b x + c = 0 ax^2+bx+c=0 ax2+bx+c=0,我们想要求出关于x的表达式(求根)。

如果a,b,c是已知的,或者说是某个确定的数值,那么我们就可以直接用roots函数进行求根——数值解

p=[1 2 1]
roots(p)

返回结果是:

ans =-1-1

显然这里的a,b,c是未知的,我们想要求出x的表达式——符号解。那么我么可以用solve函数来实现:

syms a b c x                          % 声明参数
eqn = a*x^2 + b*x + c == 0;    
solx = solve(eqn, x)               

返回结果是:

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

其中,solve(eqn,x)表示对等式eqn关于x的求解(同样地,也可以求解关于a或b或c的解)。eqn可以是一个等式,也可以是一个表达式,如果是一个表达式,则默认是对eqn=0求解。

需要注意的是,solve函数并不一定总是返回方程的所有解,比如:

syms x
solx = solve(cos(x) == -sin(x), x)

返回结果是:

solx =
-pi/4

如果我们需要返回所有可能的解,可以设置“ReturnConditions"选项为true。如下所示:

[solx, param, cond] = solve(cos(x) == -sin(x), x, 'ReturnConditions', true)

返回结果是:

solx =
pi*k - pi/4
param =
k
cond =
in(k, 'integer')

如上所示,返回值有三个参数,分别是解、解的参数、解的条件。
solx =pi*k - pi/4
param =k
cond =in(k, ‘integer’)

进一步深入:对于上述有多个解的情况,如何返回在指定区间内或满足特定条件的解呢?

  • 第一步:求出方程的所有可能解(带有参数param和条件cond),即方程的通解。例如:方程 c o s ( x ) = − s i n ( x ) cos(x) =-sin(x) cos(x)=sin(x),通解为: s o l x = k π − π 4 solx =k\pi - \frac {\pi} 4 solx=kπ4π(其中k为参数,k为整数)。

matlab实现:

syms x
[solx, param, cond] = solve(cos(x) == -sin(x), x, 'ReturnConditions', true)
  • 第二步:求出在指定区间内或满足特定条件的解对应参数的所有可能取值。例如:对于方程 c o s ( x ) = − s i n ( x ) cos(x) =-sin(x) cos(x)=sin(x),求出在区间 ( − 2 π , 2 π ) (-2\pi,2\pi) (2π,2π)内的解,于是k的所有可能取值等价于求不等式 − 2 π < k π − π 4 < 2 π -2\pi<k \pi - \frac {\pi} 4<2\pi 2π<kπ4π<2π,即 k = − 1 , 0 , 1 , 2 k=-1,0,1,2 k=1012

matlab实现:

assume(cond)
solk = solve(-2*pi<solx, solx<2*pi, param)
  • 第三步:把参数的所有可能取值代入方程通解的表示式中,即得到在指定区间内或满足特定条件的解。把 k = − 1 , 0 , 1 , 2 k=-1,0,1,2 k=1012代入到 s o l x = k π − π 4 solx =k\pi - \frac {\pi} 4 solx=kπ4π,于是满足条件的解为: x v a l u e s = − 5 π 4 , − π 4 , 3 π 4 , 7 π 4 xvalues=-\frac {5\pi} 4,-\frac {\pi} 4,\frac {3\pi} 4,\frac {7\pi} 4 xvalues=45π,4π,43π,47π

matlab实现:

xvalues = subs(solx, solk)
xvalues = vpa(xvalues)         % 把符号解转换成数字解

解的可视化

绘制 c o s ( x ) = = − s i n ( x ) cos(x) == -sin(x) cos(x)==sin(x)的解:分别绘制cos(x)和 -sin(x),再标记出两个曲线的交点。

matlab实现:

fplot(cos(x))
hold on
grid on
fplot(-sin(x))
title('Both sides of equation cos(x) = -sin(x)')
legend('cos(x)','-sin(x)','Location','best','AutoUpdate','off')yvalues = cos(xvalues)          % 计算交点的纵坐标scatter(xvalues, yvalues)        % 标出交点的位置

在这里插入图片描述


http://chatgpt.dhexx.cn/article/q5gFEdq8.shtml

相关文章

MATLAB(十)方程式求根

文章目录 前言符号寻根法符号根查找&#xff1a;solve ()解决多个方程用符号表示的方程Exercise练习符号区分&#xff1a;diff ()Exercise练习象征性的集成&#xff1a;int()Exercise练习回顾函数句柄()fsolve()Exercise练习fzero()求多项式的根&#xff1a;roots()二分法(或分…

matlab根号二,matlab根号二怎么打_常见问题解析,matlab,根号二,根号

matlab级数求和的方法_常见问题解析 matlab级数求和使用symsum函数&#xff0c;有4种方式&#xff0c;分别为symsum(expr)、symsum(expr,v)、symsum(expr,a,b)和symsum(f,v,a,b)。 matlab根号二怎么打 matlab中根号使用^来表示&#xff0c;根号二的表示方法为&#xff1a;2^0.5…

matlab 坐标轴根号,Matlab中根号表示怎么操作?根号表示教程分享

最近很多网友表示自己不清楚Matlab中根号表示的操作&#xff0c;而本篇文章就来给大家讲解Matlab中根号表示的教程介绍&#xff0c;大家都来一起学习吧。 Matlab中根号表示的教程介绍 常数根号的表示方法 1、打开matlab&#xff0c;在命令行窗口中输入“9^0.5”&#xff0c;按回…

matlab中根号的表示方法,Matlab中根号表示方法分享

现在许多朋友都已经安装使用Matlab这款软件&#xff0c;但不少伙伴使用过程里还不会根号表示方法&#xff0c;那么究竟是如何操作的呢&#xff1f;今日就来下文看看Matlab中根号表示教程吧。 常数根号的表示方法 1、打开matlab&#xff0c;在命令行窗口中输入9^0.5&#xff0c;…

记Git报错-refusing to merge unrelated histories

环境 系统&#xff1a;win10 git version 2.9.0.windows.1 创建一个新的分支&#xff0c;很久没用了。要重新启用&#xff0c;拉取最新分支的代码&#xff0c;结果报错&#xff1a;refusing to merge unrelated histories fatal: refusing to merge unrelated histories 解…

git: refusing to delete the current branch

最近&#xff0c;不知怎么操作&#xff0c;导致远程test分支无法删除。 原因是&#xff0c;远程仓库里的当前分支是test。进入远程仓库目录&#xff0c;git branch。由于已经解决&#xff0c;所以没有图。在网上找相关资料&#xff0c;都是github里面的操作。但是这个是自己搭建…

fatal: refusing to merge unrelated histories解决

背景&#xff1a;由于公司进行了仓库迁移&#xff0c;同事直接把代码init推进了新的仓库地址&#xff0c;我想在本地代码上切换远程仓库地址进行拉取远端代码时出现报错“fatal: refusing to merge unrelated histories”&#xff0c;大概意思是&#xff1a;“拒绝合并不相关的…

解决Git报错: fatal: refusing to merge unrelated histories

如果合并了两个不同的开始提交的仓库&#xff0c;在新的 git 会发现这两个仓库可能不是同一个&#xff0c;为了防止开发者上传错误&#xff0c;于是就给下面的提示 git无法pull仓库refusing to merge unrelated histories &#xff08;拒绝合并不相关仓库&#xff09; 遇到上问…

解决Git refusing to merge unrelated histories

背景&#xff1a;在本地初始化了一个Git代码仓库&#xff0c;关联到Github上新建的仓库&#xff0c;第一次执行git pull origin master 拉取远程分支时&#xff0c;出现标题上的问题&#xff08;Git 2.9之后的版本才会出现此问题&#xff09;。 refusing to merge unrelated hi…

git pull 无法下载合并 报错:refusing to merge unrelated histories

场景 我本地的代码和线上的代码&#xff0c;需要合并一下&#xff0c;因为线上的代码有修改的地方&#xff0c;我本地的代码也有修改的地方&#xff0c;直接覆盖会有问题&#xff0c;于是想到了用git(平时不用&#xff0c;直接ftp拉上去直接覆盖的)&#xff0c;把修改过的文件…

git提交 出现 : fatal: refusing to merge unrelated histories

项目场景&#xff1a; 场景&#xff1a;本地文件在变更之后 无法提交到远程仓库并报错 fatal: refusing to merge unrelated histories 我最近因为同一个本地文件做了不同的修改&#xff0c;要提交到不同的仓库会经常提示此问题 原因分析&#xff1a; 问题的分析&#xff1a;…

git pull 提示错误 fatal: refusing to merge unrelated histories

从远程拉项目到本地的时候提示错误 造成 fatal: refusing to merge unrelated histories错误的原因有以下几点&#xff1a; 有一个包含一些提交的新 Git 存储库。然后&#xff0c;您尝试从现有的远程仓库中提取。合并变得不兼容&#xff0c;因为分支和远程拉取的历史不同。当…

git初始化错误fatal: refusing to merge unrelated histories

发生原因: git服务上创建了git远程仓库,并且创建README.md文件 本地初始化项目 关联远程仓库:git remote add origin “远程仓库地址” 可以:git remote -v 查看是否关联 再 git init git add README.md git commit -m “first commit” 现在将本地仓库push远程,但是远程有re…

Git报错关于 refusing to merge unrelated histories

refusing to merge unrelated histories 把远程仓库的地址都配置好了之后&#xff0c;执行git pull操作&#xff0c;往往会出现如上图所示 报错信息&#xff0c;这个问题出现的根本原因就是本地的库和远程的库本质上是两个库&#xff0c;如果是直接从git上面clone过来的项目则不…

解决TortoiseGit报错fatal: refusing to merge unrelated histories

如果是用命令行的&#xff0c;就是直接pull后面加--allow-unrelated-histories&#xff1a; git pull origin master --allow-unrelated-histories 如果是用tortoisegit的就是在推送的时候勾选强制覆盖所有&#xff0c;作用就是跟上面命令行加后缀差不多&#xff0c;无视无关历…

Refusing to delete

Refusing to delete 一、场景二、报错三、解决方案 一、场景 npm升级依赖时一直提示不能删除某某&#xff0c;删除某某后重试 二、报错 Refusing to deleteXXX,Move it away, and try again 三、解决方案 改为cnpm 下载

idea使用git提交代码报异常refusing to merge unrelated histories和unknown option `allow-unrelated-histories‘

目录 一、异常refusing to merge unrelated histories 二、异常unknown option allow-unrelated-histories 一、异常refusing to merge unrelated histories 使用git提交代码的时候报异常&#xff1a;refusing to merge unrelated histories 解决方法&#xff1a; 这个错误通…

Livy

本来这篇是要分享到我的“大数据与人工智能”专栏的&#xff0c;关注我的人虽然不多&#xff0c;但是我怕只关注devops的童鞋可能也想瞄一眼&#xff0c;所以在此分享。之后&#xff0c;只要不是属于devops工作范围的&#xff0c;我就一律不在此分享了&#xff0c;想了解其他的…

Cloudera Manager中安装部署Livy服务

制作Livy的Parcel包和csd文件 将Parcel包和manifest.json文件部署到httpd服务中 [rootnode01 ~]# mkdir -p /var/www/html/livy [rootnode01 ~]# cd /var/www/html/livy [rootnode01 livy]# cp /root/github/cloudera/cm-livy-scripts/LIVY-1.0-xenial.parcel ./ [rootnode01 …

livy在交互式查询中的深度定制

随着SparkSql在大规模数据分析中的运用越来越广&#xff0c;在大数据分析平台中集成SparkSql提供用户交互式sql查询的功能已经成为了很多开发者的选择&#xff0c;而将SparkSql作为rest服务有两种方式: jobserver和livy&#xff1b;其中livy作为Apache的孵化项目&#xff0c;其…