当前位置: 首页 > 计算模拟 >用1stopt计算非线性方程组的未知参数

用1stopt计算非线性方程组的未知参数

作者 l1003785517
来源: 小木虫 700 14 举报帖子
+关注

各位虫友能否帮忙看看
        代码如下,其中a1和a2都可以写成k=k0.exp^(-Ea/RT),即反应速率常数,T是变量。我把参数合并是因为会出现过拟合现象,但即使是这样,我算出来还是会出现参数结果不一样,而且我是希望能够求出k0和Ea来的,不知道有没有什么解决的办法,下面的代码里面只放了一个温度下的实验数据。我把另外几个温度的数据也放到代码的后面了,各位虫友看能帮我解决一下这个难题吗,若有可能帮忙分别计算一下a1和a2中的k0和Ea?
        因为后面还要对不同的动力学方程进行计算,所以想问一下这个是不是得用高阶付费的1stopt软件才能做呢?我用的网上注册版1.5的无法得到正确的结果。谢谢!如果不需要的话还望虫友在解答的过程中能发一下原代码,万分感谢,这里我把剩余的金币都奉上!还望相助,谢谢!
//用1stopt计算非线性方程组的未知参数
Title "kinetic values";
Variables x(1:3),y(1:2);
Parameters a(1:5);
ShareModel;
Function y1=a1*x1/(1+a3*x1+a4*x2+a5*x3);
          y2=(a2*x2-a1*x1)/(1+a3*x1+a4*x2+a5*x2);
Data;
//T=275度 x1,x2,x3;y1,y2;
6.31317        0.029302 0.007644 0.0574 0.0345
6.29412        0.044590 0.011466 0.0407 0.0298
6.27507        0.059878 0.015288 0.0241 0.0251
6.26237        0.069433 0.018473 0.0278 0.0203
6.24713        0.080899 0.022295 0.0315 0.0208
6.23316        0.091091 0.026117 0.0268 0.0194
6.22109 0.099372 0.029939 0.0220 0.0160
6.21093        0.107016 0.032487 0.0172 0.0127
//另外几个实验数据
//T=282度
6.14807        0.133133        0.069433        0.2894        0.1089
6.062345        0.186004        0.102557        0.1519        0.0714
6.021705        0.202566        0.126763        0.0144        0.0338
5.991225        0.212758        0.147147        0.0425        -0.0038
5.968365        0.220402        0.162435        0.0705        0.0217
5.937885        0.234416        0.178997        0.0575        0.0297
5.91566        0.244608        0.1911        0.0445        0.0201
5.892165        0.254163        0.205114        0.0316        0.0105
//T=287度
6.0452        0.187278        0.118482        0.4615        0.1918
5.89026        0.277095        0.184093        0.273        0.1397
5.80136        0.326781        0.223587        0.0845        0.0876
5.74675        0.356083        0.249067        0.0829        0.0356
5.69976        0.377741        0.274547        0.0813        0.0243
5.67182        0.386022        0.294294        0.0677        0.0176
5.648325        0.390481        0.313404        0.0541        0.0152
5.614035        0.400673        0.33761        0.0404        0.0129
//T=292度
5.90677        0.220402        0.224224        0.6236        0.1761
5.741035        0.303212        0.307671        0.4216        0.1584
5.559425        0.383474        0.409591        0.2197        0.1408
5.434965        0.437619        0.480298        0.2059        0.1231
5.311775        0.497497        0.543998        0.1921        0.0677
5.26669        0.514696        0.572026        0.1219        0.0332
5.229225        0.527436        0.596869        0.0817        0.0195
5.201285        0.53508        0.617253        0.0585        0.0058@月只蓝@beefly 返回小木虫查看更多

今日热帖
  • 精华评论
  • dingd

    最好把公式写清楚:
    Function y1=a1*x1/(1+a3*x1+a4*x2+a5*x3);
              y2=(a2*x2-a1*x1)/(1+a3*x1+a4*x2+a5*x2);

    与:
    k=k0.exp^(-Ea/RT)
    都是什么关系?公式“k=k0.exp^(-Ea/RT)”应该是“k=k0.exp^(-Ea/(R*T))”吧?R又是多少?

  • 月只蓝

    如2楼所说,公式k=k0.exp^(-Ea/RT)与a的关系说明不清楚,而且此公式的写法本身就是错误的,正确的是“k=k0*exp(-Ea/R/T),作为求助者,像已知的常数R=8.314应该给出。

  • l1003785517

    引用回帖:
    2楼: Originally posted by dingd at 2018-07-03 22:40:05
    最好把公式写清楚:
    Function y1=a1*x1/(1+a3*x1+a4*x2+a5*x3);
              y2=(a2*x2-a1*x1)/(1+a3*x1+a4*x2+a5*x2);

    与:
    k=k0.exp^(-Ea/RT)
    都是什么关系?公式“k=k0.exp^(-Ea/RT)”应该是“k=k0.exp^(-E ...

    首先感谢您的回复,对我的描述不清楚表示抱歉。
          代码中的公式,Function y1=a1*x1/(1+a3*x1+a4*x2+a5*x3);
                                                 y2=(a2*x2-a1*x1)/(1+a3*x1+a4*x2+a5*x2);
         a1=k1.exp^(-Ea1/RT);
         a2=k2.exp^(-Ea2/RT);
         这是一个阿伦尼乌斯公式,k1,k2都是指前因子,Ea1,Ea2是活化能,这几个参数都是我希望求出来的,但是若果放到公式进去会出现过拟合,所以我才把它们合并了放在代码里。R是常数8.314,T是反应温度,代码中我给出了4个温度下的实验数据。
         不知道您是否能帮我解决这个问题呢?万分感谢

  • l1003785517

    引用回帖:
    2楼: Originally posted by dingd at 2018-07-03 22:40:05
    最好把公式写清楚:
    Function y1=a1*x1/(1+a3*x1+a4*x2+a5*x3);
              y2=(a2*x2-a1*x1)/(1+a3*x1+a4*x2+a5*x2);

    与:
    k=k0.exp^(-Ea/RT)
    都是什么关系?公式“k=k0.exp^(-Ea/RT)”应该是“k=k0.exp^(-E ...

    不好意思这两个公式应该是这样,我写错了。
    a1=k1*exp^(-Ea1/R/T);
    a2=k2*exp^(-Ea2/R/T);

  • l1003785517

    引用回帖:
    3楼: Originally posted by 月只蓝 at 2018-07-04 07:36:35
    如2楼所说,公式k=k0.exp^(-Ea/RT)与a的关系说明不清楚,而且此公式的写法本身就是错误的,正确的是“k=k0*exp(-Ea/R/T),作为求助者,像已知的常数R=8.314应该给出。

    ...

    是的,作为一个求助者真的不应该出现这种错误,很抱歉。
    我在代码中给出的公式,Function y1=a1*x1/(1+a3*x1+a4*x2+a5*x3);
                                                        y2=(a2*x2-a1*x1)/(1+a3*x1+a4*x2+a5*x2);
         a1=k1*exp^(-Ea1/R/T);
         a2=k2*exp^(-Ea2/R/T);
         这是一个阿伦尼乌斯公式,k1,k2都是指前因子,Ea1,Ea2是活化能,这几个参数都是我希望求出来的,但是若果放到公式进去会出现过拟合,所以我才把它们合并了放在代码里。R是常数8.314,T是反应温度,代码中我给出了4个温度下的实验数据。
        希望能够得到您的帮助?万分感谢!

  • dingd

    还是说的不明不白:
    1:a3,a4和a5与a1,a2采用相同的处理方式?还是视为3个独立的待求参数?
    2:对应4个T有四组数据,是想分别求出这四组数据各自对应的一组参数还是这四组数据拥有一组共同的参数?
    3:待求参数有范围限制吗?比如k1,k2必须在[0,1]之间。

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓