首页/文章/ 详情

利用deepseek来实现翼型CST参数化(含全部代码)

1月前浏览1142
在无人机、螺旋桨、风扇、风力机、透平机械的设计中,翼型优化是一个非常重要的内容。
前一段时间介绍了利用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(211);    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(212);    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或者其他优化软件进行后续的翼型优化设计了。



来源:无人机工坊uashub
IsightMATLABUGUM理论电机CST无人机
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-03-08
最近编辑:1月前
无人机工坊
硕士 | 飞行器设计工... 气动理论、仿真实操、行业视角
获赞 486粉丝 2399文章 50课程 36
点赞
收藏
作者推荐
未登录
3条评论
渐暖~
签名征集中
26天前
嗯?
回复 4条回复
Albert-Shan
签名征集中
1月前
你好!输入翼型的文件用的是什么格式呀?
回复
渐暖~
签名征集中
1月前
老师,这个有完整课程吗
回复 1条回复
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈