在没有for循环的MATLAB中求解隐式函数

时间:2015-08-19 11:50:45

标签: matlab function math

我遇到了一个问题,你们可能对我有所帮助。

在Matlab中,我试图解决隐式函数,请参阅以下内容:

Cp = Cpi / (  sqrt(1 - M^2) + (M^2 / (sqrt(1-M^2))) * Cpi/2 )

在这里,我知道M和Cp的值,并想知道Cpi的值。此外,由于计算时间的考虑,我想避免在方法中使用循环。

最后,我知道这并不难解决,例如,可以使用''黄金双截面''方法来找到答案,但是我不知道如何在MATLAB中对此进行编码。有谁知道,或者有一段能够解决Cpi的代码?

谢谢你们!非常感谢您的帮助

1 个答案:

答案 0 :(得分:3)

使用fzero可以轻松完成。如果您将Cp部分移至RHS,并尝试使用fzero找到根,并使用Cpi作为变量,则可以这样解决:

M = 0.4; Cp = 3;
f = @(Cpi) Cp - (Cpi / (  sqrt(1 - M^2) + (M^2 / (sqrt(1-M^2))) * Cpi/2 ));

fzero(f,0)
ans =
    3.7250

当然,您不需要先将其分配给匿名函数,但在我看来,它更容易阅读。