방정식이 F(f)=a*f^3+b*f+c
입니다. 나는 데이터의 벡터를 알고있다. p
, 독립 변수 'f'. a
, b
, c
의 값을 찾아야합니다. 내가 뭘하려 :MATLAB을 사용하는 방정식에서 상수 값 찾기
function [ val ] = myfunc(par_fit,f,p)
% This gives me a,b,c
% p= af^3 +bf +c
val = norm(p - (par_fit(1)*(f.^3))+ (par_fit(2)*f) + (par_fit(3)));
end
my_par = fminsearch(@(par_fit) myfunc(par_fit,f,p),rand(1,3));
이 나에게 my_par = [1.9808 -2.2170 -24.8039]
, 또는 a=1.9808
, b=-2.2170
및 c=-24.8039
을 제공하지만, 내가 b
가 5보다 큰 것을 요구하고, c
가 0보다 커야합니다.
val = norm(p-(par_fit(1)*f.^3+par_fit(2)*f+par_fit(3)));
하지만 fmincon
을 사용하여 최소화 할 때 변수의 값을 제한 할 수 있습니다
val = norm(p - (par_fit(1)*(f.^3))+ (par_fit(2)*f) + (par_fit(3)));
아마해야합니다 :
'c'는 0이 아니며, -24.8039입니다. 뭐가 문제 야? – David
죄송합니다. 편집했습니다. C는 0보다 작거나 같을 수 없습니다. – Biparite
'p - a * f^3 - b *에 대해 0을 찾고있는 것처럼'val = norm (p - par_fit (1) * f.^3 - par_fit (2) * f - par_fit (3)); f - c' – Cheery