从Matlab到C#:我应该用什么来代替fsolve?

从Matlab到C#:我应该用什么来代替fsolve?,c#,matlab,numerical-methods,C#,Matlab,Numerical Methods,我必须将Matlab脚本转换为C#。matlab代码使用fsolve()查找函数的不动点 function Pr2=adiab(Pr1,Tr1,Pv1,Tv1,Pv2,k,kv,Vv,Vr) Pr2=(Pr1^(1/k)-Vv/Vr*Tr1/Tv1*Pr1^((1-k)/k)*(Pv2^(1/kv)/Pv1^((1-kv)/kv)-Pv1))^k; end % ... Prav(i+1)=fsolve(@(Pr2) Pr2-adiab(Prav(i),Trav(i),Pa,Ta,Pr2,

我必须将Matlab脚本转换为C#。matlab代码使用fsolve()查找函数的不动点

function Pr2=adiab(Pr1,Tr1,Pv1,Tv1,Pv2,k,kv,Vv,Vr)
    Pr2=(Pr1^(1/k)-Vv/Vr*Tr1/Tv1*Pr1^((1-k)/k)*(Pv2^(1/kv)/Pv1^((1-kv)/kv)-Pv1))^k;
end
% ...
Prav(i+1)=fsolve(@(Pr2) Pr2-adiab(Prav(i),Trav(i),Pa,Ta,Pr2,k,kv,Vvt,Vrt),Prav(i));
我知道我需要一个数值解算器,但有太多我不知道哪种方法最适合这个问题

  • 有一系列的寻根算法
  • 具有解决非线性方程组的方法:

    非线性方程组求解
    • 牛顿法
    • 割线法
    • 半除法
    • 弦法
  • 我不能用:免费版有GPL许可证,商业版太贵了


您是否研究过其他需要C#solver库的问题?见例;另一种可能是从C#调用Matlab:我在过去使用过,并且会推荐许多解决特定问题的方法。我不知道我的问题需要哪种类型。我已经编辑了这个问题