導航:首頁 > 編程語言 > 秦九韶演算法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語言程序相關的資料

熱點內容
蘋果皮能用流量嗎 瀏覽:548
電腦寬頻連接共享wifi密碼 瀏覽:655
最新微粒貸app官方下載 瀏覽:923
win10電腦怎麼休眠不斷網 瀏覽:530
如何查到網站的伺服器 瀏覽:225
編程怎麼確定一個數的位數 瀏覽:362
如何安裝ae腳本文件夾 瀏覽:914
商品驗偽用什麼APP查 瀏覽:350
請問大數據與會計專業做什麼的 瀏覽:77
如何修改數據上年結轉 瀏覽:6
win7一直配置文件重啟 瀏覽:124
佳能ir2525i網路掃描 瀏覽:283
win10指紋無法識別 瀏覽:646
jsp中怎麼引入js文件 瀏覽:925
文件名構成部分 瀏覽:484
興國互聯網app有哪些 瀏覽:475
北京時間票房多少票房統計數據 瀏覽:750
探探文件夾是哪個 瀏覽:429
如何分類微信文件 瀏覽:446
城市天際線win10 瀏覽:813

友情鏈接