Fit data with a given equation for 3 variables
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Tesla
el 24 de Mayo de 2022
Comentada: Tesla
el 24 de Mayo de 2022
I want to fit my data to the following equation, but I dont know how to force the program to take the b values which i have, instead of calculating them automatically, I attached here my code which i wrote
fy = @(a,b,x) ((1-(x/a)).^(-a*b));
x = [0,0.1, 0.2, 0.3, 0.4, 0.46, 0.55, 0.6];
y = [0.001, 0.00111499, 0.0011926, 0.0013699, 0.00161633, 0.00192075, 0.00274991, 0.00357156];
b = [0, 1.1499, 0.963, 1.233, 1.540825, 2.001630435, 3.181654545, 4.285933333];
B = fmincon(@(c) norm(y - fy(c(1),c(2),x)), [1; 1], [],[],[],[], [0 0],[1 90]);
fprintf('PhiMax = %.15f\nVisco = %.15f\n', B)
xv = linspace(min(x), max(x));
figure(1)
plot(x, y, 'pg')
hold on
plot(xv, fy(B(1),B(2),xv), '-r')
hold off
grid
2 comentarios
Torsten
el 24 de Mayo de 2022
How should it be possible to have the value for b if you don't know the value for a ?
Respuesta aceptada
Torsten
el 24 de Mayo de 2022
Editada: Torsten
el 24 de Mayo de 2022
Your function is not suited to reflect your data.
x = [0,0.1, 0.2, 0.3, 0.4, 0.46, 0.55, 0.6];
y = [0.001, 0.00111499, 0.0011926, 0.0013699, 0.00161633, 0.00192075, 0.00274991, 0.00357156];
b = [0, 1.1499, 0.963, 1.233, 1.540825, 2.001630435, 3.181654545, 4.285933333];
p0 = 1;
B = lsqnonlin(@(a)fy(a,x,y,b),p0,max(x),Inf)
fprintf('PhiMax = %.15f\nVisco = %.15f\n', B)
figure(1)
plot(x, y, 'pg')
hold on
plot(x, fy(B(1),x,y,b)+y, '-r')
hold off
grid
function res = fy(a,x,y,b)
res = ((1-(x/a)).^a).^b - y;
end
Más respuestas (1)
Hiro Yoshino
el 24 de Mayo de 2022
How about this?
You only need to think about c as follows:
fy = @(a,b,x) ((1-(x/a)).^(-a*b));
x = [0,0.1, 0.2, 0.3, 0.4, 0.46, 0.55, 0.6];
y = [0.001, 0.00111499, 0.0011926, 0.0013699, 0.00161633, 0.00192075, 0.00274991, 0.00357156];
b = [0, 1.1499, 0.963, 1.233, 1.540825, 2.001630435, 3.181654545, 4.285933333];
B = fmincon(@(c) norm(y - fy(c,b,x)),1,[],[],0,1)
Ver también
Categorías
Más información sobre Least Squares en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!