① 用c语言如何实现微积分运算
积分运算可以参考使用蒙特卡罗方法
② 请问这个微分方程式用c语言怎么写
引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,
struct h int i;int j;;
主要区别:c语句是面向结构的语言,c++是面向对象的语言,C++从根本上已经发生质飞跃,并对c进行丰富的扩展。
③ C语言:常微分方程初值问题的Taylor求解方法
可以用MATLAB中的函数求解
使用Euler法求解,运算程序简单,但是计算结果准确度不高。使用改进的Euler法求解过程相对复杂,但是准确度会更高。准确度最高的是四阶龙格库塔法,求解步骤也是最复杂的。问题(1)使用Euler求解,并与准确解对比。问题(3)使用改进的Euler法求解。问题(4)(I)(IV)使用四届标准龙格库塔法求解。
④ 如何用c语言编写一个微分算法
用的肯定是一个迭代,也就是循环就行了
⑤ 数值分析,C语言实现用改进的欧拉方法求解题微分方程,其中步长取为0.1。急求,在线等。
何为改进的欧拉方法?是Euler-Richardson算法吗?
#include<stdio.h>
#include<conio.h>
#include<math.h>
doubleWeiFen(doublex,doubley){
returny*y*(cos(x)-sin(x))-y;
}
voidEulerRichardson(double&x,double&y,doubledx){
//欧拉理乍得算法进行迭代
doubledy_dx,ymid,xmid,dx_2;
dx_2=dx/2;
dy_dx=WeiFen(x,y);//得到起点的变化率
ymid=y+dy_dx*dx_2;
xmid=x+dx_2;
dy_dx=WeiFen(xmid,ymid);//得到中间点的变化率
y+=dy_dx*dx;
x+=dx;
}
intmain(){
doublex=0,y=1,xm=1.0,dx=0.1;
printf("x y %lg %lg ",x,y);
while(x<xm){
EulerRichardson(x,y,dx);
printf("%lg %lg ",x,y);
}
printf(" Finished! ");
getch();
return0;
}
看看这是不是就你想要的?
⑥ 如何用c语言计算微分,最好能够举例。学习的话,要看什么书
【C语言程序设计教程】{DOS}平台【visualC++程序设计】及【visualC++程序设计基础实验指导】加油!
⑦ 怎样用c语言实现理想微分pid简单的计算机绘图程序
这是C语言的程序用的的积分分离,增量式算法你可以看看~在我用的片子是89C52
/*********************************************************/
/* 名称: float PIDprocess1 */
/* 功能: PID adjust */
/* 说明: */
/* 调用: */
/* 输入: float xdata *Yn, float xdata *Rn */
/* 返回值: deltaPn */
/*********************************************************/
float PIDprocess1()
{
int data E_0;
float data deltaPn,deltaPi,deltaPp,deltaPd,PsumCopy;
E_0=SetTemperature1-CurrentTemperature1;
if(abs(E_0)>Emax)
{
deltaPp=(float)Kp*(E_0-E_11);
deltaPd=(float)Kd*(E_0-2*E_11+E_21);
// if(deltaPd>=dPdmax) deltaPd=0;
deltaPn=deltaPp+deltaPd;
}
else
{
if(abs(E_0)>E0)
{
deltaPi=(float)Ki*E_0*(Emax-abs(E_0))/(Emax-E0);
}
else
{ //小误差时的处理
deltaPi=(float)Ki*E_0;
// if(fabs(deltaPi)<dPimin) deltaPi=0;
}
deltaPp=(float)Kp*(E_0-E_11);
deltaPd=(float)Kd*(E_0-2*E_11+E_21);
// if(deltaPd>=dPdmax) deltaPd=0;
deltaPn=deltaPp+deltaPi+deltaPd;
}
/* if(fabs(deltaPn)>dPmax)
{
if(deltaPn>0) deltaPn=dPmax;
else deltaPn=-dPmax;
} */
Psum1+=deltaPn;
PsumCopy=Psum1;
if(PsumCopy>Pmax) PsumCopy=Pmax;
if(PsumCopy<Pmin) PsumCopy=Pmin;
E_21=E_11;
E_11=E_0;
return(PsumCopy);
}
/*********************************************************/
/* 名称: float PIDprocess2 */
/* 功能: PID adjust */
/* 说明: */
/* 调用: */
/* 输入: float xdata Yn, float xdata Rn */
/* 返回值: Psum2 */
/*********************************************************/
float PIDprocess2()
{
int data E_0;
float data deltaPn,deltaPi,PsumCopy;
E_0=SetTemperature2-CurrentTemperature2;
if(abs(E_0)>Emax)
{
deltaPn=(float)Kp*(E_0-E_12)+(float)Kd*(E_0-2*E_12+E_22);
}
else
{
if(abs(E_0)>E0)
{
deltaPi=(float)Ki*E_0*(Emax-abs(E_0))/(Emax-E0);
}
else
{ //小误差时的处理
deltaPi=(float)Ki*E_0;
}
deltaPn=(float)Kp*(E_0-E_12)+deltaPi+(float)Kd*(E_0-2*E_12+E_22);
}
/* if(fabs(deltaPn)>dPmax)
{
if(deltaPn>0) deltaPn=dPmax;
else deltaPn=-dPmax;
}*/
Psum2+=deltaPn;
PsumCopy=Psum2;
if(PsumCopy>Pmax) PsumCopy=Pmax;
if(PsumCopy<Pmin) PsumCopy=Pmin;
E_22=E_12;
E_12=E_0;
return(PsumCopy);
}
⑧ 用C语言实现微积分计算
C没有自带的微积分函数,只能靠数值方法来估算值,求不出准确答案。
⑨ 导师让我用C++编程求四阶龙格库塔微分方程的解,并画出解的坐标图
这个方程好高级啊Orz...见都没见过...
反正做数学的东西你可能需要一个就math的库...
然后方程你总归能够解出来...
所有的解有平面坐标的点...
也就是说你问的是你有一堆平面坐标的点该如何用C++画出来...
首先你可以考虑下跟导师商量商量能不能用Java来画...
如果可以的话随便摸本Java的书都有教画图的...画点是里面最容易的了...
如果一定要用C++来画的话...有三种办法...
办法1建个MFC的框架(在新建那里能够看到的...)
然后网上去找找如何用C++画点...尽管C++绘图很麻烦但画一堆点还是没啥问题的...
办法2去装个QT(这货是写界面用的你懂的...)然后去找QT如何画点...
QT也有教程的而且画点还是最简单的...
办法3我承认它很馊但是感觉还最方便...
去网上找个openGL的库(就几个文件)
然后再找一本OpenGL的红宝书...最前面就是教如何画点的...
而且类似程序PUDN上肯定有...哪天导师要你花三维的你也不怕/_\
⑩ 用Matlab,Mathematica4.0软件或c语言;绘出微分方程组在相空间中的轨线
你先进MATLAB
然后输入
edit equ.m
然后会出来一个文本编辑窗口。
输入
function dx=equ(t,x)
dx=zeros(2,1);
dx(1)=x(1)-3*x(2);
dx(2)=4*x(1)-6*x(2);
最后再选择保存,并关掉那个文本编辑的窗口,返回命令行
输入
[t,x]=ode45('equ',[0 1000],[0 0.1]);
plot(x(:,1),x(:,2))
相图就出来了。
上面的[0 0.1]是初始的x,y的值,但是你没有给,你如果给的不一样,解可能也会不一样。