ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 38616|回复: 32

[分享] 无需编程,一次求解,一元多次方程的全部根

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-10-26 09:03 | 显示全部楼层 |阅读模式

keyword: 一元三次方程,一元二次方程,一元高次方程,全部解,全部根

众所周知,Excel的单变量求解可以解一元多次方程

但很可惜的是,每次只能找到一个根,而且还不一定是我们想要的那一个

附件通过录制宏,evalueate()名称定义,简单而又方便地实现了一次求方程的所有根

其背后的数学原理是:

假设 输入的一元n次方程式 f(x) = 0 有根x1,x2,x3,x4......xn

那么必定可以因式分解为 (x-x1)*(x-x2)*(x-x3)......(x-xn) = 0

所以只需要求得第一个根x1,然后用原一元n次方程式去除以(x-x1),就可以得到 一元(n-1)次方程为 (x-x2)*(x-x3)......(x-xn) = 0

再用单变量求解降低次数的方程,依次 重复上述步骤,即可求出所有的 x1,x2,x3,.......xn

使用附件时,在c3单元格输入待求解的方程,然后点击 求解 按钮,即可在绿色背景处看到方程的前六个根(如果有的话) 要解更高次数的方程,只需要简单修改一下宏就可以了,当然,不想动VBA,自己录制一个新的宏也可以。

I2a8zht0.rar (10.83 KB, 下载次数: 942)

[此贴子已经被作者于2005-10-26 11:38:35编辑过]

LfxBYv06.rar

10.63 KB, 下载次数: 734

无需编程,一次求解,一元多次方程的全部根

QrpZgEoj.rar

10.6 KB, 下载次数: 584

无需编程,一次求解,一元多次方程的全部根

TA的精华主题

TA的得分主题

发表于 2005-10-26 09:17 | 显示全部楼层
思路不错,但你事先已把方程分解成(x-x1)*(x-x2)*(x-x3)......(x-xn) = 0,答案直接就出来了。你能不能举个原始的方程式为例子,如3X^4+6X^3+X^2+25X+14=0 之类的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-10-26 09:21 | 显示全部楼层

to 楼上

您自己试一试不就知道了么

你总不至于认为我写这么大一堆东西,就是为了解决一个这么白痴的问题吧?

[此贴子已经被作者于2005-10-26 9:36:41编辑过]

TA的精华主题

TA的得分主题

发表于 2005-10-26 09:23 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-10-26 10:26 | 显示全部楼层

不错!

不过改为x^3+4*x-43,好像代码出错,提示“引用无效”

TA的精华主题

TA的得分主题

发表于 2005-10-26 10:28 | 显示全部楼层
楼主果然厉害,佩服!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-10-26 11:31 | 显示全部楼层

关于 5楼 的问题,是因为Excel的迭代计算次数不够多,所以导致单变量求解的结果不够精确,最后除以零的错误,下一步的单变量求解就会报告"引用无效"了

有三个解决方法

1 在工具--选项--重新计算 点选迭代计算,迭代计算次数设置为5000,这样可以算出更精确的分子,较小的数值差异也不会被当作零,但这样会大大影响计算速度!

2 可以改变一下分子的计算公式,把分子由(x-xi)改为(x-xi+0.0000000000001),这样永远不会出现除以零的错误,当然,这样做有可能对计算结果造成干扰(当方程的根是一个很小的数值的时候才会)

3 可以在VBA里面加代码,检查一下被除数(x-xi),如果(x-xi)=0,就终止过程。坏处是: 您要会写一点VBA才行

melj3Dyz.rar (10.83 KB, 下载次数: 278)

最后,谢谢LongIII指出这一问题

[此贴子已经被作者于2005-10-26 11:41:21编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-9-25 22:04 | 显示全部楼层

最后update一下, 把单元格引用变成文本应用, Evaluate函数似乎对两个应用方式的计算是不一样的, shit

Zfxhfuqb.rar (10.71 KB, 下载次数: 564)


[此贴子已经被作者于2007-4-23 12:23:09编辑过]

TA的精华主题

TA的得分主题

发表于 2007-4-13 19:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-12-21 07:08 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-8 23:50 , Processed in 0.048906 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表