finding a coefficient from an equation
Mostrar comentarios más antiguos
Hello, i m a beginner on matlab and i would need some help. I have 2 vectors x and z with 10 values each and the equation z=c*sqrt(x). I have to find the value of c. Help please.
3 comentarios
Adam Danz
el 18 de Mayo de 2020
This is more of a math problem than a Matlab problem.
In essence, you have to solve for c. Then you just have to plug in your vectors.
Since this is likely homework, I'd be glad to help you solve.
Hint #1:
y = x*A ---> y/A = x
Hint #2:
To divide two vectors element-wise, use q./r
Ana Monea
el 18 de Mayo de 2020
Walter Roberson
el 18 de Mayo de 2020
In that case either use / or \ operators with appropriate arguments. They will do a least-squared fitting to find the best value for c.
Respuestas (1)
Ang Feng
el 18 de Mayo de 2020
(1)If your vectors x and x follows exactly z=c*sqrt(x), then the constant c can be calculated, as mentioned by Adam Danz,
c = sqrt(x)./z
You have a vector c which has 10 identical value which is what you are looking for.
(2) In the case x, and z just follow then trend of z=c*sqrt(x), you are actually asking for a constant c that minimize some function of the error
vector. Normally, we minimize norm of the square of the error
. This is a least square problem. You can actually use the curve fitting tool box to fit the function.
sqrtX = sqrt(x);
f = fit(sqrtX,z,'poly1');
c = f.p1;
Here is my little example.
x = (1:10)';sqrtX = sqrt(x);
z = 2*sqrtX+0.05*randn(10,1);% add some noise
f = fit(sqrtX,z,'poly1');
c = f.p1
ans =
1.9725
The parameter c = 2 was calculated to be 1.9725.
1 comentario
Ana Monea
el 18 de Mayo de 2020
Categorías
Más información sobre Mathematics en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!