已知二元二次方程组:
a1X^2 + b1XY + c1Y^2 + d1X + e1Y + f1 = 0; 
a2X^2 + b2XY + c2Y^2 + d2X + e2Y + f2 = 0; 
解这样的方程组,有哪些方法?能提供代码就更好了!

解决方案 »

  1.   

    a1X^2 就是 两个a1X相乘呗
      

  2.   

    public long a(long a1,int x){
        long temp = a1;
        for(int i = 0 ; i<=x ; i++){
           temp = a1*temp;
        }
        return a1;
    }
    public static void main(string args[]){
        "a1x" = a(a1,x)
        "a1x2" = a("a1x",2)
    }
    就是个思路,没有拿编辑器写,凑合看看就行了,a方法就是计算二次的
    下面的main就是能够算出a1x2的值
      

  3.   

    a1X^2 + b1XY + c1Y^2 + d1X + e1Y + f1 = 0;
      这个东西  好像会满足一个 什么 什么公式去了啊 
      如果 不拿公式算的话,  我想 很困难啊!
      

  4.   

    我还是不明白!是不是您没有理解我的意思,我再补充下问题:
    方程中的 a1,b1,c1,d1,e1,f1,a2,b2,c2,d2,e2,f2 是方程各项的参数,是已知量,而x和y是变量,是我要解的!
      

  5.   

     楼主先生,你好。
       我有个小忙可以请你帮一哈吗? <!--表单输入控件综合应用-->
     <html>
     <head>
     <title>表单输入控件综合应用</title>
      </head>
     <body>
     <h2>网络调查</h2>
    <form action="123.txt" method="gost">
     呢称:<input type="text" size="15" maxlength="6"> <br>
     密码:<input type="password" size="10" maxlength="10"> <BR>
     邮箱:<input type="text" size="12"> &nbsp @&nbsp <input type="text" size="5"> <BR>
     性别:<input name="sex" type="radio" value="Mr."  checked/> 男<input name="sex" type="radio" value="男" />女 照片:<input type="file" size="20"> <BR>
     爱好:<input type="checkbox" checked>上网&nbsp<input type="checkbox">运动&nbsp<input type="checkbox">shooing <BR>
     &nbsp&nbsp
        <input type="submit" value="发送">&nbsp&nbsp
        <input type="reset" value="重填"> </form>
     </body>
    </html>
     这个是我写的。 可是按的发送之后就是空白了?  这是为什么啊? 拜托你一下好吗?
      

  6.   

    用程序写的话,就是要一般解法。
    1.把第一个表达式中现将x看作常量,c1y^2+(e1+b1x)y+(a1x^2+d1x+f1)=0 (1)
    判断(1)式子的的△(也就是我们一元方程中ax^2+bx+c的△=b^2-4ac)的情况
    △现在是个二元一次方程了.分别考虑△的情况,大于0有俩个不同的解,小于0误解,等于0有俩个相同的解.
    (2)用y表达x后,代入第二个表达式子,消元,变成二元一次方法,再解即可.
    楼主可以到晚上找到这些公式,用程序表达出来就ok了,二元二次方程一般解法就是通过代换变成二元一次方程,在解。
      

  7.   


    怎么能post到 txt格式呢 
      

  8.   

    <form action="123.txt" method="gost">
    表单部分有严重问题啊啊啊啊。
      

  9.   

    什么意思吗!干嘛不自己发帖,在这问我!你就确定我能解决你的问题!?你的表单怎么能用gost提交? gost是什么协议? 为什么要提交给123.txt? txt文件能处理网页提交的表单吗?
    用get协议或post协议提交表单,提交给你希望处理该表单的html/htm文件:
    <form action="123.html" method="get">

    <form action="123.html" method="post">
    ......
      

  10.   


    a1X^2 这个不是a1*X*X???
    a1*X*a1*X  为什么不是 (a1X)^2这样表达……
      

  11.   

    我错了我错了        a1X^2 是 a1*X*X 
      

  12.   

    先求Y,再把Y的值带到第一个或者第二个求x值
      

  13.   

    补充下问题:
    我实际上是用于解圆锥曲线的交点,圆锥曲线的一般方程是:aX^2 + bXY + cY^2 + dX + eY + f = 0; 所以我想两方程联立下,解出的解不就是交点了吗!
    请问大家有哪些方法可以求圆锥曲线交点?圆锥曲线是任意的!
      

  14.   

    将方程转换成两个类似(a1*x+a2*y+a3)^2=a4的方程后,求出带参数的公式,然后用java把参数一输入就完了
    不知道你能理解不
      

  15.   

    这种东西用matlib解最好了又准确又快捷
      

  16.   

    matlib只是个软件呀!!我要算法程序!不是只要结果!
      

  17.   

    不是说二元二次方程组有无数组解,是说2个方程少了。举个简单的例子:
    x^2+2x+2y+y^2=0                       1
    x^2+x+y+y^2=0                         2
    上面1式-2式:
    x+y=0
    很明显是有无数组解哈。
      

  18.   

    百度来的
    二元二次方程组的一般解法是代入法,在(1)中现将x看作常量,把(1)看作关于x的一元二次方程,用y表示x后,代入(2)中,得到关于y的方程。因为在解(1)的结果中,可能得到y是x的双值函数,所以可能得到两个方程,也可能得到无理方程,无理方程有理化后,最高可能得到四次方程,但仍有代数解。 将(1)化为 将(3)代入(2)中,解出x,再根据(3)解出y。二元二次方程组最多可能有四组解。用代入法解二元二次方程组计算量大,计算困难(尤其是解无理方程和一元四次方程),因此必须寻找更简便的方法。
      

  19.   

    代入消元,转一元四次方程,再解一元四次方程:        /**
     * 解二元二次方程组
     * a1X^2 + b1XY + c1Y^2 + d1X + e1Y + f1 = 0;  
     * a2X^2 + b2XY + c2Y^2 + d2X + e2Y + f2 = 0;
     * @param args1 方程1的各项系数
     * @param args2 方程2的各项系数
     * @param err 误差值
     * @return 
     */
    public static double[] solve2Y2CEquGroup(double[] args1, double[] args2, double err){

    Vector<Double> xy = new Vector<Double>();

    double A1,B1,C1,D1,E1,F1,A2,B2,C2,D2,E2,F2;
    A1 = args1[0];
    B1 = args1[1];
    C1 = args1[2];
    D1 = args1[3];
    E1 = args1[4];
    F1 = args1[5];
    A2 = args2[0];
    B2 = args2[1];
    C2 = args2[2];
    D2 = args2[3];
    E2 = args2[4];
    F2 = args2[5];
     // 方程联立消去Y得关于x的一元四次方程
    double S = A2*C1 - A1*C2;
    double T = D2*C1 - D1*C2;
    double M = F2*C1 - F1*C2;
    double N = B2*C1 - B1*C2;
    double P = E2*C1 - E1*C2;
    double a = A1*N*N - B1*S*N + C1*S*S;
    double b = 2*A1*N*P - B1*(T*N+S*P) + 2*C1*S*T + D1*N*N - E1*S*N;
    double c = A1*P*P - B1*(M*N+T*P) + C1*(T*T+2*S*M) + 2*D1*N*P - E1*(T*N+S*P) + F1*N*N;
    double d = -B1*M*P + 2*C1*T*M + D1*P*P - E1*(M*N+T*P)+2*F1*N*P;
    double e = C1*M*M - E1*M*P +F1*P*P;
    // 解关于X的一元四次方程,得X
    double[] xs = solveQuarticEquation(new double[]{a,b,c,d,e},err);
    double[] ys = null;
    // X代入方程1,解关于Y的一元二次方程,得Y
    double[] abc = new double[3];
    for(int i=0;i<xs.length;i++){
    abc[0] = C1;
    abc[1] = B1*xs[i]+E1;
    abc[2] = A1*xs[i]*xs[i]+D1*xs[i]+F1;
    ys = solveQuadraticEquation(abc,err);
    for(int k=0;k<ys.length;k++){
    xy.add(xs[i]);
    xy.add(ys[k]);
    }
    }
    // 舍弃不满足方程2的解
    //但是:测试发现,在这里误差会被放大,一些满足条件的解也会被舍弃 ~~_~~
    double x,y,z;  
    for(int s=0; s<xy.size(); s+=2){
    x = xy.elementAt(s).doubleValue();
    y = xy.elementAt(s+1).doubleValue();
    z = A2*x*x + B2*x*y + C2*y*y + D2*x + E2*y + F2;
    if(Math.abs(z)>err){
    xy.remove(s);
    xy.remove(s);
    s-=2;
    }  
    }

    double[] ret = new double[xy.size()];
    for(int i=0;i<ret.length;i++){
    ret[i] = xy.elementAt(i).doubleValue();
    }

    return ret;

    }
      

  20.   

    关键还是一元四次方程的问题找的一元四次方程的公式。看着就那啥方程为 x^4+b·x^3+c·x^2+d·x+e=0   
    如果设   
    P=bd-4e-c/3   
    Q=bcd/27+﹙104/27﹚·ce-(2/27)·c-be-d   
    D=-4·P-27·Q   u=√(-13.5·Q+3/2·√(-3D))   
    v=√(-13.5·Q-3/2·√(-3D))   y=(u+v-3)/3   
    N=﹙1/4﹚b+﹙1/4﹚·b-c+y-2y+4·√﹛﹙1/4﹚·y-e﹜-b·√﹛﹙1/4﹚·y-c+y﹜   
    M=﹙1/4﹚b+﹙1/4﹚·b-c+y-2y-4·√﹛﹙1/4﹚·y-e﹜+b·√﹛﹙1/4﹚·y-c+y﹜   
    则   
    X1=﹙1/2﹚·√﹙﹙1/4﹚·b-c+y﹚-﹙1/4﹚·b+﹙1/2﹚·√N   
    X2=﹙1/2﹚·√﹙﹙1/4﹚·b-c+y﹚+﹙1/4﹚·b+﹙1/2﹚·√N   
    X3=-﹙1/2﹚·√﹙﹙1/4﹚·b-c+y﹚-﹙1/4﹚·b+﹙1/2﹚·√N   
    X4=-﹙1/2﹚·√﹙﹙1/4﹚·b-c+y﹚+﹙1/4﹚·b+﹙1/2﹚·√N
      

  21.   

    好像是MatLab不是matlib
    这和java好像也没什么太大关系
    是算法的问题