24小时热门版块排行榜    

查看: 2161  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

cupidaxun

木虫 (著名写手)

[求助] 求解一元三次方程

已知(a-x)(b-x)(c-x)=A,求x值,请教用什么方法或工具能快速解出x?非常感谢!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

引用回帖:
8楼: Originally posted by pippi6 at 2013-06-11 12:03:59
如果是做工程,那就没商量,使用Newton法。只此一招,非线性通吃。 特别适合你这种有导数解析表达的情况。所谓解析解、maple之类都是玩玩的,实际中没啥意思。Newton法简单表达就是
dx=-f(x)/f'(x)
x=x+dx
非常 ...

数值解算法操作是方便,但是如果有公式解,可以不用迭代,也可很快求出非常精确地值。公式解就在省去繁琐的迭代求解过程。
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
9楼2013-06-13 10:54:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
cupidaxun: 金币+5, ★★★★★最佳答案, 非常感谢! 2013-06-10 12:30:17
1stopt、MATLAB、Maple,EXCEL都可以做。

1stopt软件小巧,程序也非常简单:
代码:
Parameters x;
Function (1-x)*(2-x)*(3-x)=4;

迭代数: 16
计算用时(时:分:秒:毫秒): 00:00:00:61
计算中止原因: 达到收敛判定标准
优化算法: 麦夸特法(Levenberg-Marquardt) + 通用全局优化法
函数表达式 (1-x)*(2-x)*(3-x)-(4)
目标函数值: 0
x: 0.203678096741042

====== 计算结束 ======果:



对于a,b,c,A是已知参数的情况下,MATLAB程序如下,附图1以a=1,b=2,c=3,A=4为例子的输入和输出结果
function solvenole
clear all;clc
format long
global a b c A

a=input('请输入已知常数a=');
b=input('请输入已知常数b=');
c=input('请输入已知常数c=');
A=input('请输入已知常数A=');


x1=fsolve(@fun299792,[a])


%--------------------------------
function y=fun299792(x)
global a b c A
y=(a-x)*(b-x)*(c-x)-A;

Maple也可以做,见附图2
求解一元三次方程
附图1.jpg


求解一元三次方程-1
附图2.jpg

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2013-06-10 10:07:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cupidaxun

木虫 (著名写手)

引用回帖:
2楼: Originally posted by 月只蓝 at 2013-06-10 10:07:13
1stopt、MATLAB、Maple,EXCEL都可以做。

1stopt软件小巧,程序也非常简单:
代码:
Parameters x;
Function (1-x)*(2-x)*(3-x)=4;

迭代数: 16
计算用时(时:分:秒:毫秒): 00:00:00:61
计算中止原因: 达 ...

非常感谢提供的工具和方法,只是这些工具都没有用过,stopt正在研究中,请问用Excel计算能否实现?(比如,我列表给出a,b,c,A数据,对应的x,就可以在另一列计算出来)
3楼2013-06-10 12:33:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

★ ★
csgt0: 金币+2, 谢谢 2013-06-14 10:42:06
引用回帖:
3楼: Originally posted by cupidaxun at 2013-06-10 12:33:15
非常感谢提供的工具和方法,只是这些工具都没有用过,stopt正在研究中,请问用Excel计算能否实现?(比如,我列表给出a,b,c,A数据,对应的x,就可以在另一列计算出来)...

可以,列个公式就可以
x一实根,2虚根
x=solve('(a-x)*(b-x)*(c-x)=A','x')

x =

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           a/3 + b/3 + c/3 - ((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)/((((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)^3 + (A/2 + ((a + b + c)*(a*b + a*c + b*c))/6 - (a + b + c)^3/27 - (a*b*c)/2)^2)^(1/2) - A/2 - ((a + b + c)*(a*b + a*c + b*c))/6 + (a + b + c)^3/27 + (a*b*c)/2)^(1/3) + ((((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)^3 + (A/2 + ((a + b + c)*(a*b + a*c + b*c))/6 - (a + b + c)^3/27 - (a*b*c)/2)^2)^(1/2) - A/2 - ((a + b + c)*(a*b + a*c + b*c))/6 + (a + b + c)^3/27 + (a*b*c)/2)^(1/3)

a/3 + b/3 + c/3 + ((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)/(2*((((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)^3 + (A/2 + ((a + b + c)*(a*b + a*c + b*c))/6 - (a + b + c)^3/27 - (a*b*c)/2)^2)^(1/2) - A/2 - ((a + b + c)*(a*b + a*c + b*c))/6 + (a + b + c)^3/27 + (a*b*c)/2)^(1/3)) - ((((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)^3 + (A/2 + ((a + b + c)*(a*b + a*c + b*c))/6 - (a + b + c)^3/27 - (a*b*c)/2)^2)^(1/2) - A/2 - ((a + b + c)*(a*b + a*c + b*c))/6 + (a + b + c)^3/27 + (a*b*c)/2)^(1/3)/2 - (3^(1/2)*(((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)/((((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)^3 + (A/2 + ((a + b + c)*(a*b + a*c + b*c))/6 - (a + b + c)^3/27 - (a*b*c)/2)^2)^(1/2) - A/2 - ((a + b + c)*(a*b + a*c + b*c))/6 + (a + b + c)^3/27 + (a*b*c)/2)^(1/3) + ((((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)^3 + (A/2 + ((a + b + c)*(a*b + a*c + b*c))/6 - (a + b + c)^3/27 - (a*b*c)/2)^2)^(1/2) - A/2 - ((a + b + c)*(a*b + a*c + b*c))/6 + (a + b + c)^3/27 + (a*b*c)/2)^(1/3))*i)/2

a/3 + b/3 + c/3 + ((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)/(2*((((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)^3 + (A/2 + ((a + b + c)*(a*b + a*c + b*c))/6 - (a + b + c)^3/27 - (a*b*c)/2)^2)^(1/2) - A/2 - ((a + b + c)*(a*b + a*c + b*c))/6 + (a + b + c)^3/27 + (a*b*c)/2)^(1/3)) - ((((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)^3 + (A/2 + ((a + b + c)*(a*b + a*c + b*c))/6 - (a + b + c)^3/27 - (a*b*c)/2)^2)^(1/2) - A/2 - ((a + b + c)*(a*b + a*c + b*c))/6 + (a + b + c)^3/27 + (a*b*c)/2)^(1/3)/2 + (3^(1/2)*(((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)/((((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)^3 + (A/2 + ((a + b + c)*(a*b + a*c + b*c))/6 - (a + b + c)^3/27 - (a*b*c)/2)^2)^(1/2) - A/2 - ((a + b + c)*(a*b + a*c + b*c))/6 + (a + b + c)^3/27 + (a*b*c)/2)^(1/3) + ((((a*b)/3 + (a*c)/3 + (b*c)/3 - (a + b + c)^2/9)^3 + (A/2 + ((a + b + c)*(a*b + a*c + b*c))/6 - (a + b + c)^3/27 - (a*b*c)/2)^2)^(1/2) - A/2 - ((a + b + c)*(a*b + a*c + b*c))/6 + (a + b + c)^3/27 + (a*b*c)/2)^(1/3))*i)/2
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
4楼2013-06-10 18:02:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见