24小时热门版块排行榜    

CyRhmU.jpeg
查看: 550  |  回复: 8
当前主题已经存档。

孔方兄

铜虫 (初入文坛)

[交流] 【求助】一个生物类的公式如何反编译(悬赏20)

本人是学习生物类的,数学很糟糕,悬赏20个金币,求助一公式反编译。
X=363.1888+y* 23.25622-y的平方* 1.745972+y的立方*0.0552203,
要求输入x,得到y值。
如果有人能用vb实现同样的功能,同样有奖。
谢谢个位高手出手相助。

[ Last edited by csfn on 2008-11-30 at 11:53 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

595304082syl

木虫 (小有名气)

上网搜搜一元三次方程的万能公式,照着做就行了
2楼2008-07-18 10:47:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

spkeey

金虫 (正式写手)

★ ★
suntao1982(金币+2,VIP+0):xiexie
三次方程可能有一个值对应几个自变量的情况(不符合函数定义),只能说在某个区间上的反函数。

你的导数  x=23.25622-1.745972y1+0.0552203*y2 (二次可能经过X轴)算了下没有经过0。是单调的,不用分开讨论。。算你运气。。。。
可以求反函数。

数值上可以这样处理的:

y=a+bx+cx2+dx3
等效于求
0=(a-y)+bx+cx2+dx3 的根。。

===========
此有公式。

[ Last edited by spkeey on 2008-7-19 at 03:37 ]
SPKEEY
3楼2008-07-18 22:13:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

madonion

金虫 (正式写手)

★ ★ ★
suntao1982(金币+3,VIP+0):辛苦了,欢迎常来!
卡丹公式
确定一般的三次方程的根的公式.
如果用现在的数学语言和符号,卡丹公式的结论可以借助于下面这样一种最基本的设想得出。
假如给我们一个一般的三次方程:
ax3+3bx2+3cx+d=0 (1)
如果令
x=y-b/a
我们就把方程(1)推导成
y3+3py+2q=0 (2)
其中 p=c/a-b2/a2,2q=2b3/a3-3bc/a2+d/a 。
借助于等式
y=u-p/u
引入新变量u 。把这个表达式带入(2),得到:
(u3)2+2qu3-p3=0 (3)
由此得
u3=-q±√(q2+p3),
于是
y=3√(-q±√(q2+p3))-p/3√(-q±√(q2+p3)) 。
=3√(-q+√(q2+p3))+3√(-q-√(q2+p3)) 。
(最后这个等式里的两个立方根的积等于-p 。)
这就是著名的卡丹公式。
如果再由y转到x,那么,就能得到一个确定一般的三次方程的根的公式。
4楼2008-07-19 20:01:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

madonion

金虫 (正式写手)

上面的是网上搜的,不太完全,最好找本数学手册,找卡丹公式,就是一元三次方程的球根公式,直接按着编程就行,很简单的
5楼2008-07-19 20:03:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

madonion

金虫 (正式写手)

★ ★ ★
suntao1982(金币+3,VIP+0):辛苦了,欢迎常来!
找到一个现成的,不过是c语言的
用卡丹公式解一元三次方程

#include

#include

#include

//////////////////函数--用卡丹公式解一元三次方程/////////////////

void fun(double a,double b,double c,double d,

   double *real_y1,double *real_y2,double *real_y3,

   double *imag_y1,double *imag_y2,double *imag_y3)

{

double p,q,r,u,v,g,h,fai;

p=(3.0*a*c-b*b)/(3*a*a);

q=(2.0*pow(b,3.0)-9*a*b*c+27.0*a*a*d)/(27.0*pow(a,3.0));

r=b/(3.0*a);

h=pow(q/2.0,2.0)+pow(p/3.0,3.0);

g=sqrt(h);

if(h>=0)

{

  if(-q/2.0+g<0)

  u=-pow(fabs(-q/2.0+g),1.0/3.0);

  else

  u=pow((-q/2.0+g),1.0/3.0);

  if(-q/2.0-g<0)

  v=-pow(fabs(-q/2.0-g),1.0/3.0);

  else

  v=-pow((-q/2.0-g),1.0/3.0);

  if(h==0)

  {

   *real_y1=u+v-r;            *imag_y1=0;

      *real_y2=-(u+v)/2-r;       *imag_y2=0;

   *real_y3=-(u+v)/2-r;       *imag_y3=0;

  }

  else

  {

   *real_y1=u+v-r;       *imag_y1=0;

   *real_y2=-(u+v)/2;    *imag_y2=sqrt(3.0)*(u-v)/2;

   *real_y3=-(u+v)/2;    *imag_y3=-sqrt(3.0)*(u-v)/2;

  }

}

else

{

  fai=acos((-q/2)/(sqrt(pow(fabs(p),3)/27)));

  *real_y1=2*sqrt(fabs(p)/3.0)*cos(fai/3.0)-r;

  *real_y2=-2*sqrt(fabs(p)/3.0)*cos((fai+3.1415926)/3.0)-r;

        *real_y3=-2*sqrt(fabs(p)/3.0)*cos((fai-3.1415926)/3.0)-r;

  *imag_y1=0;   *imag_y2=0;    *imag_y3=0;

}

}

//////////////////////////////////主函数////////////////////////////////

void main()

{

  double a,b,c,d;

  double real_x1,real_x2,real_x3;

  double *preal_x1=&real_x1;

  double *preal_x2=&real_x2;

  double *preal_x3=&real_x3;

  double imag_x1,imag_x2,imag_x3;

  double *pimag_x1=&imag_x1;

  double *pimag_x2=&imag_x2;

  double *pimag_x3=&imag_x3;

  cout<<"请输入方程的系数a,b,c,d:"<<"\n"<
  cout<<"系数a=";

  cin>>a;

  cout<
  cout<<"系数b=";

  cin>>b;

  cout<
  cout<<"系数c=";

  cin>>c;

  cout<
  cout<<"系数d=";

  cin>>d;

  cout<
  fun(a,b,c,d,preal_x1,preal_x2,preal_x3,pimag_x1,pimag_x2,pimag_x3);

  cout<<"  "<<"   "<<"根的实部"<<"      "<<"根的虚部"<<"\n"<
  printf("x1   %.5f      %.5f\n\n",real_x1,imag_x1);

  printf("x2   %.5f      %.5f\n\n",real_x2,imag_x2);

  printf("x3   %.5f      %.5f\n\n",real_x3,imag_x3);

}
6楼2008-07-19 20:05:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (小有名气)


suntao1982(金币+1,VIP+0):xiexie
本帖仅楼主可见
7楼2008-07-20 09:42:57
已阅   申请程序强帖   回复此楼   编辑   查看我的主页

孔方兄

铜虫 (初入文坛)

看了大家的回答,真是万分感谢,从上大学开始就没有学过数学了,对大家的回答真是一头雾水,卡丹公式,看样子,我前面的想法太简单了,以为可以得到一个简单的方程式。
关于金币,实在是不知道该给谁?版主给我发吧。
关于卡丹公式,我看了半天没有明白,如果有那位高手,能直接帮我写一个程序就好了,生成exe文件,输入x,等到y

[ Last edited by 孔方兄 on 2008-7-20 at 10:21 ]
8楼2008-07-20 10:12:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sjfcs001

铁杆木虫 (正式写手)

★ ★ ★ ★
csfn(金币+4,VIP+0):3Q
我用vb作了个简单的计算程序,可直接运行的,不过只是近似运算,误差在5%以内,仅满足一般工程计算需要

不知道对楼主有用没?
9楼2008-08-30 13:47:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 孔方兄 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见