matlab如何编newton-raphson,Matlab中的Newton-Raphson方法
使用Newton-Raphson技术有两件事情不太正确……但肯定可以修复!在我们修复此问题后,您无需提到VPA错误.
错误#1 – 迭代更新
第一个是迭代本身.回想一下Newton-Raphson技术的定义:
对于下一次迭代,您使用上一次迭代的值.你正在做的是使用循环计数器并将其代入你的f(x),这是不正确的.它必须是前一次迭代的值.
错误#2 – 将符号值与数值混合
如果你看看你如何编写函数,你可以象征性地定义函数,但是你试图将数值替换为函数.遗憾的是,这并不适用于MATLAB.如果你真的想要替换值,你必须使用subs.这将替换你的实际值作为x的函数或你的函数使用的任何自变量.执行此操作后,您的值仍然是sym类型.您需要将其转换为double,以便能够以数字方式使用它.
同样为了提高效率,不需要制作数组.只需将此值设置为在每次迭代时更新自身.说到这一切,您的代码将更新为这样.请注意,我在循环之前采用了函数的导数,以减少需要采取的计算量.我还将Newton-Raphson迭代的分子和分母术语分开,以使事情变得清晰,并使其更适合潜艇.无需再费周折:
function r = mynewton(f,a,n)
syms x;
z = f(x);
diffZ = diff(z); %// Edit - Include derivative
y = a; %// Initial root
for idx = 1 : n
numZ = subs(z,x,y); %// Numerator - Substitute f(x) for f(y)
denZ = subs(diffZ,x,y); %// Denominator - Substitute for f'(x) for f'(y)
y = y - double(numZ)/double(denZ); %// Update - Cast to double to get the numerical value
end
r = y; %// Send to output
end
请注意,我在循环中用idx替换了i.原因是因为实际上不建议使用i或j作为循环索引,因为这些字母保留用于表示复数.如果您在Shai之前查看这篇文章,您会发现将这些变量用作循环索引实际上更慢:Using i and j as variables in Matlab
在任何情况下,为了测试它,假设我们的函数是y = sin(x),我的初始根是x0 = 2,有5次迭代,我们这样做:
f = @(x) sin(x);
r = mynewton(f, 2, 5)
r =
3.1416
这与我们对sin(x)的知识一致,因为sin(x)的截距位于pi的整数倍. x0 = 2位于pi附近,所以这确实像我们预期的那样工作.
给你一点奖励
您的原始代码在y中的每次迭代中都存储了根的值.如果你真的想这样做,你将不得不修改你的代码,使它看起来像这样.请记住,我预先分配了y以提高效率:
function r = mynewton(f,a,n)
syms x;
z = f(x);
diffZ = diff(z);
y = zeros(1,n+1); %// Pre-allocate output array
y(1) = a; %// First entry is the initial root
for idx = 1 : n
numZ = subs(z,x,y(idx)); %// Remember to use PREVIOUS guess for next guess
denZ = subs(diffZ,x,y(idx));
y(idx+1) = y(idx) - double(numZ)/double(denZ); %// Place next guess in right spot
end
r = y; %// Send to output
end
通过使用与上面完全相同的参数运行此代码,我们得到:
f = @(x) sin(x);
r = mynewton(f, 2, 5)
r =
2.0000 4.1850 2.4679 3.2662 3.1409 3.1416
r中的每个值都会告诉您在该特定迭代中对根的猜测.数组的第一个元素是初始猜测(当然).接下来的值是Newton-Raphson根的每次迭代的猜测.请注意,数组的最后一个元素是我们的最后一次迭代,大致等于pi.
matlab如何编newton-raphson,Matlab中的Newton-Raphson方法相关推荐
- c 与matlab混编,C与MATLAB混合编程之调用MATLAB引擎
Visual Studio调用MATLAB需要的配置已经在<Visual Studio调用MATLAB的配置>一文中给出了详细的步骤,本文将介绍混合编程的示例. 在C中调用MATLAB,据 ...
- 噪点检测matlab,基于噪点检测的中值滤波图像去噪方法
摘 要: 图像去噪是图像处理中一个非常重要的环节.针对传统中值滤波方法存在的不足,提出一种新的基于噪点检测的自适应中值滤波图像去噪方法.该方法通过自适应地改变滤波窗口的大小,局部检测并判断极值点是否 ...
- QT matlab 混编-qt调用matlab生成dll
前言 环境: win10 Qt5.12 mingW(64位) matlab2019a(64位)----mingw w64 主要参考的文章:1. https://blog.csdn.net/Justic ...
- c语言matlab混编max函数,Matlab与C++混编 – engin.h
#include #include #include "engine.h" using namespace std; void main() { Engine *ep; //定义M ...
- 【语音编码】基于matlab ADPCM编解码(Matlab代码实现)
- java中的方法在哪里_Java中的本机方法是什么,应在哪里使用?
小编典典 Java中的本机方法是什么,应在哪里使用? 一旦看到一个小例子,就很清楚了: Main.java : public class Main { public native int intMet ...
- 解决了java+matlab混编+web(jsp)调用Matlab,网页中显示Figure,详细实例
例子简介 网上java+matlab混编的挺多,大多数实例也都能实现出来,但是将matlab生成出来Figure显示在jsp页面中并配合WebFigure实现的例子却很少,所以我将自己的尝试结果详细的 ...
- m 文件 dll matlab 中调用_Java与MatLab混编
该篇介绍Java与MatLab的混合编程 环境:Windows10,Jdk 1.8.0_261 64位,MatLab r2018b 64位 先安装MatLab MatLab安装 一.打开MatLab, ...
- matlab振动频谱分析是不是要,VB和Matlab混编实现振动信号的频谱分析
VB和Matlab混编实现振动信号的频谱分析 3 0 物理测试 2 O O 4年第 2期 V B和 Ma t l a b混编实现振动信号的频谱分析 谭轶平, 王振清 ( 北京航空航天大学材料学院,北京 ...
- 码长6075的qc-ldpc编译码的MATLAB误码率仿真
1.算法简介 为满足高的数据需求,提出一种新的QC-LDPC码.该校验矩阵的校验部分为近似下三角结构,上对角线下面的非零元素可以任意放置,因此是一种半确定的结构.这种结构的码设计灵活,性能也极高.通过 ...
最新文章
- UIScrollView offset in UINavigationController
- debian安装emacs23
- arduino 温度调节器_多点测平均温度实现智能控制(arduino-ds18b20)
- Kernel Method的理解
- 山西地区领取2020年下、2021年上半年证书
- mxnet基础到提高(51)-Activation激活函数
- 虚拟机硬盘启动计算机后黑屏,高手亲自教告诉你win7虚拟机启动后黑屏的操作方案...
- spring事务管理之事务回滚的处理
- 通用usb集线器驱动_多口充电、高速传输——ORICO晶锐系列7口集线器测评
- java实现考勤机信息同步
- wdcp支持两种安装方式
- C# 操作线程的通用类[测试通过]
- appium装上开始干嘛
- 函数体中的return以及函数的解的二分法
- 又一个程序员在工位上倒下了!
- qt高级编程附源码_c++ gui qt4编程附源码
- PCB加工文件—Gerber文件的导出(转载)
- 【算法基础三】算法如何入门?零基础入门算法应该学些什么?
- jsp里照片放在哪里_2020年初级会计报名照片怎么上传?
- 使用reg文件修改注册表
热门文章
- 红帽Linux自带的光盘刻录,linux下mkisofs制作光盘映像cdrecord刻录光盘
- selenium.webdriver网页无法正常打开的问题
- 宁录哨兵机器人_当天启碰上哨兵机器人孰强孰弱?这部漫画给出了答案!
- lilo是什么意思_Lilo
- 微软蓝牙鼠标3600拆解
- 物理化学第6版笔记和课后答案(天津大学)
- 微信登录服务器提示异地登录异常,最近QQ微信被异地登录怎么回事 收到微信异地登录的信息怎么办...
- cmf php,php cmf
- linux下解压iso文件
- NOIp模拟赛 巨神兵(状压DP 容斥)