一个关于数学的算法
对于(x-1)*(x-2)........许多这种式子相乘怎么用C++语言表示??例如(x-1)*(x-2)使其输出的是x^2-3*x+2。
有没有办法??
自己拼接 请问楼主求的表示是什么意思呢?是要按照后者的算法进行求解吗?虽然从值的角度两者是一样的,但是前者两次减法一次乘法,后者是两次乘法,一次减法,一次加法,前者的执行更有效率。至于表示的话就看楼主自己心意了。 lizechen 发表于 2017-10-9 23:47
请问楼主求的表示是什么意思呢?是要按照后者的算法进行求解吗?虽然从值的角度两者是一样的,但是前者两次 ...
就是求多项式乘法,在不确定其项数的情况下,求(x-c)的多个式子相乘,然后的到各项的系数及相应的指数
wangheng 发表于 2017-10-10 09:21
就是求多项式乘法,在不确定其项数的情况下,求(x-c)的多个式子相乘,然后的到各项的系数及相应的指数
你是说n个(x-c)的展开式的每项系数怎么求是吗? lizechen 发表于 2017-10-10 11:16
你是说n个(x-c)的展开式的每项系数怎么求是吗?
对,就是这个意思 wangheng 发表于 2017-10-10 15:11
对,就是这个意思
这个其实实现不难,主要是算法,二项式展开式的公式你要知道,然后系数的求法你要知道,之后用C语言实现就可以了,下面是程序代码:
//求二项式展开式的系数
//公式:C(n,r)* C^r
#include<stdio.h>
#include<math.h>
int zuhe(int n, int r);
int jiecheng(int integer);
int main()
{
int c, n, r = 0;//c:常数,可根据需要改成对应的数据类型,n为指数,r为所求项索引
int xishu;//x系数
printf("求(x + c)的n次方的展开式的系数!\n请输入c和n的值(此处应用空格隔开):\n");
scanf("%d %d", &c, &n);
for(r = 0; r < (n + 1); r++)
{
xishu = zuhe(n, r) * pow(c, r);
printf("%d ", xishu);
}
printf("\n");
return 0;
}
int zuhe(int n, int r)//求系数中C(n, r)的值,即组合
{
int zh;
zh = (jiecheng(n) / jiecheng(n-r))/ (jiecheng(r));
return zh;
}
int jiecheng(int integer) //求阶乘的函数
{
int i = 1;
int jc= 1;
while (i <= integer)
{
jc = jc * i;
i++;
}
return jc;
}
wangheng 发表于 2017-10-10 15:11
对,就是这个意思
记得设为最佳答案哦~~~
页:
[1]