魏尔斯特拉斯函数与分形图形的动画演示


一般人会直觉上认为连续的函数必然是近乎可导的。即使不可导,所谓不可导的点也必然只占整体的一小部分。根据魏尔斯特拉斯在他的论文中所描述,早期的许多数学家,包括高斯,都曾经假定连续函数不可导的部分是有限可数的。这可能是因为直观上想象一个连续但在不可数个点上不可导的函数是很困难的事。当我们绘制函数的图像时,总会画出较为规则的图形,例如满足利普希茨条件的函数图像。

在数学中, 魏尔斯特拉斯函数(Weierstrass function)是一类处处连续而处处不可导函数。魏尔斯特拉斯函数是一种无法用笔画出任何一部分的函数,因为每一点的导数都不存在,画的人无法知道每一点该朝哪个方向画。魏尔斯特拉斯函数的每一点的斜率也是不存在的。魏尔斯特拉斯函数得名于十九世纪的德国数学家卡尔·魏尔斯特拉斯。

其图像如下 :

在高中阶段,我们在数列一章做题中会遇到koch curve(雪花曲线)的题:

而雪花曲线其实就是分形!处处连续又处处是小尖~

H-fractal:

Sierpinski triangle:

Vicsek fractal:

Lévy C curve:

Dragon curve:

Pythagoras tree:

Hexaflake:


在MATLAB中实现Low魏尔斯特拉斯核(LWR,也称为局部加权回归或Locally Weighted Regression)模型,通常用于非线性数据拟合,其步骤可以分为以下几个: 1. **导入数据**: 首先,你需要导入包含自变量(x)和因变量(y)的数据集。可以使用`readtable`或`csvread`等函数。 ```matlab data = readtable('your_data.csv'); X = data(:, 'x'); % 自变量矩阵 Y = data(:, 'y'); % 因变量向量 ``` 2. **选择核函数**: LWR使用的是核函数来衡量点之间的相似度。常见的核有线性、多项式、径向基函数(RBF)等。在MATLAB中,RBF是最常用的,可以使用`kernel_function`来设置。 ```matlab % RBF核的例子 sigma = 0.5; % 核函数带宽 kernel_matrix = exp(-(X.' - X).^2 / (2 * sigma^2)); % 计算核矩阵 ``` 3. **权重计算**: 根据核函数值,计算每个样本对当前预测点的权重。通常使用高斯权重,权重越高,表示该点对预测的影响越大。 ```matlab weights = kernel_matrix ./ sum(kernel_matrix, 2); % 归一化 ``` 4. **拟合模型**: 使用加权最小二乘法找到最优的模型参数。MATLAB中的`fitrlinear`函数可以处理这个任务,但是LWR需要自定义优化过程。 ```matlab % 自定义函数求解参数 params = zeros(size(X, 2), 1); % 初始化参数 for i = 1:size(Y, 1) % 对每个训练点求局部拟合 local_params = optimize_weights(params, X(i,:), Y(i), weights); params = params + weights(i,:) * local_params; end params = params / sum(weights); % 求平均得到全局参数 ``` 5. **预测评估**: 使用求得的参数对新的输入进行预测,并通过相关指标(如均方误差)评估模型性能。 ```matlab new_x = ...; % 新的自变量向量 prediction = predict(params, new_x); % 预测值 mse = mean((Y - prediction).^2); % 计算MSE ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值