微積分的計算程式 — 改良函數指標板

微積分

簡介

函數

極限

微分

積分

微分與積分

公理化

無窮級數

泰勒展開式

傅立葉級數

拉氏轉換

z 轉換

小波轉換

多變量微積分

向量與函數

向量分析

複變函數

偏微分

Jocobian

多重積分

微分方程

偏微分方程

向量場

對偶空間

張量

梯度

線積分

散度

旋度

英文用語

GeoGebra

習題

相關書籍

應用數學

微積分

離散數學

線性代數

機率統計

訊息

相關網站

參考文獻

最新修改

簡體版

English

執行結果

=============== f(x)=x^4 ================
f(x)     at  2.000              = 16.000
df(x)/dx at  2.000              = 32.002
int(f) from  0.000 to  3.000    = 48.596
=============== f(x)=sin(x) ================
f(x)     at  1.047              =  0.866
df(x)/dx at  1.047              =  0.500
int(f) from  0.000 to  3.142    =  2.000
請按任意鍵繼續 . . .

程式:diffInt.c

#include <stdio.h>
#include <math.h>

#define dx 0.0001
#define pi 3.14159

typedef double (*F1)(double);

// f(x) = x^2 ; f'(x) = 2x; 
// f(x) = x   ; f'(x) = 1
// f(x) = x^3 ; f'(x) = 3x^2
// f(x) = x^k ; f'(x) = k x^{k-1}

double power(double x, int k) {
    double result = 1.0;
    int i;
    for (i=1; i<=k; i++) 
        result *= x;
    return result;
}

double p1(double x) {
    return power(x,1);
}

double p4(double x) {
    return power(x,4);
}

double df(F1 f, double x) {
       double dy = f(x+dx)-f(x);
       return dy/dx;
}

double intergal(F1 f, double a, double b) {
       double sum=0.0;
       double x;
       for (x = a; x <=b; x+=dx) {
           sum += f(x)*dx;
       }
       return sum;
}

void showDiffInt(F1 f, char *fname, double x, double a, double b) {
    printf("=============== f(x)=%s ================\n", fname);
    printf("f(x)     at %6.3f          \t= %6.3f\n", x, f(x));
    printf("df(x)/dx at %6.3f          \t= %6.3f \n", x, df(f, x));
    printf("int(f) from %6.3f to %6.3f \t= %6.3f \n", a, b, intergal(f, a, b));
}

int main() {
    F1 f = p4;
    showDiffInt(p4, "x^4", 2, 0, 3);
    showDiffInt(sin, "sin(x)", pi/3, 0, pi);
    system("pause");
}

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License