求乙個用c語言編寫的求導的程式

2023-01-30 22:25:04 字數 4427 閱讀 5516

1樓:c__生活

呵呵 求導函式 。。

c語言裡有常用的函式比較簡單,對於單一專案簡單函式直接套用數學公式就可以了。

而多項式函式就比較麻煩了 ,,還有復合函式本身求導過程就複雜。

如果你要實現任意形式的函式求導的話,必須完成正則表達函式提取出單項式,如有單項復合的情況下還要一一拆解,,直到能用數學公式求導的最基本函式才行!

還可以用同樣的方法完成定積分的計算。

實現王能推導函式的過程需要多個演算法的有機結合才行。。

就3步:一:運用正規表示式演算法把函式的每一項抽取出來,對應簡單多項情況二:運用正規表示式演算法把函式的每一項子項抽取出來,並建立父子關係,,對於復合函式。

三:用數學公式求導。

用程式最難實現的就是前兩相。

2樓:小小劉加成

是符號函式,不是數值的。

3樓:匿名使用者

請問導什麼呢 數學不太好。

求乙個用c語言編寫的對函式f(x)=sinx進行求導的程式 20

4樓:匿名使用者

//只能求解制定點的導數。

#include

#include

double dy_dx(double x,double dx)int main()

5樓:c__生活

你是說求這個函式的導數還是這個函式的c語言實現過程?

用c語言如何編寫函式的求導

6樓:匿名使用者

求導數有兩種,一種是表示式求導,一種是數值求導。

表示式求導:需要對表示式進行詞法分析,然後用常見的求導公式進行演算,求得導函式。在這方面,數學軟體matrix,maple做得非常好。如果自己用c進行程式設計,不建議。

數值求導:利用導數的定義,用差分計算,當自變數趨於0時,前後兩次差分收斂到需要精度,計算結束。這種方法可以求得某一點的導數。

例如:求一階導數,原函式 y = f(x), 程式中是float f(float x)

dx=; 設 dx 初值。

dowhile (fabs(dd1-dd2) >1e-06) /判斷新舊導數值之差是否滿足精度,滿足則得結果,不滿足則返回。

7樓:戈壁與清潭

將先用演算法將 f(x)拆分成最基本的求導函式 f(x)=f1(x)+f2(x)+.

然後使用最基本的函式求導公式求。

這種程式比較麻煩,呵呵。

c語言怎麼編求導

8樓:小夏在深圳

編求導的源**如下:

#include <

#include <

void main()

int n;

int i;

int *p;

printf("請輸入最大值的次數");

scanf("%d",&n);

p=(int *)malloc(sizeof(int)*n);

printf("請依次輸入多項式的係數");

for(i=0;iscanf("%d",p+i);

for(i=0;i

9樓:天方夜譚的哆啦a夢

//多項式求導數。

for(iter=;iter!=;iter)

if((*iter).ex>1)

(*iter).coef=((iter).coef)*(iter).ex);

(*iter).ex=(*iter).ex-1;

elseif(1==(iter).ex)(*iter).ex=0;

elseif(0==(iter).ex)(*iter).coef=0;

returnret_ok;

其中,多項式的定義是list,如下:

//多項式節點結構體定義。

typedefstructstupolynomnodedoublecoef;

intex;

}nodepoly;

10樓:問明

#include

#include

void qiudao(float *a,int n) /求導的各個係數的值,s為求導的次數。

int i;

n--;for(i=0;i<=n;i++)

a[i]=a[i+1]*(i+1);

void display_daoshu(float *a,int n,int s) /顯示s次求導後的函式。

//當係數為0時,不操作if(*(a+i)==1)

elseif(*(a+i)==1)//當係數為1時,顯示格式為「x^次數+」

if(i==0||i==1)

if(i==0)

printf("%g+",a+i));當次數為0時,顯示格式為「係數+」

if(i==1)

printf("%g*x+",a+i));當次數為1時,顯示格式為「係數*x+」

elseprintf("x^%d+",i);

elseif(i==0||i==1)

if(i==0)

printf("%g+",a+i));當次數為0時,顯示格式為「係數+」

if(i==1)

printf("%g*x+",a+i));當次數為1時,顯示格式為「係數*x+」

elseprintf("%g*x^%d+",a+i),i); 當次數不為0或1是,顯示格式為「係數*x^次數+」

printf("\b\t\t");去掉多餘的「+」符號,int main()

double x=,y; /y=x-f(x)/f'(x)

int n,i; /次數最大的值。

int s=0;//求導次數。

float a[100];

system("color 0c");

printf("請輸入最大次數的值:")

scanf("%d",&n);

for(i=0;i<=n;i++)

printf("請輸入次數為%d的係數:",i);

scanf("%f",a+i);

printf("\t\t原函式為/")

display_daoshu(a,n,s);

printf(""

printf("請輸入求導的次數s:")

scanf("%d",&s);

for(i=0;iqiudao(a,n,s);

--n;printf("\t\t");

display_daoshu(a,n,s);

return 0;

舉例輸出:

11樓:tx艾弗森

float f(float x,float y)你定義的時候是浮點型,而且你之後的確有小數,所以你後面 long double 應該改成float,還有printf("%d",dd2);把%d改成%f

12樓:網友

你定義的f的兩個引數是float型,在main函式中f的引數又變成long double型了,明顯不對。

13樓:匿名使用者

if (fabs(dd1-dd2)printf("%lf",dd2);/dd2為實型double,要使用lf格式輸出。

14樓:匿名使用者

#include

#include

//此處函式定義的時候 返回值和引數型別都是float,最好改為double,與主程式相對應。

float f(float x,float y)void main(),則不需要變數y

dy=f(x0,y)-f(x0+dx,y);

dd1=dy/dx;

loop: dx=;

dy=f(x0,y)-f(x0+dx,y);

dd2=dy/dx;

if (fabs(dd1-dd2)//如果想列印整數,則需要將dd2先強制性轉換成int型,即 printf("%d", int)dd2 );

else }

如何用c語言編寫乙個求任意初等函式的復合函式的一階導數的程式

如何用c語言求函式導數 10

15樓:小兆

導數,就是微分,也就是在x點曲線的切線的斜率,還等於在x點附近兩個點的連線的斜率,當這兩個點無限接近。

就用兩個很接近的x值代入原函式,求解出兩個函式值,然後求這兩個點的斜率。

如何用c語言編寫求任意初等函式的復合函式的一階導數的程式

求乙個用c語言編寫的程式!!!要解決實際的問題!!!!!

怎樣用c語言實現對方程求導

用C語言編寫程式,用C語言編寫三個程式

第一題 include include include include void fun char str,char c intmain void fun char str,char c 第三題 include include define n 4 typedef structshu intmain...

用c語言編寫12320?的程式,用C語言編寫1!2!3!20!?的程式

include int fun int int main printf d n sum 輸出算式結果return 0 int fun int i 階乘函式 採用函式遞迴呼叫return 1 include void main printf d n sum include include long l...

c語言編寫通訊錄管理系統,用C語言編寫乙個通訊錄管理系統

是否可以用c 寫呢 c語言,編寫乙個簡單的通訊錄管理系統?實現乙個通訊錄管理系統 通訊錄管理系統可以用來儲存1000個人的資訊,每個人的資訊包括 姓名 性別 年齡 住址 提供方法 1.新增聯絡人資訊 2.刪除指定聯絡人資訊 3.查詢指定聯絡人資訊 4.修改指定聯絡人資訊 5.顯示所有聯絡人資訊 6....