导航:首页 > 编程语言 > 秦九韶算法c语言程序

秦九韶算法c语言程序

发布时间:2023-01-19 20:00:07

⑴ 编程实现:用秦九韶算法求多项式p(x)=3x^5-2x^3+x+7在x=3处的值

p(x)=3x^5+0x^4-2x^3+0x^2+x+7
=(3x^4+0x^3-2x^2+0x+1)x+7
=((3x^3+0x^2-2x+0)x+1)x+7
=(((3x^2+0x-2)x+0)x+1)x+7
=((((3x+0)x-2)x+0)x+1)x+7
v[1]=3x+0=9
v[2]=v[1]x-2=25
v[3]=v[2]x+0=75
v[4]=v[3]x+1=226
v[5]=v[4]x+7=685
如果你还有什么不懂的,可以网络搜下:编程回忆录,他们现在正在录制这方面的教程,都是零基础开始,由浅入深。

⑵ 用C语言编程实现秦九韶

/*修改n,n代表f(x)为n次多项式*/
#define n 5/*暂且版设定为5*/
#include<stdio.h>
void main()
{
float a[n],x,sum;
int i;
printf("Please input the value of x=");
scanf("%f",&x);
for(i=n;i>=0;i--)
{
printf("Please input the value of a%d=",i);
scanf("%f",&a[i]);
}
sum=a[n];
for(i=n;i>=1;i--)
{
sum=sum*x+a[i-1];
}
printf("f(x)=%f\n",sum);
}
/*互相学习哈权*/

⑶ c++ 秦九韶算法计算多项式急求解,补悬赏~


#include<iterator>
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
#include<utility>
#include<exception>

template<typenameValueType=longlong>
classPolyEval{
public:
typedefValueTypetype;
typedefstd::vector<type>PolyType;
protected:
PolyTypepolys;
intpolySize=0;
public:

~PolyEval(){}
PolyEval(){}

template<typenameU>
decltype(auto)eval(U&&u)const{
typedefdecltype(type(0)+u)EvalType;
if(polys.empty()){throwstd::exception("empty");}

EvalTypeans=0;
constEvalTypex=u;

if(polys.size()==1){returnEvalType(polys[0]);}

autob=polys.crbegin();
autoe=polys.crend();
for(;b!=e;++b){
ans*=x;
ans+=*b;
}

returnans;
}

friendstd::istream&operator>>(std::istream&i,PolyEval&t){
t.polys.clear();
{
std::stringline;
std::getline(i,line);
std::stringstreamss(std::move(line));
ss>>t.polySize;
if(t.polySize<=0){
i.setstate(i.badbit);
returni;
}
{t.polys.assign(t.polySize,0);}
}

{
intcount_=1;
std::pair<type,int>item;
std::stringline;
while(std::getline(i,line)){
std::stringstreamss(std::move(line));
ss>>item.first;
ss>>item.second;
if(item.second<0||item.second>=t.polySize){
t.polys.clear();
returni;
}
t.polys[item.second]=item.first;
if(count_<t.polySize){
++count_;
}
else{
break;
}

}
}

returni;
}
};

intmain(int,char**){
std::vector<int>s;

doublex=0;

PolyEval<double>pe;
std::cin>>pe;
std::cout<<std::endl;
std::cin>>x;
autoans=pe.eval(x);
std::cout<<ans<<std::endl;

#ifdef_MSC_VER
system("pause");
#endif//_MSC_VER

return0;

}

⑷ 求用秦九韶算法求多项式的程序

秦九韶算法

1.教学任务分析

(1)在学习中国古代数学中的算法案例的同(2)时,进一步体会算法的特点。(3)体会中国古代数学对世界数学发展的贡献。

2. 重点与难点重点:理解秦九韶算法的思想。难点:用循环结构表示算法步骤。

3.教学情境设计 (1) 设计求多项式f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值的算法,并写出程序。

学生提出一般的解决方案,如:

x=5 f=2 * x^5 – 5 * x^4 – 4 * x^3 + 3 * x^2 – 6 * x + 7

PRINT“f=”;fEND

教师点评:上述算法一共做了解15次乘法运算,5次加法运算,优点是简单,易懂。缺点是不通用,不能解决任意多项式的求值问题,而且计算效率不高。

(2)有没有更高效的算法?

师:计算x的幂时,可以利用前面的计算结果,以减少计算量,即先计算x2,然后依次计算x2.x,(x2.x).x, ((x2.x).x).x的值,这样计算上述多项式的值,一共需要多少次乘法,多少次加法?

第二种做法与第一种做法相比,乘法的运算次数减少了,因而能提高运算效率,而且对于计算机来说,做一次乘法所需的运算时间比做一次加法要长得多,因此第二种做法更快地得到结果。

(3)能否探索更好的算法,解决任意多项式的求值问题?

教师引导学生把多项式变形为:f(x)= 2x5-5x4-4x3+3x2-6x+7

=((((2x-5)x-4)x+3)x-6)x+7

并提问:从内到外,如果把每一个括号都看成一个常数,那么变形后的式子中有哪些“一次式”?x的系数依次是什么?

(4)若将x的值代入变形后的式子中,那么求值的计算过程是怎样的?

师:计算的过程可以列表表示为:

多项式x系数

2

-5

-4

3

-6

7

运算

10

25

105

540

2670

+

变形后x的"系数"

2

5

21

108

534

2677

*5

最后的系数2677即为所求的值,让学生描述上述计算过程

师:指出这种算法就是“秦九韶算法”,同时介绍秦九韶的生平。

(5)用秦九韶算法求多项式的值,与多项式的组成有直接关系吗?用秦九韶算法计算上述多项式的值,需要多少次乘法运算和多少次加法运算?教师引导学生发现在求值的过程中,计算只与多项式的系数有关,让学生统计所进行的乘法和加法运算的次数。(6) 秦九韶算法适用一般的多项式f(x)=anxn+an-1xn-1+….+a1x+a0的求值问题吗?

师:怎样用秦九韶算法求一般多项式f(x)= anxn+an-1xn-1+….+a1x+a0当x=x0时的值?

教师引导学生思考,把n次多项式的求值问题转化成求n个一次多项式的值的问题,即求v1=anx+an-1

v2=v1x+an-2 v3=v2x+an-3 …….. vn=vn-1x+a0

的值的过程,共做了多少次乘法运算,多少次加法运算?

(7)怎样用程序框图表示秦九韶算法

观察秦九韶算法的数学模型,计算vk时要用到vk-1的值,若令v0=an,我们可以得到下面的递推公式:

v0=an vk=vk-1+an-k(k=1,2,…n)

这是一个在秦九韶算法中反复执行的步骤,可以用循环结构来实现。

(8)小结:通过对秦九韶算法的学习,你对算法本身有哪些进一步的认识?

教师引导学生思考、讨论、概括,小结时要关注如下几点:(1)算法具有通用的特点,可以解决一类问题;(2)解决同一类问题,可以有不同的算法,但计算的效率是不同的,应该选择高效的算法;(3)算法的种类虽多,但三种逻辑结构可以有效地表达各种算法;等等。

(9)课后作业:习题1.3A组第2题。

⑸ 求C语言的解答

把一个n次多项式f(x) = a(n)×x^n + a(n – 1)x^n – 1 + …… + a(1)x + a(0),分拆成n个一次多项式:v(1) = a(n)x + a(n – 1)、v(2) = v(1)x + a(n – 2)、v(3) = v(2)x + a(n – 3)……v(n) = v(n – 1)x + a(0),这种算法叫做秦九韶算法。

float Polynomial(int n, int a[], float x0);
float y=a[n-1];
for(int i=n-1;i>=1;--i){
y=y*x0+a[i-1];
}
return y;
}

⑹ 用C++实现秦九韶算法~怎么搞的~

干吗用二重循环阿,根本没有你写的复杂阿?

看:

int P(int x,int n){
int a[5]={1,2,2,2,1};
int y=a[n];
for(int i=n;i>=1;--i){
y=y*x+a[i-1];
}
return y;
}

v(1) = a(n)x + a(n – 1)、v(2) = v(1)x + a(n – 2)、v(3) = v(2)x + a(n – 3)…回…v(n) = v(n – 1)x + a(0),
直接按公式写,答很简单 阿?

阅读全文

与秦九韶算法c语言程序相关的资料

热点内容
word如何绘制饼状图 浏览:172
w7系统搜索文件夹 浏览:618
java线程变量 浏览:854
苹果电脑word是只读文件 浏览:691
ps5国行备份文件大小 浏览:754
linux恢复删除文件命令 浏览:805
win10家庭版打不开qq文件 浏览:794
女生来例假有哪个app比较好 浏览:66
调用后台接口为什么不显示数据 浏览:363
js判断重复 浏览:422
联通如何切换到网络电视 浏览:191
学编程的优势哪里靠谱 浏览:939
沟通文件 浏览:267
水准测量平差程序 浏览:78
cf如何解决网络误封 浏览:952
折叠式文件夹是什么意思 浏览:796
js弹窗登录注册 浏览:563
怎么把游戏数据备份到另一个手机 浏览:361
微信封杀抢红包神器破解教程 浏览:536
带货数据什么时候更新 浏览:500

友情链接