数值计算生活中的实际应用附代码
时间: 2023-08-14 12:04:41 浏览: 66
数值计算在生活中有很多实际应用,比如金融计算、图像处理、信号处理等等。以下是一些实际应用及其对应的Matlab代码示例:
1. 金融计算
计算股票的期权价格是金融计算中的一个重要问题。可以使用Black-Scholes模型来计算期权价格。以下是一个使用Matlab计算期权价格的示例代码:
```
% 计算期权价格
S = 100; % 股票价格
K = 95; % 行权价格
r = 0.05; % 无风险利率
T = 1; % 到期时间
sigma = 0.2; % 波动率
d1 = (log(S/K) + (r + sigma^2/2)*T) / (sigma*sqrt(T));
d2 = d1 - sigma*sqrt(T);
N = @(x) normcdf(x,0,1);
call_price = S*N(d1) - K*exp(-r*T)*N(d2)
put_price = K*exp(-r*T)*N(-d2) - S*N(-d1)
```
2. 图像处理
图像处理中经常需要对图像进行平滑处理。可以使用高斯滤波器来实现图像平滑。以下是一个使用Matlab实现高斯滤波器的示例代码:
```
% 高斯滤波器
img = imread('lena.jpg');
sigma = 5;
size = 2*ceil(3*sigma)+1;
h = fspecial('gaussian', size, sigma);
img2 = imfilter(img, h, 'replicate');
imshowpair(img, img2, 'montage');
```
3. 信号处理
信号处理中经常需要对信号进行滤波处理。可以使用巴特沃斯滤波器来实现信号滤波。以下是一个使用Matlab实现巴特沃斯滤波器的示例代码:
```
% 巴特沃斯滤波器
fs = 1000; % 采样频率
f1 = 60; % 带通频率1
f2 = 100; % 带通频率2
w1 = f1/(fs/2);
w2 = f2/(fs/2);
[n, wn] = buttord([w1,w2], [w1-0.1,w2+0.1], 3, 60);
[b,a] = butter(n, wn, 'bandpass');
t = 0:1/fs:1-1/fs;
x = sin(2*pi*50*t) + sin(2*pi*70*t) + randn(size(t));
y = filter(b,a,x);
subplot(2,1,1);
plot(t,x);
title('原始信号');
subplot(2,1,2);
plot(t,y);
title('滤波后信号');
```
以上代码仅为示例,实际应用时需要根据具体情况进行修改。