2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Трудности в Mathematica
Сообщение20.08.2011, 12:17 
Здравствуйте! Столкнулся со следующей проблемой.
Стандартно использую функцию FindFit:
Код:
data = {{0, 0}, {0.00003395061728395058`,
    0.040707964601769904`}, {0.00008796296296296296`,
    0.106194690265487`}, {0.00012191358024691318`,
    0.148672566371681`}, {0.00019135802469135763`,
    0.230088495575221`}, {0.00022993827160493863`,
    0.272566371681416`}, {0.00030246913580246875`,
    0.350442477876106`}, {0.0003688271604938275`,
    0.41061946902654906`}, {0.0004012345679012349`,
    0.43362831858407097`}, {0.00042283950617283915`,
    0.449557522123894`}, {0.000449074074074074`,
    0.46371681415929206`}, {0.00047685185185185184`,
    0.47610619469026505`}, {0.0005061728395061724`,
    0.48672566371681397`}, {0.0005401234567901238`,
    0.49380530973451303`}, {0.0005709876543209873`,
    0.495575221238938`}, {0.000598765432098765`,
    0.49380530973451303`}, {0.0006203703703703703`,
    0.490265486725664`}, {0.0006496913580246909`,
    0.479646017699115`}, {0.000674382716049383`,
    0.470796460176991`}, {31/43200,
    0.449557522123894`}, {0.0007700617283950613`,
    0.41061946902654906`}, {7/8640,
    0.37345132743362797`}, {0.0008657407407407407`,
    0.31858407079646`}, {0.0009089506172839502`,
    0.26902654867256603`}, {0.0009783950617283947`,
    0.180530973451327`}, {0.0010447530864197533`,
    0.0938053097345133`}, {1/900, 0}};
ro = 1000;

g = 9.81;

a1 = 7.699676750063447`*10^-7;

a2 = 0.3295837593644212;

a3 = -6.27106428432607`*10^6;

nnom = 2910;
model = (ro*g*(a1*nnom^2 + a2*nnom*Q + a3*Q^2)*Q)/(
  b1*nnom^2*Q + b2*nnom*Q^2 + b3*nnom^3);

fit = FindFit[data, model, {b1, b2, b3}, Q]
{b1 -> -424765., b2 -> -1.55989*10^12, b3 -> 0.903556}

Plot[model /. fit, {Q, 0, 96/(24*60*60)},
Epilog -> Map[Point, data]]

Изображение
Видно что исходные точки даже близко не лежат на кривой, а вот что будет если подставить другие коэффициенты:
Код:
prav = {b1 -> -0.0018603399568560789`, b2 -> 13078.620141622756`,
   b3 -> 2.1902983136254543`*10^-9};
Plot[model /. prav, {Q, 0, 96/(24*60*60)}, Epilog -> Map[Point, data]]

Изображение
В чем моя ошибка? Или для Mathematica это уже сложная задача?
Если нельзя с функцией FindFit найти коэффициенты, то может быть подскажете какую-нибудь другую функцию или способ.
Заранее спасибо за ответы!

 
 
 
 Re: Трудности в Mathematica
Сообщение20.08.2011, 14:03 
Математика ищет локальный минимум, начиная с некоторых начальных значений. Если они неудачны, то минимум может оказаться не глобальным. В FindFit начальные значения можно указывать. В данном случае работает
Код:
fit = FindFit[data, model, {{b1, 0}, {b2, 0}, {b3, 10^-3}}, Q]

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group