Здравствуйте! Столкнулся со следующей проблемой.
Стандартно использую функцию 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 найти коэффициенты, то может быть подскажете какую-нибудь другую функцию или способ.
Заранее спасибо за ответы!