MATLAB实现连带勒让德多项式的绘制
MATLAB实现连带勒让德
- 前言
- 连带勒让德多项式
- 说明
前言
突然想起来很久没有撰写博客了,今天恰好有点空闲的时间,补一篇博客,也是我之前在部分科研的时候撰写的,主要是实现连带勒让德多项式的,MATLAB里面其实有自带的连带勒让德多项式的函数,但是有点局限,不适合我们直接使用,所以我这里直接自己编写了一个,顺便记录一下自己在美化图线的一些操作
连带勒让德多项式
关于连带勒让德多项式的表达式,我这里就不想再去撰写了,感觉没有必要,大家随便找一下都能找到,而且说的比我详细,要是我自己现在写在博客里面,我估计还会偷懒。但是我需要强调的是,代码编写使用的多项式的表达式是使用微分表达式。话不多说,直接怼代码
% 函数基本说明:
% n: 表示勒让德多项式的阶数
% m: 表示勒让德多项式的级数
clear
close all%% =========================开始计算================================================================
% 计算的范围式0-pi/2
Theta = linspace(0,pi/2,50);
P1 = Legendreowncode(4,1,Theta);
P2 = Legendreowncode(2,1,Theta);
P3 = Legendreowncode(3,0,Theta);figure('name','勒让德多项式的计算');
h = plot(Theta,P1,Theta,P2,Theta,P3);
legend('\itn=\rm4, \itm=\rm1','\itn=\rm2, \itm=\rm1','\itn=\rm3, \itm=\rm0');
% 修改线形
h(1).Color = 'r'; %这里说明修改的颜色蓝色,可以使用RGB三原色
h(2).Color = '0 0.4470 0.7410';
h(3).Color = '0.4940 0.1840 0.5560';
h(1).LineWidth = 1.2;
h(2).LineWidth = 1.2;
h(3).LineWidth = 1.2;
h(1).Marker = '^';
h(2).Marker = '*';
h(3).Marker = 'o';
h(1).MarkerSize = 0.8;
h(3).MarkerSize = 3.5;ax = gca; %获得坐标轴的属性
ax.XLim = [0,pi/2];
ax.YLim = [-3,3];
ax.XTick = 0:pi/2/9:pi/2;
ax.YTick = -3:1:3;
ax.XTickLabel = 0:10:90;
ax.YTickLabel = -3:1:3;
ax.FontSize = 12;
ax.LineWidth = 1.0;
ax.XColor = '0 0 0';
ax.YColor = '0 0 0';
ax.FontName = 'times new roman';
ax.XLabel.String = '\itx';
ax.XLabel.FontSize = 20;
ax.YLabel.String = '\ity';
ax.YLabel.FontSize = 20;
ax.Legend.Box = 'off';
ax.Legend.FontName = 'times new roman';
ax.Legend.Location = 'northwest';
ax.Legend.FontSize = 15;
ax.Color = [1 1 1];
% ax.View = [45 30];
% ax.Grid = 'on';
%% ===================
% 作为一个子函数进行表示
function P = Legendreowncode(n,m,Theta)
syms x y theta
% 计算表达式
% 首先第一步计算勒让德表达式
y = (x^2-1)^n;
Pn(x) = diff(y,x,n)/2^n/factorial(n); %这里是表示勒让德表达式,微分形式if m>=0Pnm(x) = (-1)^abs(m)*(1-x^2)^(abs(m)/2)*diff(Pn(x),x,abs(m)); %这里表示的勒让德表达式dPnm_dx(x) = diff(Pnm(x),x,1);% 注意这里计算的式两个特殊函数,分别式pi和taopai = subs(Pnm(x)/sin(theta),'x',cos(theta));tao = subs(-sin(theta)*dPnm_dx(x),'x',cos(theta));
elsePnm(x) = (-1)^(abs(m))*factorial(n-abs(m))/factorial(n+abs(m))*(-1)^abs(m)*(1-x^2)^(abs(m)/2)*diff(Pn(x),x,abs(m));dPnm_dx(x) = diff(Pnm(x),x,1);pai = subs(Pnm(x)/sin(theta),'x',cos(theta));tao = subs(-sin(theta)*dPnm_dx(x),'x',cos(theta));
end
%===========第二次优化======================= =
% Theta = linspace(0,pi/2,100); %这里表示的是仰角%===========第三次优化算法====================%
% 首先把符号算式更改为句柄算式
% Pai = matlabFunction(pai);
% Tao = matlabFunction(tao);
Legendre = matlabFunction(Pnm(x)); %这里表示的是勒让德多项式的计算方式P = Legendre(cos(Theta));
end
说明
代码块的说明感觉没有什么特别需要说的,就是前面的美化我这里是用句柄的格式,主要是之前不用句柄,写完代码之后老长老长了,然后换行之后又很丑,所以这里使用句柄的方式惊醒坐标轴的操作。
MATLAB实现连带勒让德多项式的绘制相关推荐
- 【数字信号处理】卷积编程实现 ( Matlab 卷积和多项式乘法 conv 函数 | 使用 matlab 代码求卷积并绘图 )
文章目录 一.Matlab 卷积和多项式乘法 conv 函数 二.使用 matlab 代码求卷积并绘图 一.Matlab 卷积和多项式乘法 conv 函数 Matlab 文档地址 : https:// ...
- 基于MATLAB的全局多项式插值法(趋势面法)与逆距离加权(IDW)法插值与结果分析
基于MATLAB的全局多项式插值法(趋势面法)与逆距离加权(IDW)法插值与结果分析 1 背景知识 2 实际操作部分 2.1 空间数据读取 2.2 异常数据剔除 2.3 验证集筛选 2.4 最小二乘法 ...
- matlab离散型数据求和,MATLAB程序设计教程(6)---MATLAB数据分析与多项式计算
第6章 MATLAB数据分析与多项式计算 6.1 数据统计处理 6.2 数据插值 6.3 曲线拟合 6.4 离散傅立叶变换 6.5 多项式计算 6.1 数据统计处理 6.1.1 最大值和最小值 MAT ...
- 【转】MATLAB的polar函数 极坐标绘制最大半径怎样设置
https://zhidao.baidu.com/question/262590480477498125.html MATLAB的polar函数 极坐标绘制最大半径怎样设置,类似于plot用axis( ...
- plotcylinder matlab,Matlab在任意两点之间绘制三维圆柱
Matlab在任意两点之间绘制三维圆柱 Matlab在任意两点之间绘制三维圆柱 此函数可能存在一些不足,请多多指教! function plotcylinder(u1,u2,color_a,r) L= ...
- matlab 绘制符号函数,DAY8 MATLAB学习笔记—simulink入门、MATLAB符号函数的图形绘制...
如何打开simulink: 启动simulink: 先打开MATLAB软件界面 第一步打开simulink 第二步在command windows输入 simulink然后enter,等待 有很多模块 ...
- MatLab中的多项式拟合(lsqcurvefit函数的非线性曲线拟合)
MatLab中的多项式拟合(lsqcurvefit函数的非线性曲线拟合) lsqcurvefit函数 函数原型 x=lsqcurvefit(fun, x0, xdata, ydata) == 其中的参 ...
- matlab多项式计算题目,MATLAB数据分析与多项式计算-习题答案
<MATLAB数据分析与多项式计算-习题答案>由会员分享,可在线阅读,更多相关<MATLAB数据分析与多项式计算-习题答案(4页珍藏版)>请在人人文库网上搜索. 1.第6章 M ...
- 多项式在matlab中的应用,matlab的应用-多项式函数及多项式拟合
matlab的应用-多项式函数及多项式拟合 Matlab 的应用- 多项式函数及多项式拟合 本节将向大家简要介绍 matlab 在多项式处理方面的应用. 多项式函数主要有: roots 求多项式的根 ...
最新文章
- GPU上的基本线性代数
- linux 创建crontab文件位置,[基础教程]linux系统的crontab计划任务添加和删除
- python的none是什么-python中stream=None什么意思?
- zabbix工作流程(自定义添加监控项目)
- php post 500 ajax,php – Laravel 5:Ajax Post 500(内部服务器错误)
- .NET Core开发日志——WCF Client
- 在硒中按TagName定位元素
- windows c语言 redis,windows上使用VS2012 C++语言调用Redis的解决方案
- split出现得问题
- 治理软件供应链安全要打“团体赛” 共同建立供应链安全体系
- 递归 人理解循环 神理解递归
- [C++]头文件(Header Files)和命名空间(Namespace)
- EF Code First 中使用Jarek Kowalski's Provider的方法1
- R-CNN学习笔记3:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net)
- 解决办法:NVIDIA驱动,Ubuntu16.04 用户登录界面死循环
- 西安集训B层Day1 test 问题 A: 旅行日记
- Android 11 开机动画资源
- 【金九银十】Java微服务面试题,看到你就是赚到
- wp8.1 java_巨硬的内部比较——WP8.1版本与WP10系统对比(以lumia640为例)
- Oracle中的LOB字段解读