求用C++语言实现cos(α1+α2+α3+……+αn) = 和sin(α1+α2+α3+……+αn) =的分解cos(α+β) = cosαcosβ- sinαsinβ,sin(α+β) = sinαcosβ+ cosαsinβ cos(α+β+γ) = cos(α+(β+γ)) = cosαcos(β+γ) - sinαsin(β+γ) =cosαcosβcosγ-c
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 16:23:42
![求用C++语言实现cos(α1+α2+α3+……+αn) = 和sin(α1+α2+α3+……+αn) =的分解cos(α+β) = cosαcosβ- sinαsinβ,sin(α+β) = sinαcosβ+ cosαsinβ cos(α+β+γ) = cos(α+(β+γ)) = cosαcos(β+γ) - sinαsin(β+γ) =cosαcosβcosγ-c](/uploads/image/z/8702546-50-6.jpg?t=%E6%B1%82%E7%94%A8C%2B%2B%E8%AF%AD%E8%A8%80%E5%AE%9E%E7%8E%B0cos%28%CE%B11%2B%CE%B12%2B%CE%B13%2B%E2%80%A6%E2%80%A6%2B%CE%B1n%29+%3D+%E5%92%8Csin%28%CE%B11%2B%CE%B12%2B%CE%B13%2B%E2%80%A6%E2%80%A6%2B%CE%B1n%29+%3D%E7%9A%84%E5%88%86%E8%A7%A3cos%28%CE%B1%2B%CE%B2%29+%3D+cos%CE%B1cos%CE%B2-+sin%CE%B1sin%CE%B2%2Csin%28%CE%B1%2B%CE%B2%29+%3D+sin%CE%B1cos%CE%B2%2B+cos%CE%B1sin%CE%B2+cos%28%CE%B1%2B%CE%B2%2B%CE%B3%29+%3D+cos%28%CE%B1%2B%28%CE%B2%2B%CE%B3%29%29+%3D+cos%CE%B1cos%28%CE%B2%2B%CE%B3%29+-+sin%CE%B1sin%28%CE%B2%2B%CE%B3%29+%3Dcos%CE%B1cos%CE%B2cos%CE%B3-c)
求用C++语言实现cos(α1+α2+α3+……+αn) = 和sin(α1+α2+α3+……+αn) =的分解cos(α+β) = cosαcosβ- sinαsinβ,sin(α+β) = sinαcosβ+ cosαsinβ cos(α+β+γ) = cos(α+(β+γ)) = cosαcos(β+γ) - sinαsin(β+γ) =cosαcosβcosγ-c
求用C++语言实现cos(α1+α2+α3+……+αn) = 和sin(α1+α2+α3+……+αn) =的分解
cos(α+β) = cosαcosβ- sinαsinβ,sin(α+β) = sinαcosβ+ cosαsinβ
cos(α+β+γ) = cos(α+(β+γ)) = cosαcos(β+γ) - sinαsin(β+γ) =cosαcosβcosγ-cosαsinβsinγ- sinαsinβcosγ- sinαcosβsinγ,
sin(α+β+γ) = sin(α+(β+γ)) = sinαcos(β+γ) + cosαsin(β+γ) =sinαcosβcosγ-sinαsinβsinγ+ cosαsinβcosγ+ cosαcosβsinγ
求用C++语言实现cos(α1+α2+α3+……+αn) = 和sin(α1+α2+α3+……+αn) =的分解cos(α+β) = cosαcosβ- sinαsinβ,sin(α+β) = sinαcosβ+ cosαsinβ cos(α+β+γ) = cos(α+(β+γ)) = cosαcos(β+γ) - sinαsin(β+γ) =cosαcosβcosγ-c
#include
#include
#include
using namespace std;
#define SIN_FN 1
#define COS_FN 2
class Expression
{
public:
Expression();
Expression(int fn,const string* args,int n_args);
void varVecToString(string& out);
void varComboToString(string& out);
void toString(string& out,bool omit_positive_sign);
Expression* calculate();
public:
bool is_positive;
struct Var
{
int fn;
string name;
};
vector var_vec;
int combo_fn;
vector var_combo;
Expression* prev;
Expression* next;
protected:
void varToString(int i,string& output);
};
static string* s_sin_prefix = NULL;
static string* s_cos_prefix = NULL;
int main()
{
s_sin_prefix = new string("sin");
s_cos_prefix = new string("cos");
string str;
int fn;
int n_args;
string* args = NULL;
// read the function
retry_fn:
coutprev = this;
new_exp->next = next;
next = new_exp;
new_exp->is_positive = is_positive;
new_exp->var_vec = var_vec;
new_exp->var_combo = var_combo;
if (combo_fn == SIN_FN)
{
var.fn = COS_FN;
var.name = var_combo[0];
new_exp->var_vec.push_back(var);
new_exp->combo_fn = SIN_FN;
new_exp->var_combo.erase(new_exp->var_combo.begin());
combo_fn = COS_FN;
var_combo.erase(var_combo.begin());
var.fn = SIN_FN;
var_vec.push_back(var);
}
else
{
new_exp->is_positive = !(new_exp->is_positive);
var.fn = SIN_FN;
var.name = var_combo[0];
new_exp->var_vec.push_back(var);
new_exp->combo_fn = SIN_FN;
new_exp->var_combo.erase(new_exp->var_combo.begin());
combo_fn = COS_FN;
var_combo.erase(var_combo.begin());
var.fn = COS_FN;
var_vec.push_back(var);
}
return new_exp;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// 我用GCC编译的,你试试你的编译器能不能通过,另外自己根据需要改main函数
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////