m0_63549002 2022-07-28 14:21 采纳率: 75%
浏览 40
已结题

咋用c语言写解这个方程组的代码

img

c语言怎么都解不出来这个方程组,五个解四个未知数按道理应该是可行的,但是怎么都没思路

  • 写回答

3条回答 默认 最新

  • superSmart_Dong 2022-07-28 23:25
    关注

    采用“牛顿迭代法”或者“列文伯格马夸尔特法”求解。代码太多不好贴,但是在github上有
    你的方程根据t1,t2的值大概率无解。当 t1 =1 时,求解

    t1 = b  - a
    a*a = 5*5
    b*b =  4*4 - (x +2)*(x +2)
    
    
    
    
    class MyCostFunction : public CostFunction{
    public:
        MyCostFunction (Real t1 ,Real t2):t1_(t1),t2_(t2){}
        Real value(const Array& x) const override {
    //        QL_REQUIRE(x.size()==1,"independent variable must be 1 dimensional");
            Real result = 0;
            Array y(x.size());
            y = values(x) ;
            for (int i = 0; i < x.size(); ++i) {
                result +=  y[i] *y[i];
            }
            return result/y.size();
        }
    
        Disposable<Array> values(const Array& array) const override {
            Array y(array.size());
            Real a = array[0];
            Real b = array[1];
            Real x = array[2];
            y[0]=t1_ -b +a ;
            y[1]=a*a - 5*5 ;
            y[2]=b*b -  4*4 + (x +2)*(x +2);
    
            return y;
        }
    
    private:
        Real  t1_;
        Real  t2_;
    };
    
    int  main(){
        Real esp = QL_EPSILON;
    
        const Array initialValues = {0,0,0};  //初始迭代值
    
        MyCostFunction costFct(1,0);
        NoConstraint noConstraint;  //约束条件
        Problem prob(costFct, noConstraint, initialValues);
        EndCriteria endCriteria(500, 100, esp, esp, esp);
        LevenbergMarquardt().minimize(
                prob, endCriteria);
        Real a = prob.currentValue()[0];
        Real b = prob.currentValue()[1];
    
        Real x = prob.currentValue()[2];
        std::cout<<"a:"<<a<<std::endl;
        std::cout<<"b:"<<b<<std::endl;
    
        std::cout<<"x:"<<x<<std::endl;
        return 0 ;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月15日
  • 已采纳回答 9月7日
  • 创建了问题 7月28日

悬赏问题

  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab