24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1298  |  回复: 11

hedge

银虫 (小有名气)

[求助] 求助解方程!!

本人碰到一个数学难题!200金币!!初步考虑了一下,应是一个X的n+1次的方程!!

11.png
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

用编程模式,再大的n都没问题(如果有解的话)
CODE:
Constant n=20, A0=1, B0=1, C=10; //n>4
ConstStr A1=1+x, B1=2+x;
Parameter x;
StartProgram [Pascal];
Procedure MainModel;
var i: integer;
    A, B: array of double;
Begin
    setlength(A, n+2);
    setlength(B, n);
    for i := 2 to n + 1 do begin
        if i = 2 then A[i]:=(i+x)*A1-A0
        else if i = 3 then A[i]:=(i+x)*A[2]-A1
        else A[i]:=(i+x)*A[i-1]-A[i-2];
    end;
    for i := 3 to n do begin
        if i = 3 then B[i-1]:=(i+x)*B1-B0
        else if i = 4 then B[i-1]:=(i+x)*B[2]-B1
        else B[i-1]:=(i+x)*B[i-2]-B[i-3];
    end;
    ObjectiveResult := sqr(A[n+1]-B[n-1]-C);
End;
EndProgram;

x: -10.9999999999994
5楼2012-09-24 18:37:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
用1stOpt试了下,不知对否,参考下:
假设C=10,n取8
CODE:
Constant n=8, A0=1, B0=1, C=10; //n>4
ConstStr A1=1+x, B1=2+x;
ConstStr For(i=2:n+1)(A[i]=(i+x)*A[i-1]-A[i-2]),
         For(i=3:n)(B[i-1]=(i+x)*B[i-2]-B[i-3]);
Function A[n+1]-B[n-1]=C;

函数表达式 (((9+x)*(((8+x)*(((7+x)*(((6+x)*(((5+x)*(((4+x)*(((3+x)*(((2+x)*((1+x))-1))-((1+x))))-(((2+x)*((1+x))
            -1))))-(((3+x)*(((2+x)*((1+x))-1))-((1+x))))))-(((4+x)*(((3+x)*(((2+x)*((1+x))-1))-((1+x))))-(((2+x)
            *((1+x))-1))))))-(((5+x)*(((4+x)*(((3+x)*(((2+x)*((1+x))-1))-((1+x))))-(((2+x)*((1+x))-1))))-(((3+x)
            *(((2+x)*((1+x))-1))-((1+x))))))))-(((6+x)*(((5+x)*(((4+x)*(((3+x)*(((2+x)*((1+x))-1))-((1+x))))-(((2
            +x)*((1+x))-1))))-(((3+x)*(((2+x)*((1+x))-1))-((1+x))))))-(((4+x)*(((3+x)*(((2+x)*((1+x))-1))-((1+x))))
            -(((2+x)*((1+x))-1))))))))-(((7+x)*(((6+x)*(((5+x)*(((4+x)*(((3+x)*(((2+x)*((1+x))-1))-((1+x))))-(((2
            +x)*((1+x))-1))))-(((3+x)*(((2+x)*((1+x))-1))-((1+x))))))-(((4+x)*(((3+x)*(((2+x)*((1+x))-1))-((1+x))))
            -(((2+x)*((1+x))-1))))))-(((5+x)*(((4+x)*(((3+x)*(((2+x)*((1+x))-1))-((1+x))))-(((2+x)*((1+x))-1))))
            -(((3+x)*(((2+x)*((1+x))-1))-((1+x))))))))))-(((8+x)*(((7+x)*(((6+x)*(((5+x)*(((4+x)*(((3+x)*((2+x))
            -1))-((2+x))))-(((3+x)*((2+x))-1))))-(((4+x)*(((3+x)*((2+x))-1))-((2+x))))))-(((5+x)*(((4+x)*(((3+x)
            *((2+x))-1))-((2+x))))-(((3+x)*((2+x))-1))))))-(((6+x)*(((5+x)*(((4+x)*(((3+x)*((2+x))-1))-((2+x))))
            -(((3+x)*((2+x))-1))))-(((4+x)*(((3+x)*((2+x))-1))-((2+x))))))))-(10) = 5.684341886E-013
目标函数值(最小): 3.23117426778526E-25
x: -4.00073291639669

有多组解:
x: -0.18247902078968

x: -4.99044771453577

x: -6.01381051142547

jv2.JPG

2楼2012-09-22 20:56:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

meteor1245

金虫 (正式写手)

一饭之恩必偿,睚眦之怨必报

不是一般的复杂啊。好难
这个世界上重要的不是你站在什么位置,而是你正向着什么方向移动!
3楼2012-09-23 00:22:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hedge

银虫 (小有名气)

引用回帖:
2楼: Originally posted by dingd at 2012-09-22 20:56:26
用1stOpt试了下,不知对否,参考下:
假设C=10,n取8

Constant n=8, A0=1, B0=1, C=10; //n>4
ConstStr A1=1+x, B1=2+x;
ConstStr For(i=2:n+1)(A=(i+x)*A-A),
         For(i=3:n)(B=(i+x)*B-B);
Funct ...

谢谢您的回复。理论上讲可以这么做。
但是当N比较大的时候可能就没有办法了!
我想得另想他途。
为了感谢您,以50金币为感谢!!
请管理员帮忙代发!!
4楼2012-09-24 10:34:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

不可理喻_

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
帮顶下,不是很清楚!
加油,GOGO!!!
6楼2012-09-24 19:03:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
7楼2012-09-24 19:04:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hedge

银虫 (小有名气)

引用回帖:
5楼: Originally posted by dingd at 2012-09-24 18:37:31
用编程模式,再大的n都没问题(如果有解的话)

Constant n=20, A0=1, B0=1, C=10; //n>4
ConstStr A1=1+x, B1=2+x;
Parameter x;
StartProgram ;
Procedure MainModel;
var i: integer;
    A, B: arra ...

非常感谢,至于你讲再大的N都可以,
那么,能不能给出N=50情况的全部解?
如果可以 且验证正确的话。我愿意再给200金币!!
8楼2012-09-25 14:45:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

晨宇飞扬

银虫 (小有名气)

好难啊,真的不会做,会做的人真的是很了不起的人。
低调做人,高调做事。
9楼2012-09-25 15:13:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

n改成50计算是没问题的,只是此时的A[n+1]和B[n-1]已经是个非常大的数了,如10^25次方,计算估计会受很大影响,有时会溢出。2楼代码改为如下,供参考:
CODE:
Constant n=50, A0=1, B0=1, C=10; //n>4
ConstStr A1=1+x, B1=2+x;
Parameter x;
StartProgram [Pascal];
Procedure MainModel;
var i: integer;
    A, B: array of double;
Begin
    setlength(A, n+2);
    setlength(B, n);
    for i := 2 to n + 1 do begin
        if i = 2 then A[i]:=(i+x)*A1-A0
        else if i = 3 then A[i]:=(i+x)*A[2]-A1
        else A[i]:=(i+x)*A[i-1]-A[i-2];
    end;
    for i := 3 to n do begin
        if i = 3 then B[i-1]:=(i+x)*B1-B0
        else if i = 4 then B[i-1]:=(i+x)*B[2]-B1
        else B[i-1]:=(i+x)*B[i-2]-B[i-3];
    end;
     ObjectiveResult := sqr((A[n+1]-B[n-1]-C)/A[n+1]);
End;
EndProgram;

目标函数值(最小): 8.51704067929194E-16
x: -0.241853624043933
10楼2012-09-26 15:21:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hedge 的主题更新
信息提示
请填处理意见