當前位置:首頁 » 編程語言 » c語言做微分教程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言做微分教程

發布時間: 2022-04-14 01:11:41

① 用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的值,但是你沒有給,你如果給的不一樣,解可能也會不一樣。