math-modeling

MATLAB

MATLAB的使用

最近在搞数学建模的事情

建模自然就要用到Matlab了,但是Matlab自带的IDE让我说不出话来,笨重不说,而且非常难看。

竟然有IDE默认主题是白色的,而且颜色还非常难调。我看了一下午的Matlab,眼睛非常难受。

这时,我才想起来,VsCode还有MATLAB的插件。于是装上插件,顿时轻松了不少。图片本来想放的,但是hexo的插入图片的机制实在太麻烦了,以后的文章就不放图了,就放文字和代码。

MATLAB的语法

语法非常简单,甚至比py还简单。甚至都不需要认真去学它的语法,照着相关文档写就行了,贴一段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

clc, clear, close all
x0=[0 3 5 7 9 11 12 13 14 15];
y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6];

x = 0:0.1:15;
%拉格朗日插值
y1 = lagrange(x0,y0,x);
%一阶插值
y2 = interp1(x0,y0,x);
%三次样条插值
y3 = interp1(x0,y0,x,"spline");
%csape返回的是一个函数,fnval用于计算x在pp4的值
pp4 = csape(x0,y0);y4 = fnval(pp4,x);
%进行任意维数的插值
yx5 = griddedInterpolant(x0,y0,"spline")
y5 = yx5(x); %griddedInterp返回的是一个数学函数

[y1',y2',y3',y4',y5']
subplot(1,3,1),plot(x,y1),title("lagrange")
subplot(1,3,2),plot(x,y2),title("分段")
subplot(1,3,3),plot(x,y3),title("cubic interp")

dx = diff(x);dy = diff(y3);

dy_dx = dy ./ dx; dy_dx0 = dy_dx(1)

ytemp = y3(131:151);ymin = min(ytemp);
index = find(y3 == ymin);
xmin = x(index);{xmin,ymin}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

function y = lagrange(x0,y0,x);

n = length(x0);
m = length(x);

for i = 1:m
z = x(i); s = 0.0;

for k = 1:n
p = 1.0;

for j = 1:n
if j ~= k

p = p*(z - x0(j)) / (x0(k) - x0(j));
end
end

s = p * y0(k) + s;
end
y(i) = s;

end

甚至还有和Py大差不差的缩进,而且定义函数都不需要声明返回值。可以说是非常简单易学了。虽然IDE不怎么样,我觉得官方甚至可以直接发布一个不带前端的版本好了。

热传导方程

可能存在错误,后续将会修正,有空会将其转为latex公式显示


math-modeling
https://silenzio111.github.io/2024/07/12/math-modeling/
作者
silenzio
发布于
2024年7月12日
许可协议