matlab三次方程求根,如何用matlab求一元三次方程的最小正根?
本帖最后由 smile012 于 2019-1-10 14:01 编辑
以下是我用范圣金公式求一元三次方程的步骤,运行是对的,(这个仅供参考不是问题的主要内容,大佬们无需改这个程序),重点是:然后我想在后面加上判断三个根中的最小正根的步骤,越简单越好,请问该怎么编译呢???
function x = fanshengjin_Solve3Polynomial(a, b, c, d)
% 范盛金. 一元三次方程的新求根公式与新判别法[J]. 海南师范学院学报,1989,2(2):91-98.
A = b*b - 3*a*c; if abs(A) < 1e-14; A = 0; end
B = b*c - 9*a*d; if abs(B) < 1e-14; B = 0; end
C = c*c - 3*b*d; if abs(C) < 1e-14; C = 0; end
DET = B*B - 4*A*C; if abs(DET) < 1e-14; DET = 0; end
if (A == 0) && (B == 0) %三重实根
x1 = -c/b; x2 = x1 ; x3 = x1;
else
if DET > 0 %一个实根,一对共轭负根
Y1 = A*b + 1.5*a*(-B + sqrt(DET));
Y2 = A*b + 1.5*a*(-B - sqrt(DET));
y1 = nthroot(Y1,3); y2 = nthroot(Y2,3);
x1 = (-b-y1-y2)/(3*a);
vec1 = (-b + 0.5*(y1 + y2))/(3*a);
vec2 = 0.5*sqrt(3)*(y1 - y2)/(3*a);
x2 = complex(vec1, vec2);
x3 = complex(vec1, -vec2);
clear Y1 Y2 y1 y2 vec1 vec2;
elseif DET == 0 && (A ~= 0) && (B ~= 0) %三个实根,一对二重根
K = (b*c-9*a*d)/(b*b - 3*a*c); K = round(K,14);
x1 = -b/a + K; x2 = -0.5*K; x3 = x2;
else %DET < 0 %三个不相等的实根
sqA = sqrt(A);
T = (A*b - 1.5*a*B)/(A*sqA);
theta = acos(T);
csth = cos(theta/3);
sn3th = sqrt(3)*sin(theta/3);
x1 = (-b - 2*sqA*csth)/(3*a);
x2 = (-b + sqA*(csth + sn3th))/(3*a);
x3 = (-b + sqA*(csth - sn3th))/(3*a);
clear sqA T theta csth sn3th;
end
end
x = [x1; x2; x3];
matlab三次方程求根,如何用matlab求一元三次方程的最小正根?相关推荐
- matlab如何求变换矩阵,如何用Matlab实现机器人的变换矩阵
如何用Matlab实现机器人的变换矩阵 如何用Matlab实现机器人的变换矩阵 前言 其中有些思路参考了这篇博客,有兴趣的同学可以看一下博客参考(关于位姿变换矩阵) 刚开始学工业机器人的时候,大家都先 ...
- 算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
文章目录 一元三次方程的根 1. 题目描述 2. 问题分析与算法设计思路 1)基本思路 2)小心浮点数存储方式的影响 3)如何判断:一个区间是否值得继续搜索 3. 算法实现 4. 运行结果 5. 算法 ...
- 用matlab如何画根轨迹图,MATLAB绘制根轨迹ppt课件
<MATLAB绘制根轨迹ppt课件>由会员分享,可在线阅读,更多相关<MATLAB绘制根轨迹ppt课件(11页珍藏版)>请在人人文库网上搜索. 1.MATLAB绘制根轨迹,由传 ...
- matlab 线性回归 参数显著性,如何用MATLAB最小二乘法得出回归方程系数?
PS:非常抱歉,由于我的疏忽,前面发的一贴,公式写错了.不过还是谢过@dingd.@cooooldog.感谢你们的帮助.这个过程我也有所收获,以后切记马虎. --------------------- ...
- matlab seed函数_如何用matlab生成随机数函数_matlab随机数生成函数
如何用matlab生成随机数函数 1. MATLAB 函数 rand 产生在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间.一个称为seed的值则是用来控制产生随机数的次数.均匀随机数 ...
- 利用matlab处理表格数据,/如何用matlab处理多个excel表格中的数据
excel最大可处理多少条数据 理论上可以处理59999条(行)数据 但是实际上同一个工作表中无法处理这么多数. Excel 怎样做一个客户多个数据的表 1.首先,简单描述问题,在如下的表格中想姓名一 ...
- matlab三元函数泰勒展开,如何用matlab绘制三元函数f(x,y,z)=x^2 y^3 z^4在[-1,1]x[-2,2]x[-3,3] 上的各...
问题描述: 如何用matlab绘制三元函数f(x,y,z)=x^2 y^3 z^4在[-1,1]x[-2,2]x[-3,3] 上的各种切片图. 还有怎么绘制f(x,y,t)=10*exp(1-t)*s ...
- matlab波形相似系数,如何用matlab计算波形相似系数
. 低通采样定理实验 1.1 实验目的 1.了解数字信号处理系统的一般构成: 2.掌握奈奎斯特抽样定理. 1.2 实验仪器 1.YBLD智能综合信号源测试仪 1台 2.双踪示波器 1台 3.MCOM- ...
- 用matlab s函数 阶梯,如何用matlab使用函数式M文件计算s=n!,要具体的步骤。谢谢...
先写个2113m文件function s=qiuhe(n)s=sum(cumprod(1:n))end其中5261cumprod是求某数的阶乘,4102sum是求和调用输入1653qiuhe(10) ...
- 用matlab画出ex,如何用matlab画函数图形
1.首先打开matlab应用程序,输入下方的代码:2.然后按确定会出现一张图,如下图所示,这就是 怎么用matlab画函数图形?请看下面方法. 方法 打开Matlab. r0=5;b=1;t0=2;s ...
最新文章
- 基于道路标线的城市环境单目定位
- SQL Server 数据库清除日志的方法
- ios 检测是否安装微信异常
- redis优雅的批量删除key
- 输出链表倒数第K个节点
- 序列化和反序列化的对单例破坏的防止及其原理
- mysql读写分离有用吗_MySQL的使用中实现读写分离的教程
- 漫画:深入浅出 ES 模块
- poj 1729 Jack and Jill (搜索,bfs)
- navicat 结合快捷键 非常好用
- idea 删除 output directory文件_郑州Java培训新手必知的IDEA高频快捷键
- tt桌球瞄准器手机版_法国或将禁止不可拆卸手机,想当年手机后盖随便拆开玩儿...
- Ren获得Zcash技术咨询委员会资助,将在币安智能链上启动RenZEC流动性引导计划
- 麦克纳姆轮全向移动机器人斜向直线运动分析
- 终端短路和终端开路的无耗传输线的输入阻抗和导纳
- 互联网大数据对教育的重要性
- 使用class-dump 和Hopper实现简单反编译
- 洛谷oj刷题记录----数组篇
- 需求分析报告应该包含哪些部分_一份数据分析报告所需要的内容以及注意事项...
- xy轴坐标图数字表示_cad图纸上的X、Y坐标是什么意思? 丫坐标和x坐标图纸上的数...
热门文章
- 6张图教你搞定侧方停车----fwqlzz love is for ever
- joomla人人登录
- linux安装有道词典步骤,Ubuntu 16.04安装有道词典的方法
- Hadoop运维记录系列(十九)
- 502网关错误解决_“ HTTP 502错误的网关”错误和解决方案
- 关于51仿真器驱动安装时进度卡在10%检测不到PZ51Tracker,以及额外下载的driver无法更新的解决方案
- 《延禧攻略》不仅是中国色,还藏着中国美了千年的风景!
- vagrant设置磁盘大小
- 什么叫工作波长,截止波长和波导波长
- 华为linux不识别U盘启动,华为电脑如何用u盘启动不了怎么办