本帖最后由 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求一元三次方程的最小正根?相关推荐

  1. matlab如何求变换矩阵,如何用Matlab实现机器人的变换矩阵

    如何用Matlab实现机器人的变换矩阵 如何用Matlab实现机器人的变换矩阵 前言 其中有些思路参考了这篇博客,有兴趣的同学可以看一下博客参考(关于位姿变换矩阵) 刚开始学工业机器人的时候,大家都先 ...

  2. 算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解

    文章目录 一元三次方程的根 1. 题目描述 2. 问题分析与算法设计思路 1)基本思路 2)小心浮点数存储方式的影响 3)如何判断:一个区间是否值得继续搜索 3. 算法实现 4. 运行结果 5. 算法 ...

  3. 用matlab如何画根轨迹图,MATLAB绘制根轨迹ppt课件

    <MATLAB绘制根轨迹ppt课件>由会员分享,可在线阅读,更多相关<MATLAB绘制根轨迹ppt课件(11页珍藏版)>请在人人文库网上搜索. 1.MATLAB绘制根轨迹,由传 ...

  4. matlab 线性回归 参数显著性,如何用MATLAB最小二乘法得出回归方程系数?

    PS:非常抱歉,由于我的疏忽,前面发的一贴,公式写错了.不过还是谢过@dingd.@cooooldog.感谢你们的帮助.这个过程我也有所收获,以后切记马虎. --------------------- ...

  5. matlab seed函数_如何用matlab生成随机数函数_matlab随机数生成函数

    如何用matlab生成随机数函数 1. MATLAB 函数 rand 产生在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间.一个称为seed的值则是用来控制产生随机数的次数.均匀随机数 ...

  6. 利用matlab处理表格数据,/如何用matlab处理多个excel表格中的数据

    excel最大可处理多少条数据 理论上可以处理59999条(行)数据 但是实际上同一个工作表中无法处理这么多数. Excel 怎样做一个客户多个数据的表 1.首先,简单描述问题,在如下的表格中想姓名一 ...

  7. 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 ...

  8. matlab波形相似系数,如何用matlab计算波形相似系数

    . 低通采样定理实验 1.1 实验目的 1.了解数字信号处理系统的一般构成: 2.掌握奈奎斯特抽样定理. 1.2 实验仪器 1.YBLD智能综合信号源测试仪 1台 2.双踪示波器 1台 3.MCOM- ...

  9. 用matlab s函数 阶梯,如何用matlab使用函数式M文件计算s=n!,要具体的步骤。谢谢...

    先写个2113m文件function s=qiuhe(n)s=sum(cumprod(1:n))end其中5261cumprod是求某数的阶乘,4102sum是求和调用输入1653qiuhe(10) ...

  10. 用matlab画出ex,如何用matlab画函数图形

    1.首先打开matlab应用程序,输入下方的代码:2.然后按确定会出现一张图,如下图所示,这就是 怎么用matlab画函数图形?请看下面方法. 方法 打开Matlab. r0=5;b=1;t0=2;s ...

最新文章

  1. 基于道路标线的城市环境单目定位
  2. SQL Server 数据库清除日志的方法
  3. ios 检测是否安装微信异常
  4. redis优雅的批量删除key
  5. 输出链表倒数第K个节点
  6. 序列化和反序列化的对单例破坏的防止及其原理
  7. mysql读写分离有用吗_MySQL的使用中实现读写分离的教程
  8. 漫画:深入浅出 ES 模块
  9. poj 1729 Jack and Jill (搜索,bfs)
  10. navicat 结合快捷键 非常好用
  11. idea 删除 output directory文件_郑州Java培训新手必知的IDEA高频快捷键
  12. tt桌球瞄准器手机版_法国或将禁止不可拆卸手机,想当年手机后盖随便拆开玩儿...
  13. Ren获得Zcash技术咨询委员会资助,将在币安智能链上启动RenZEC流动性引导计划
  14. 麦克纳姆轮全向移动机器人斜向直线运动分析
  15. 终端短路和终端开路的无耗传输线的输入阻抗和导纳
  16. 互联网大数据对教育的重要性
  17. 使用class-dump 和Hopper实现简单反编译
  18. 洛谷oj刷题记录----数组篇
  19. 需求分析报告应该包含哪些部分_一份数据分析报告所需要的内容以及注意事项...
  20. xy轴坐标图数字表示_cad图纸上的X、Y坐标是什么意思? 丫坐标和x坐标图纸上的数...

热门文章

  1. 6张图教你搞定侧方停车----fwqlzz love is for ever
  2. joomla人人登录
  3. linux安装有道词典步骤,Ubuntu 16.04安装有道词典的方法
  4. Hadoop运维记录系列(十九)
  5. 502网关错误解决_“ HTTP 502错误的网关”错误和解决方案
  6. 关于51仿真器驱动安装时进度卡在10%检测不到PZ51Tracker,以及额外下载的driver无法更新的解决方案
  7. 《延禧攻略》不仅是中国色,还藏着中国美了千年的风景!
  8. vagrant设置磁盘大小
  9. 什么叫工作波长,截止波长和波导波长
  10. 华为linux不识别U盘启动,华为电脑如何用u盘启动不了怎么办