有没有CC++解非线性方程组的库

有没有CC++解非线性方程组的库,第1张

什么类似的功能,你把你的功能需求说出来,说不定能帮上你啊,maltab里的fsolve功能,有相关的类,你为什么不用啊!privatevoidbutton1_Click(objectsender,System.EventArgse){MLApp.IMLAppmatlab=newMLApp.MLAppClass()stringcommandcommand="t=2:0.2:4*piy=sin(t)plot(t,y)"matlab.Visible=0matlab.Execute(command)command=@"print(gcf,'-djpeg','c:\Test1')"matlab.Execute(command)matlab.Quit()matlab=nullpictureBox1.Image=Image.FromFile(@"c:\Test1.jpg")}装的是matlab7

如果连续函数在给定区间不单调,很有可能中值*下界值和中值*上界值都大于0,那么会跳出认为没有根,而事实上很有可能这个中值点靠近函数极点。而真正用二分法求给定区间的思路是:首先为函数求导,算出导函数的零点,然后再判断零点性质,最后将函数区间分为单调递增和单调递减间隔的形式,对每一段进行二分法求根。

#include <stdio.h>

#include <math.h>

#define DEFAULT_UPPER(10)

#define DEFAULT_LOWER(-10)

#define DEFAULT_E(0.00000001)

#define _MID(x,y)((x+y)/2)

#define _VALUE(x)(2*x*x*x-4*x*x+3*x-6)

double _e

int getRoot(double lower, double upper, double *result)

main()

{

double root

printf("Enter a deviation:")

scanf("%lf",&_e)

if(_e == 0.0)

_e = DEFAULT_E

if(getRoot(DEFAULT_LOWER, DEFAULT_UPPER, &root))

printf("Root:%2.8lf\n", root)

else

printf("Root:No Solution.\n")

}

int getRoot(double lower, double upper, double *result)

{

*result = _MID(lower,upper)

if(upper - lower <= _e)

return 1

if(_VALUE(lower)*_VALUE(*result) <= 0)

return getRoot(lower, *result, result)

else if(_VALUE(*result)*_VALUE(upper) <= 0)

return getRoot(*result, upper, result)

else

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/6927820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-30
下一篇 2023-03-30

发表评论

登录后才能评论

评论列表(0条)

保存