许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  用deepseek实现翼型CST参数化附代码

用deepseek实现翼型CST参数化附代码

阅读数 6
点赞 0
article_banner


在无人机、螺旋桨、风扇、风力机、透平机械的设计中,翼型优化是一个非常重要的内容。

前一段时间介绍了利用CST方法进行翼型参数化的内容。

《无人机翼型优化设计报告6 --翼型参数化(补充1-CST)》​

但是要想把理论的知识转换为可以工程实现的代码,对于很多人来说要求比较高了。正好最近 deepseek很火,所以就尝试利用deepseek来写翼型CST参数化的代码,效果挺好。这里贴出来给大家看看。

首先提示词,要求deepseek给出CST的理论公式和基础。核对了一下deepseek的输出,没毛病。具体的理论就不贴出来了,可以参考偏头的那个文章。

然后让其基于上述理论输出CST参数化代码,用MATLAB代码来写。输出如下代码:

function [CST_coefficients_upper, CST_coefficients_lower, mse_upper, mse_lower] = CST_parameterization(airfoil_file, N)
% CST_parameterization - 实现翼型CST参数化,分别拟合上下表面
% 输入:
% airfoil_file - 翼型数据文件名(包含路径)
% N - CST参数化的阶数
% 输出:
% CST_coefficients_upper - 上表面CST拟合系数
% CST_coefficients_lower - 下表面CST拟合系数
% mse_upper - 上表面拟合均方误差
% mse_lower - 下表面拟合均方误差
% 读取翼型数据,跳过第一行标题
airfoil_data = readmatrix(airfoil_file, 'NumHeaderLines', 1); % 跳过1行标题
x = airfoil_data(:, 1); % x坐标
y = airfoil_data(:, 2); % y坐标
% 找到前缘点(x最小的点)
[~, leading_edge_index] = min(x);
% 将数据分为上表面和下表面
x_upper = x(1:leading_edge_index); % 上表面x坐标
y_upper = y(1:leading_edge_index); % 上表面y坐标
x_lower = x(leading_edge_index:end); % 下表面x坐标
y_lower = y(leading_edge_index:end); % 下表面y坐标
% 归一化x坐标
x_norm_upper = x_upper / max(x_upper);
x_norm_lower = x_lower / max(x_lower);
% 定义类函数参数
N1 = 0.5; % 前缘形状参数
N2 = 1; % 后缘形状参数
% 构造类函数
C_upper = (x_norm_upper).^N1 .* (1 - x_norm_upper).^N2;
C_lower = (x_norm_lower).^N1 .* (1 - x_norm_lower).^N2;
% 构造形状函数基函数(Bernstein 多项式)
A_upper = zeros(length(x_norm_upper), N+1);
A_lower = zeros(length(x_norm_lower), N+1);
for i = 0:N
A_upper(:, i+1) = nchoosek(N, i) * (x_norm_upper).^i .* (1 - x_norm_upper).^(N - i);
A_lower(:, i+1) = nchoosek(N, i) * (x_norm_lower).^i .* (1 - x_norm_lower).^(N - i);
end
% 使用最小二乘法拟合CST系数
CST_coefficients_upper = (A_upper .* C_upper) \ y_upper;
CST_coefficients_lower = (A_lower .* C_lower) \ y_lower;
% 计算拟合值
y_fit_upper = (A_upper .* C_upper) * CST_coefficients_upper;
y_fit_lower = (A_lower .* C_lower) * CST_coefficients_lower;
% 计算均方误差 (MSE)
mse_upper = mean((y_upper - y_fit_upper).^2);
mse_lower = mean((y_lower - y_fit_lower).^2);
% 输出拟合系数和均方误差
disp('上表面CST拟合系数:');
disp(CST_coefficients_upper);
disp('上表面拟合均方误差 (MSE):');
disp(mse_upper);
disp('下表面CST拟合系数:');
disp(CST_coefficients_lower);
disp('下表面拟合均方误差 (MSE):');
disp(mse_lower);
% 绘制拟合结果
figure;
subplot(2, 1, 1);
plot(x_upper, y_upper, 'b-', 'LineWidth', 2); hold on;
plot(x_lower, y_lower, 'g-', 'LineWidth', 2);
plot(x_upper, y_fit_upper, 'r--', 'LineWidth', 2);
plot(x_lower, y_fit_lower, 'm--', 'LineWidth', 2);
legend('上表面原始数据', '下表面原始数据', '上表面CST拟合', '下表面CST拟合');
xlabel('x');
ylabel('y');
title('CST参数化拟合结果');
grid on;
% 绘制误差随x的变化曲线
subplot(2, 1, 2);
plot(x_upper, y_upper - y_fit_upper, 'b-', 'LineWidth', 2); hold on;
plot(x_lower, y_lower - y_fit_lower, 'g-', 'LineWidth', 2);
legend('上表面拟合误差', '下表面拟合误差');
xlabel('x');
ylabel('误差');
title('拟合误差随x的变化');
grid on;
end
调用方式:
airfoil_file = '你的翼型文件路径所在目录和名称'; % 替换为你的文件路径 N = 5; % CST参数化的阶数 [CST_coefficients_upper, CST_coefficients_lower, mse_upper, mse_lower] = CST_parameterization(airfoil_file, N);

复制到MATLAB中运行了一下,代码一把过,无BUG。对NACA2414翼型进行拟合,运行结果如下:



拟合的效果还挺好,前缘和后缘的误差稍微大一点。deepseek的编程能力确实优秀。

有了这些系数后,就可以基于ISIGHT或者其他优化软件进行后续的翼型优化设计了。

对于创建整个翼型优化过程有困难的读者,可以查看“在Isight平台上进行的基于CST参数化-Xfoil的翼型优化”课程介绍视频;

有需要完整版课程的读者可以私信UP主进行购买。



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空