📄 approachfunc.h
字号:
#pragma once
namespace ApproachFunc
{
enum Method{Taylor,Lagrange,Original};
using namespace System;
class AF
{
public:
static double AF::AF_func(double x ,Method m,int nOrder)
{
switch(m)
{
case Taylor:
{
int nFrame=5;
int nA=x*nFrame/(2*Math::PI);
double pi=Math::PI;
double dA=(nA*2*Math::PI/nFrame);
double sum=Math::Sin(dA);
for(int i=1;i<nOrder;i++)
{
double p=1;
for(int j=1;j<i+1;j++)p=p*j;
double main;
switch(i%4)
{
case 1:
main=Math::Cos(dA)*Math::Pow(x-dA,i)/p;
break;
case 2:
main=-Math::Sin(dA)*Math::Pow(x-dA,i)/p;
break;
case 3:
main=-Math::Cos(dA)*Math::Pow(x-dA,i)/p;
break;
case 0:
main=Math::Sin(dA)*Math::Pow(x-dA,i)/p;
break;
}
sum=sum+main;
}
return sum;
}
case Lagrange:
{
//double dOrder=nOrder;
double sum=0;
for(double i=0;i<nOrder;i++)
{
double multiply=Math::Sin((2*Math::PI)/nOrder *i);
for(double j=0;j<nOrder;j++)
{
if(j!=i)
{
double temp1=(x-(2*Math::PI)/nOrder *j);
double temp2=((2*Math::PI)/nOrder *(i-j));
multiply=multiply*temp1/temp2;
}
}
sum=sum+multiply;
}
return sum;
}
case Original:
default:
return Math::Sin(x);
}
}
};
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -