数学建模matlab手记(包含常微分方程)
计算篇
-
计算不定积分
clear;clc syms x y=y(x); int(y,x);%matlab求不定积分不会给结果加常数C
-
计算定积分
int(y,x,1,pi/2);%加上上下限 +inf:正无穷 -inf:负无穷
-
积分有时会出现积不出来的情况,这时使用数值积分
integral(y,0,4)%0,4为上下限,注意要将y写成句柄形式,使用.* ./ .^等
-
求解方程,方程组
- solve函数
syms x answ=solve(sin(x)==1,x)%只有一个未知数,x可以省略 %或者 eqn=sin(x)==1; answ=solve(eqn,x) %周期函数有多个解 [answ,params,conditions]=solve(sin(x)==1,x,'returnconditions',true) answ = pi/2 + 2*pi*k params = k conditions = in(k, 'integer') %answ:解 %params:参数 %conditions:参数的解释 %多变量方程求解 syms a b c x eqn=(a*x^2+b*x^2+c==0); answ=solve(eqn,x)%视x为未知数,视其他为常数 %方程组求解 syms u v a eqn=[2*u+v==a,u-v==1]; answ=solve(eqn,[u,v])&answ为一个向量,answ.u和answ.v是解 %或 [ansu,ansv]=solve(eqn,[u,v]); % solve 函数可能会出现警告
-
vpasolve函数
clear;clc syms x eqn=sin(x)==x^2-1; vpasolve(eqn,x,[0 2])%[0,2]是最后求解的范围 %亦可用 %fplot(sin(x),[-2 2]) %hold on %fplot(x^2-1,[-2 2]) %从图像上找出解
-
ezplot
syms x y f=exp(x)+4*y-2*x*y; g=exp(y)-3*x-2*x*y; ezplot(f,[-10 10]) hold on ezplot(g,[-10 10])
-
fsolve函数
result_x=fsolve(@my_fun,X0)%X0为多元函数初始值
-
求常微分方程解析解
dsolve('方程1','方程2','方程3','...','初始条件','自变量') dsolve('y-Dy=2*x','x')%无初始条件 dsolve('y-Dy=2*x','y(0)=3','x')%有初始条件
-
求常微分方程数值解
% 1. 化成标准形式 % 2. 建立df1.m文件 % function dy=df1(x,y) % dy=y-2*x % end % 3. 使用ode45或ode15s函数进行求解 [x,y]=ode45('df1',[0 2],3) % 即 { y`=y-2*x; y(0)=3;} 的数值解 % 对高阶常微分方程,先把高阶转换为一阶