到MATLAB中运行一下就清楚了.
2.1
syms x y %定义两个符号变量;
y = dsolve('Dy=1/(1+x^2)-2*y^2','y(0) = 0','x') %解符号微分方程;
dy/dx = 1/(1+x^2) - 2*y^2 ;
y(0) = 0;
这就是程序所求解的数学问题,即一个初值微分方程问题.
y =
x/(1+x^2)
是matlab运行的结果.此即该方程的解.
ezplot(y) %做y = x/(1+x^2) 的函数图像.
pretty(y) %以通常纸面书写形式显示y;
运行结果为:
x
------
2
1 + x
2.2
[x,y]=meshgrid(-8:.5:8);
定义了一个网格;即x-y平面上的自变量范围;x取值为-8到8;离散化后,是每0.5取一点;y与x同.
r=sqrt(x.^2+y.^2)+eps;
中间变量;
eps 表示matlab中绝对值最小的数.这样下面定义z时,就不会出现0做除数的情况了.
z=sin(r)./r;
定义二元函数z=sin(x^2+y^2) / (x^2+y^2);
mesh(x,y, z)
作图;
colormap([1 0 0])
设置颜色.
>> whos
Name Size Bytes Class
r 33x33 8712 double array
x 33x33 8712 double array
y 33x33 8712 double array
z 33x33 8712 double array
各变量的类型与大小显示得很清楚.
当然,这种简单的程序,不运行,也很容易分析.初学者可以自己分析,与运行结果对照,加深理解.
四
设ABCD各生产x1,x2,x3,x4,单位是吨;
目标:y=MIN(100*x1+300*x2+400*x3+75*x4)
约束:x1+5*x2+10*x3+0.5*x4>10000000;
另外,x1,x2,x3,x4,均大于等于0.