±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 1675  |  »Ø¸´: 3

wsbl

½ð³æ (СÓÐÃûÆø)

[½»Á÷] Levenberg-Marquardt Ëã·¨µÄÀý×Ó´úÂë ÒÑÓÐ3È˲ÎÓë

#include "stdio.h"
#include
#include
void out(double*p,int n,int m)//Êä³ö¾ØÕó
{int i,j;

for (i=0;i            for (j=0;j     {   
           if ((m*i+j)%m==0)
                   printf("\n";
           printf("%16.8f",*(p+m*i+j));
          
   }
   printf("\n\n";
}


void LM(double *c, double *sigma, int N, double sigma_H2O,double r[3])
{
int i,j,maxtime=100; //Èç¹û²»ÊÕÁ²£¬ÔÊÐíµÄ×î´óµü´ú´ÎÊý
double s,snext,det,temp0;
   
  
    double x[]={.5,.5},xnext[2],ep[2];
   
   double f[6];
   double f_x1[6];
   double f_x2[6];
   
   double m[4];  //¾ØÕó

   double temp1[4];//Äæ¾ØÕó
        double temp2[2];
         double temp3[2];
       

   double alph,beita;

   j=0;
     for (i=0;i         {f=(sigma-(sigma_H2O-sigma_H2O*x[0]*log(1+c/x[1])));
     f_x1=sigma_H2O*log(1+c/x[1]);
     f_x2=-sigma_H2O*x[0]*c/(x[1]*x[1])/(1+c/x[1]);
        }

  s=.0;
  for (i=0;i     s=s+f*f;


  temp0=.0;
  for (i=0;i   temp0=temp0+f_x1*f_x1;
  m[0]=temp0;
       
  temp0=.0;
  for (i=0;i   temp0=temp0+f_x1*f_x2;
  m[1]=temp0;
  m[2]=temp0;

  temp0=.0;
  for (i=0;i   temp0=temp0+f_x2*f_x2;
  m[3]=temp0;


        //out(m,2,2);//µ½´Ë²½ÕýÈ·¡£
  alph=(fabs(*m)+fabs(*(m+3)))/2;
  //printf("%8.5e\n",alph);
  beita=2.0;

   m[0]=m[0]+alph;
   m[3]=m[3]+alph;
   //out(m,2,2);//µ½´Ë²½ÕýÈ·¡£

  det=1.0/(m[0]*m[3]-m[1]*m[2]);
//printf("µü%15.10f\n",det);
  temp1[0]=det*m[3];
  temp1[1]=-det*m[1];
  temp1[2]=-det*m[1];
  temp1[3]=det*m[0];

//out(temp1,2,2);//µ½´Ë²½ÕýÈ·¡£
//temp2=mult(temp,f,2,N,1);
  temp0=.0;
  for (i=0;i   temp0=temp0+f*f_x1;
  temp2[0]=temp0;

  temp0=.0;
  for (i=0;i   temp0=temp0+f*f_x2;
  temp2[1]=temp0;


//out(temp2,2,1);//µ½´Ë²½ÕýÈ·¡£
//temp3=mult(temp1,temp2,2,2,1);
  temp0=.0;
  for (i=0;i<2;i++)
        {                temp0=temp0+temp1*temp2;                   
        }
        temp3[0]=temp0;

  temp0=.0;
  for (i=0;i<2;i++)
        {                temp0=temp0+temp1[2+i]*temp2;                   
        }
        temp3[1]=temp0;


//out(temp3,2,1);//µ½´Ë²½ÕýÈ·¡£

  xnext[0]=x[0]-temp3[0];
  xnext[1]=x[1]-temp3[1];
//out(xnext,2,1);//µ½´Ë²½ÕýÈ·¡£

  snext=0;
  for (i=0;i   { f=(sigma-(sigma_H2O-sigma_H2O*xnext[0]*log(1+c/xnext[1])));
     snext=snext+f*f;
  }
//printf("%8.5e",snext);//µ½´Ë²½ÕýÈ·¡£

  ep[0]=xnext[0]-x[0];
  ep[1]=xnext[1]-x[1];

//out(ep,2,1);//µ½´Ë²½ÕýÈ·¡£

while (((fabs(ep[0])+fabs(ep[1]))/2)>1.0e-6 && j {j=j+1;
   if (snext>=s)
       alph=alph*beita;
   else
       alph=alph/beita;
      //printf("%8.3f\n",(float)j);
   
      x[0]=xnext[0];
          x[1]=xnext[1];
      s=snext;
   
     for (i=0;i         {f=(sigma-(sigma_H2O-sigma_H2O*x[0]*log(1+c/x[1])));
     f_x1=sigma_H2O*log(1+c/x[1]);
     f_x2=-sigma_H2O*x[0]*c/(x[1]*x[1])/(1+c/x[1]);
        }

   s=.0;
   for (i=0;i     s=s+f*f;

temp0=.0;
  for (i=0;i   temp0=temp0+f_x1*f_x1;
  m[0]=temp0;
       
  temp0=.0;
  for (i=0;i   temp0=temp0+f_x1*f_x2;
  m[1]=temp0;
  m[2]=temp0;

  temp0=.0;
  for (i=0;i   temp0=temp0+f_x2*f_x2;
  m[3]=temp0;

m[0]=m[0]+alph;
m[3]=m[3]+alph;
//out(m,2,2);//µ½´Ë²½ÕýÈ·¡£

  det=1.0/(m[0]*m[3]-m[1]*m[2]);
//printf("µü%15.10f\n",det);
  temp1[0]=det*m[3];
  temp1[1]=-det*m[1];
  temp1[2]=-det*m[1];
  temp1[3]=det*m[0];

//out(temp1,2,2);//µ½´Ë²½ÕýÈ·¡£
//temp2=mult(temp,f,2,N,1);
temp0=.0;
  for (i=0;i   temp0=temp0+f*f_x1;
  temp2[0]=temp0;

  temp0=.0;
  for (i=0;i   temp0=temp0+f*f_x2;
  temp2[1]=temp0;


//out(temp2,2,1);//µ½´Ë²½ÕýÈ·¡£
//temp3=mult(temp1,temp2,2,2,1);
  temp0=.0;
  for (i=0;i<2;i++)
        {                temp0=temp0+temp1*temp2;                   
        }
        temp3[0]=temp0;

  temp0=.0;
  for (i=0;i<2;i++)
        {                temp0=temp0+temp1[2+i]*temp2;                   
        }
        temp3[1]=temp0;


//out(temp3,2,1);//µ½´Ë²½ÕýÈ·¡£

xnext[0]=x[0]-temp3[0];
xnext[1]=x[1]-temp3[1];
//out(xnext,2,1);//µ½´Ë²½ÕýÈ·¡£

snext=0;
for (i=0;i { f=(sigma-(sigma_H2O-sigma_H2O*xnext[0]*log(1+c/xnext[1])));
     snext=snext+f*f;
}

ep[0]=xnext[0]-x[0];
ep[1]=xnext[1]-x[1];
   
}
r[0]=xnext[0];
r[1]=xnext[1];
r[2]=(double)j;
}

void main()
{
   //double p[] = {0.02,0.04,0.08,0.12,0.16,0.2,0.24,0.28};//mol/L
   //double q[] = {0.06810,0.06442,0.0601,0.05678,0.05467,0.05237,0.05108,0.05025};//N/m

   double p[] = {0.02,0.04,0.08,0.12,0.16,0.2};
   double q[] = {0.06810,0.0644,0.0601,0.0568,0.0547,0.0524};
   double r[3];
   LM(p,q,6,0.07197,r);
   
    printf("µü´ú´ÎÊý£º%5.0f\n",r[2]);

if (r[2]<100)
{  
    printf("\nϣʲ¿Æ·òÄ£ÐÍsigma_H2O-sigma_H2O*a*ln(1+x/b)ÖÐ\n\n²ÎÊýaµÄ×îÓÅֵΪ:%9.9f\n",r[0]);
    printf("\n²ÎÊýbµÄ×îÓÅֵΪ:%9.9f\n\n",r[1]);
}
  else
    printf("\nÓÃLevenberg·¨Ê§°Ü\n\n";

  for(int i=0;i<1;i++)//ÑÓʱ¼¸Ãë¡£
        {
        printf("°´»Ø³µ¼ü½áÊø³ÌÐò:";
        getchar();
        }  
}
»Ø¸´´ËÂ¥

» ÊÕ¼±¾ÌûµÄÌÔÌûר¼­ÍƼö

Èí¼þѧϰ

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

stockline

Ìú³æ (³õÈëÎÄ̳)

2Â¥2011-10-16 07:18:24
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

lrs2008

ľ³æ (ÕýʽдÊÖ)

¹ÛÌì

¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
¹Ô¹Ô   Õâô³¤ ...
²Ð
3Â¥2011-10-16 09:21:30
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

lingshuning

ľ³æ (Ö°Òµ×÷¼Ò)

¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
ºÜÍêÕû£¬ÒªÊÇÔÙÓиö³ÌÐò×¢Ê;ÍÍêÃÀÁË£¬²»¹ý»¹ÊǶàл¥Ö÷µÄ·ÖÏí£¡
²»¹ÜδÀ´ÈçºÎ£¬Îұؽ߾¡ËùÄÜ
4Â¥2011-12-03 19:18:50
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ wsbl µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 272·ÖÇóµ÷¼Á +4 wangyile2233 2026-04-02 4/200 2026-04-05 22:21 by 286640313
[¿¼ÑÐ] 285Çóµ÷¼Á +4 ¶ñ·¨´ó¶þµÄÆøÎ¶ß 2026-04-05 5/250 2026-04-05 20:32 by 286640313
[¿¼ÑÐ] 327Çóµ÷¼Á +4 ʰ¹âÈÎȾ 2026-04-05 4/200 2026-04-05 20:16 by ÄϺ½~ÍòÀÏʦ
[¿¼ÑÐ] 296Çóµ÷¼Á +3 Íô£¡£¿£¡ 2026-04-05 4/200 2026-04-05 20:13 by à£à£à£0119
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á325·Ö +9 15771691647 2026-04-04 9/450 2026-04-05 11:39 by Öí»á·É
[¿¼ÑÐ] ÉúÎ﹤³ÌÇóµ÷¼Á +6 ϲ»¶»¹ÊDz»¸ÊÐÄ 2026-04-05 6/300 2026-04-05 10:28 by ÌÆãå¶ù
[¿¼ÑÐ] ¿¼Ñе÷¼Á +3 mcbbc 2026-04-04 3/150 2026-04-05 10:03 by barlinike
[¿¼ÑÐ] Ò»Ö¾Ô¸»ªÖÐũҵ´óѧ0710£¨A£©³õÊÔ329·Ö Çóµ÷¼Á +4 Ò»Ãû26¿¼ÑÐÉú 2026-04-04 4/200 2026-04-05 10:01 by barlinike
[¿¼ÑÐ] Ò»Ö¾Ô¸½­ÄÏ´óѧ085501»úе¹¤³Ìר˶326·Ö£¬±¾¿Æ¼Ñľ˹´óѧ +5 ¹ËÈô¸¡Éú 2026-04-03 9/450 2026-04-05 09:57 by 1753564080
[¿¼ÑÐ] ²ÄÁÏÇóµ÷¼Á +10 ÄØÄØÄÝÄÝ 2026-04-01 10/500 2026-04-04 23:12 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] ÇóÉúÎïѧµ÷¼Á +14 15172915737 2026-04-01 14/700 2026-04-04 20:13 by babysonlkd
[¿¼ÑÐ] ¿¼Ñе÷¼Á +3 Draa 2026-04-03 3/150 2026-04-03 17:37 by hgwz7468
[¿¼ÑÐ] Çóµ÷¼Á +3 ÐÄÏëÊÂ³É¿É 2026-04-03 3/150 2026-04-03 11:22 by wangjy2002
[¿¼ÑÐ] ½»Í¨ÔËÊ俼ÊÔ264·ÖÇ󹤿Ƶ÷¼Á +4 jike777 2026-04-02 4/200 2026-04-02 21:53 by zllcz
[¿¼ÑÐ] µ÷¼Á +3 ºÃºÃ¶ÁÊé¡£ 2026-04-01 6/300 2026-04-02 15:49 by liumengping
[¿¼ÑÐ] ÍÁľ304Çóµ÷¼Á +6 ÍÃͻͻͻ£¬ 2026-03-31 7/350 2026-04-02 09:06 by coolminer
[¿¼ÑÐ] »¯Ñ§¹¤³Ìר˶324·Ö£¬Ò»Ö¾Ô¸Öйú¿óÒµ´óѧÇóµ÷¼Á +7 ¹¢¹¢1314 2026-04-01 7/350 2026-04-02 07:40 by ÉÐË®¸óÖ÷
[¿¼ÑÐ] 085600 Ò»Ö¾Ô¸9 ×Ü·Ö351 Çóµ÷¼ÁѧУ +7 czhcz 2026-03-31 9/450 2026-04-01 19:24 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] Ò»Ö¾Ô¸±±½»²ÄÁϹ¤³Ì×Ü·Ö358 +5 cs0106 2026-04-01 7/350 2026-04-01 11:45 by wangjy2002
[¿¼ÑÐ] ±§Ç¸ +3 ÌïºéÓÐ 2026-03-30 3/150 2026-03-30 19:11 by ÃÔºýCCPs
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û