c语言里的求微分函数 c语言解常微分方程

c语言怎样用C语言编程来解决数学求“微分1 , 一套皆不能初等函数的微分公式;
2 , 函数和差积商的法则
通过以上两个的明确定义,就可以把一些问题转化成固定的模版上进行计算了 。
用C语言计算微积分?我给一楼加的注释以及修改:
#includestdio.h
#includemath.h
#define ARRAYBOUND 10001
void main()
{
int i = 0;//辅助变量,最常见那种
int n = 0;//将所求定积分函数曲线在x轴方向,平均分成n等分;n越大,结果越精确;不过限于此算法限制nARRAYBOUND,否则溢出.
float x[ARRAYBOUND];//ARRAYBOUND维浮点数组,存放离散的x坐标值
float y[ARRAYBOUND];//ARRAYBOUND维浮点数组,存放每个x坐标对应的函数值;x[i],y[i]满足y[i]=f(x[i]),f是你要求定积分的函数
float x0 = 0.0;//定积分下限
float xn = 0.0;//定积分上限
float h = 0.0;//面积微元宽度
float J = 0.0;//辅助变量
/*f=x^3*///这里说明要求定积分的是函数f(x)=x*x*x;(y等于x的立方,x^3是vb的写法)
// printf("input x0,xn,n:");
printf("请分别输入下限(x0),上限(xn),精度(n):");
scanf("%f",x0);
scanf("%f",xn);
scanf("%d",n);
h=(xn-x0)/n;//将函数图形在x方向平分成n份,h是每个面积微元的宽度
x[0]=x0; //将积分下限赋值给x[0]
for(i=0;i=nnARRAYBOUND;i++)
{
x[i]=x[0]+i*h;//计算n个离散的横坐标值 , 存入x[]数组
y[i]=(float)pow(x[i],3);//计算n个横坐标对应的函数值,存入y[]数组 。在此可以改变要求积分的函数
}
// J=0.0;
for(i=0;in;i++)
{
//J=J+y[i]+y[i+1];
J+=y[i];//将所有纵坐标值代数相加,存入J
}
//J=J*h/2.0;
J=J*h;//所有微元面积一次求解,因为∑h*y[i]=h*∑y[i];
printf("\nn=%d \n所求定积分值是: %f\n",n,J);
}
我将//J=J+y[i]+y[i+1]改为J+=y[i];将//J=J*h/2.0;改为J=J*h只是帮助lz理解
其实,这两种表达在理论上是等价的 , 不过我发现修改后,在n同样大小的情况下,结果的精度有一点点下降,还真不知为什么???
这样的话lz应该能理解了吧,其实一楼的算法还有不少值得改进的地方,希望lz能有所突破?。?
求函数微分使用diff命令
符号运算
diff函数用以演算一函数c语言里的求微分函数的微分项c语言里的求微分函数 , 相关的函数语法有下列4个:
diff(f) 传回f对预设独立变数的一次微分值
diff(f,'t') 传回f对独立变数t的一次微分值
diff(f,n) 传回f对预设独立变数的n次微分值
diff(f,'t',n) 传回f对独立变数t的n次微分值
也即matlab求导命令diff调用格式:
diff(函数) c语言里的求微分函数,求的一阶导数;
diff(函数c语言里的求微分函数,n),求的n阶导数(n是具体整数);
diff(函数 , 变量名) ,  求对的偏导数;
diff(函数,变量名,n),求对的n阶偏导数;
数值微分函数也是用diff,因此这个函数是靠输入的引数决定是以数值或是符号微分,如果引数为向量则执行数值微分,如果引数为符号表示式则执行符号微分 。如果输入一个长度为n的一维向量,则该函数将会返回长度为n-1的向量,向量的值是原向量相邻元素的差,于是可以计算一阶导数的有限差分近似 。
先定义下列三个方程式,接著再演算其微分项:
S1 = '6*x^3-4*x^2+b*x-5';
S2 = 'sin(a)';
S3 = '(1 - t^3)/(1 + t^4)';
diff(S1)
ans=18*x^2-8*x+b
diff(S1,2)
ans= 36*x-8
diff(S1,'b')
ans= x
diff(S2)
ans= cos(a)
diff(S3)
ans=-3*t^2/(1+t^4)-4*(1-t^3)/(1+t^4)^2*t^3
simplify(diff(S3))
ans= t^2*(-3+t^4-4*t)/(1+t^4)^2
运用C语言,龙格库塔求解微分方程组一下微分方程组 , 我加分 function df=ode45_fun(t,xyzuvw) %%注意小写的v和大写的V %常数(请修正) R_0=1; rho_0=1; beta=1; G=6.67 ..
C语言编程求微分,愿意再追加50分.#include stdio.h
main()
{
float x,y,ji_fen,wei_fen;
for(x=0;x2;x=x+0.01)
{
y=x*x;
ji_fen=ji_fen+y*0.01;
wei_fen=(y-(x-0.01)*(x-0.01))/0.01;
printf("x=%fy=%fji_fen=%fwei_fen=%f\n",x,y,ji_fen,wei_fen);
}
}
用C语言实现微积分计算C没有自带的微积分函数,只能靠数值方法来估算值,求不出准确答案 。
【c语言里的求微分函数 c语言解常微分方程】关于c语言里的求微分函数和c语言解常微分方程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读