編程解微積分
辛普森法
#include <stdio.h>
#include <math.h>
#define F(X) (4.0/(1+X*X))
static float EPS = 1.0E-14;
static int COUNT=1;
static double a=0.0, b=1.0;
static double M[32],T[32],S[32],C[32],R[32],E[32];
double GETM(int K)
{ unsigned long j,n=1;
double x=0,y=0,step=0;
for(j=0;j<K;j++) n*=2;
step = (b-a)/n;
x = a+step/2;
for(j=0;j<n;j++){y+=F(x);x+=step;}
return (y*step);
}
Simpson(float EPS)
{ int k=0;
T[0]= (b-a)*(F(a)+F(b))/2.0;
S[0]=T[0];
E[0]=1.0E10;
for(k=0;k<20;k++)
{ M[k] = GETM(k);
T[k+1]=(M[k]+T[k])/2.0;
S[k+1]=(4.0*T[k+1]-T[k])/3.0;
COUNT++;
E[k+1]=fabs(S[k+1]-S[k]);
if(k<3)continue;
if(E[k+1]<EPS)break;
}
return;
}
ShawResult()
{ int k;
system("cls");
printf("\n K M[K] T[K] S[K]");
printf(" E[K]");
printf("\n-------------------------------------------");
printf("-----------------------------------");
for(k=0;k<COUNT;k++)
printf("\n%2d %20.15lf%20.15lf%20.15lf%12.4e",k,M[k],T[k],S[k],E[k]);
printf("\n--------------------------------------------");
printf("-----------------------------------");
getch();
system("cls");
return;
}
SaveResult()
{ int k;
FILE * fp;
fp=fopen("Simpson.htm","w");
if(!fp) return;
fprintf(fp,"<html><head></head>");
fprintf(fp,"<body bgcolor = #006699 text = #FFff00>");
fprintf(fp,"<pre><font size=\"6\">");
fprintf(fp,"\n K M[K] T[K] S[K]");
fprintf(fp," E[K]");
fprintf(fp,"\n----------------------------------------------");
fprintf(fp,"----------------------------------");
for(k=0;k<COUNT;k++)
fprintf(fp,"\n%2d %20.15f%20.15f%20.15f%12.4le",k,M[k],T[k],S[k],E[k]);
fprintf(fp,"\n----------------------------------------------");
fprintf(fp,"----------------------------------");
fprintf(fp,"</pre></font></body>");
fclose(fp);
return;
}
main()
{ Simpson(EPS);
ShawResult();
SaveResult();
}
⑵ C語言如何實現微積分運算
計算微積分有很多數值逼近的演算法,任何可以計算微積分的語言都是用這種方法比如插值多項式,構造數值積分來計算的。只有近似值,沒有準確值。你需要自己編程,編運算方法來計算。具體的lz去參看相關的書籍,比如計算方法
⑶ c語言編程求助- 微積分程序
#include<stdio.h>
#include<math.h>
void main()
{
int i,n;
float x[10001],y[10001];
float x0,xn,h,JiFeng;
/*f=x^3*/
printf("input x0,xn,n:");
scanf("%f",&x0);
scanf("%f",&xn);
scanf("%d",&n);
h=(xn-x0)/n;
x[0]=x0;
for(i=0;i<=n;i++)
{
x[i]=x[0]+i*h;
y[i]=pow(x[i],3);
}
JiFeng=0.0;
for(i=0;i<n;i++)
{
JiFeng=JiFeng+y[i]+y[i+1];
}
JiFeng=JiFeng*h/2.0;
printf("\n");
printf("n=%d JiFeng is %f",n,JiFeng);
}
⑷ 學編程是否要學好微積分
編程與數學的關系密不可分。許多編程高手往往畢業於數據專業而非計算機專業,這充分說明了數學在編程領域的重要性。數學作為基礎學科,對於提升編程能力大有裨益。因此,學習更多的數學知識,將對編程技能的提升起到積極的促進作用。
數學為編程提供了堅實的理論基礎。在軟體設計中,往往需要較高的理論水平,包括計算機科學的系統理論和數據基礎。此外,從事編程工作時,對數據的處理和分析能力是不可或缺的。因此,掌握一定的數學知識,如微積分、線性代數等,對於提高編程水平具有重要意義。
然而,編程作為一種職業技能,並非完全依賴於數學知識。對於一些對數學要求較低的專業領域,如應用編程或游戲開發,編程技能更多地依賴於對編程語言的理解、演算法設計以及代碼實現能力。因此,從事這類工作的開發者可能不需要深入學習微積分等高級數學知識,但仍然需要掌握基礎的數學概念,如邏輯推理、基本數學運算等。
總之,學習數學對提高編程技能大有裨益,尤其是對於需要進行演算法設計、數據處理和復雜系統開發的領域。然而,編程作為一種職業技能,其需求和要求會因具體的工作領域而異。因此,開發者在學習數學知識時,應結合自身的專業領域和職業發展方向,選擇與之匹配的數學知識點進行深入學習,以實現最佳的技能提升效果。