计算机语言通论7—数学问题11—matlab

从语言格式到软件工程--从软件工程到语言格式—数学模型与数值计算

作为控制计算机运行的指令集-软件:需要计算机语言描述-表达、需要编译计算机语言的软件平台、需要和操作系统交互的专用指令集-函数、……需要对实际问题软件化的解决方案。

软件的开发难度还来源于实际问题的模型化—行业或专业模型(财务、金融报表与客户……、工程行业-机械或土木、化工或服装……)、数学模型的真实度及其可计算性—代数与数值计算等……

这里粗略聊一点数学问题—数学的抽象-其底层类别为数学应用(应用数学—来自实际问题的样本-案例-实例)。数学表达与实际问题无关,某个数学表达可以被用于方方面面的实际问题。

四则混合运算与具体的科学计算、工程技术领域、学科类别、事务处理、日常生活、社会问题、文学艺术、……等等都有密不可分的关系,但它不是其中的任何一个实例。就是代数表达也不是任何一个实例。这既是抽象。

线性代数及其线性代数方程组可以解决体的科学计算、工程技术领域、学科类别、事务处理、日常生活、社会问题、文学艺术、……等等。

常、偏微分方程(组)可以解决体的科学计算、工程技术领域、学科类别、事务处理、日常生活、社会问题、文学艺术、……等等。只要能将问题抽象转化为常、偏微分方程(组)的模式即可。

……   ……   ……

自然科学—物理学(力学、电学、磁学、热学、光学、声学、量子学、……)中问题-化学(无机物、有机物、分子学、原子学、……)中的问题-生物学中的问题-……连续的、离散的数学表达都可以用数学解决。

工程技术问题—土木、机械、化工、能源、交通、通讯、军事、海洋、航空、轻工纺织、……连续的、离散的数学表达都可以用数学解决。

社会科学—连续的、离散的数学表达都可以用数学解决。……

商贸、金融、物流、票务、……、文学、艺术、影视、新闻、……;

实际问题的数学模型必须了解清楚,各个参数及其使用条件,否则用MATLAB解决问题的实际问题的软件模型会出问题,结果一定不会正确。

基于数学问题的MATLAB辅助

例如:有限元方法

—固体材料(机器、房屋、水坝、路桥、轨道、……)中的强度、刚度、稳定性;流体介质-大气环流等等的应力场、流场、温度场、散度、旋度……;电磁介质与电磁场中的强度、温度、梯度、散度、旋度……;光场-声场-人员分布-城市分布-物流-等等。只要能用偏微分方程描述的问题,都可以用有限单元法求解。无法用偏微分方程描述的问题—属于场论的问题,都可以用有限单元法求解。可以为时不变(稳定)或时变的(不稳定的)微分方程问题。例如:一个简单的应力集中问题—板上的小孔。

在MATLAB中,用文件模式求解

function pdemodel

[pde_fig,ax]=pdeinit;

pdetool('appl_cb',3);

pdetool('snapon','on');

set(ax,'DataAspectRatio',[6.75 3.5 1]);

set(ax,'PlotBoxAspectRatio',[1 1 1]);

set(ax,'XLim',[-1.5 12]);

set(ax,'YLim',[-1 6]);

set(ax,'XTickMode','auto');

set(ax,'YTickMode','auto');

pdetool('gridon','on');

% Geometry description:

pderect([0.000000001 10.14.0999999999999996 0.000000001],'R1');

pdeellip(5,2,0.999999999,0.999999999,...

pderect([-0.000000001 0 43.7999999999999998],'R2');

pderect([-0.000000001 0 00.000000001],'R3');

pdeellip(2.00000001,2.00000001,0.000000001,0.29999999999999999,...

pdeellip(2.5,1.75,0.5,0.25,...

set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','R1-E1+R2+R3-E2-E3')

% Boundary conditions:

pdetool('changemode',0)

pdesetbd(16,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(15,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(14,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(13,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(12,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(11,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(10,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(9,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(8,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(7,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(6,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(5,...

str2mat('00','9000000000','900000','0'),...

str2mat('0','0'))

pdesetbd(4,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(3,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(2,...

str2mat('1','0','0','1'),...

str2mat('0','0'))

pdesetbd(1,...

str2mat('','0','10000','10000'),...

str2mat('0','0'))

% Mesh generation:

setappdata(pde_fig,'Hgrad',1.3);

setappdata(pde_fig,'refinemethod','regular');

pdetool('initmesh')

% PDE coefficients:

pdeseteq(1,...

str2mat('2*((200E2)./(2*(1+(0.3))))+(2*((200E2)./(2*(1+(0.3)))).*(0.3)./(1-(0.3)))','0','(200E2)./(2*(1+(0.3)))','0','(200E2)./(2*(1+(0.3)))','2*((200E2)./(2*(1+(0.3)))).*(0.3)./(1-(0.3))','0','(200E2)./(2*(1+(0.3)))','0','2*((200E2)./(2*(1+(0.3))))+(2*((200E2)./(2*(1+(0.3)))).*(0.3)./(1-(0.3)))'),...

str2mat('0.0','0.0','0.0','0.0'),...

str2mat('0.0','0.0'),...

str2mat('1.0','0','0','1.0'),...

setappdata(pde_fig,'currparam',...

['200E2';...

'0.3  ';...

'0.0  ';...

'0.0  ';...

'1.0  '])

% Solve parameters:

setappdata(pde_fig,'solveparam',...

str2mat('0','1155','10','pdeadworst',...

'0.5','longest','0','1E-4','','fixed','Inf'))

% Plotflags and user data strings:

setappdata(pde_fig,'plotflags',[2 1 11 1 1 1 1 10 1 0 1 1 1 0 1 1 1]);

setappdata(pde_fig,'colstring','');

setappdata(pde_fig,'arrowstring','');

setappdata(pde_fig,'deformstring','');

setappdata(pde_fig,'heightstring','');

% Solve PDE:

pdetool('solve')

其它计算机辅助—计算机语言编写的算法及其可视化表达。

哪一个最可靠、最可信、最接近真实结果。

需要使用者对数学模型—力学模型—物理模型及其参数设定、方程使用条件、实际问题的参数抽象、方程求解条件等等有深刻的理解。只有这样才能仿出真的来。照猫画虎熟练操作不是根本。你给计算机真值,其结果为真。需要数学、自然科学、工程学科的坚实的理论基础。

其代表什么物理或工程含义,每一个参数对应什么物理或工程参数。必须嘛嘛清。否则结果根本不正确—数学问题的最基本原则:唯一性。

在MATLAB应用以前,需要认真的、专业的、规范的、格式化的、形式化的仔细了解实际问题的参数及其关系。计算结果还需要实际现场检验—尤其是关键参数分析。

因此,使用计算机语言或仿真软件-工具,都必须对实际的工程模型、物理模型与数学模型有很深刻的了解与理解。否则就是掩耳盗铃,贻误无穷。

抽象代表的可能性太多!!!!