matlab实现不动点迭代、牛顿法、割线法
不动点迭代
function xc = fpi( g, x0, tol )
x(1) = x0;
i = 1;
while 1
x(i + 1) = g(x(i));
if(abs(x(i+1) - x(i)) < tol)
break
end
i = i + 1;
end
xc = x(i+1);
end
牛顿法:
function xk = funNewton(f, x0, max_steps, tol)
syms x
symbol_f = f(x);
dif_f = matlabFunction(diff(symbol_f));
clear x
x = x0;
for k = 1:max_steps
xk = x;
disp(['the ', num2str(k), ' time is ', num2str(x)])
%xk to save the last time value of x
x = x - f(x) / dif_f(x);
%newton solve
if(abs(xk - x) < tol)
%decide whether to break out
break;
end
end
end
割线法:
function xc = CutLine( f, x0, x1, tol )
x(1) = x0;
x(2) = x1;
i = 2;
while 1
x(i + 1) = x(i) - (f(x(i)) * (x(i) - x(i - 1))) / (f(x(i)) - f(x(i - 1)));
if(abs(x(i + 1) - x(i)) < tol)
break;
end
i = i + 1;
end
xc = x(i + 1);
end
Stewart平台运动学问题求解:
function out = Stewart( theta )
% set the parameter
x1 = 4;
x2 = 0;
y2 = 4;
L1 = 2;
L2 = sqrt(2);
L3 = sqrt(2);
gamma = pi / 2;
p1 = sqrt(5);
p2 = sqrt(5);
p3 = sqrt(5);
% calculate the answer
A2 = L3 * cos(theta) - x1;
B2 = L3 * sin(theta);
A3 = L2 * cos(theta + gamma) - x2;
B3 = L2 * sin(theta + gamma) - y2;
N1 = B3 * (p2 ^ 2 - p1 ^ 2 - A2 ^ 2 - B2 ^ 2) - B2 * (p3 ^ 2 - p1 ^ 2 - A3 ^ 2 - B3 ^ 2);
N2 = -A3 * (p2 ^ 2 - p1 ^ 2 - A2 ^ 2 - B2 ^ 2) + A2 * (p3 ^ 2 - p1 ^ 2 - A3 ^ 2 - B3 ^ 2);
D = 2 * (A2 * B3 - B2 * A3);
out = N1 ^ 2 + N2 ^ 2 - p1 ^ 2 * D ^ 2;
end
test our function at theta = - pi / 4 and theta = pi / 4
clear all
clc
format short
disp('f(- pi / 4) is ')
out1 = Stewart(- pi / 4)
disp('--------------')
disp('f(pi / 4) is ')
out2 = Stewart(pi / 4)
matlab实现不动点迭代、牛顿法、割线法的更多相关文章
- 非线性方程(组):一维非线性方程(一)二分法、不动点迭代、牛顿法 [MATLAB]
1. 二分法(Bisection) 1) 原理 [介值定理] 对于连续的一元非线性函数,若其在两个点的取值异号,则在两点间必定存在零点. [迭代流程] 若左右两端取值不同,则取其中点,求其函数值,取中 ...
- MATLAB线性方程组的迭代求解法
MATLAB线性方程组的迭代求解法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验目的 1. 借助矩阵按模最大特征值,判断解方程组的Jacobi ...
- LA 4998简单加密游戏 —— 自相似性质&&不动点迭代
题意 输入正整数 $K_1$($K_1 \leq 50000$),找一个12为正整数 $K_2$(不能含有前导0)使得 ${K_1}^{K_2} \equiv K_2(mod \ {10}^{12}) ...
- 非线性方程(组):MATLAB内置函数 solve, vpasolve, fsolve, fzero, roots [MATLAB]
MATLAB函数 solve, vpasolve, fsolve, fzero, roots 功能和信息概览 求解函数 多项式型 非多项式型 一维 高维 符号 数值 算法 solve 支持,得到全部符 ...
- matlab实用教程
苏金明.2005.电子工业 1 语句末尾加 : 可以不显示到屏. who 查看变量 whos 列出变量信息 exist t 判断变量是否在空间中. help 函数 doc 函数 : doc f ...
- 数值分析:幂迭代和PageRank算法
1. 幂迭代算法(简称幂法) (1) 占优特征值和占优特征向量 已知方阵\(\bm{A} \in \R^{n \times n}\), \(\bm{A}\)的占优特征值是量级比\(\bm{A}\)所有 ...
- 数值分析:幂迭代和PageRank算法(Numpy实现)
1. 幂迭代算法(简称幂法) (1) 占优特征值和占优特征向量 已知方阵\(\bm{A} \in \R^{n \times n}\), \(\bm{A}\)的占优特征值是比\(\bm{A}\)的其他特 ...
- python牛顿法求一元多次函数极值
现在用牛顿法来实现一元函数求极值问题 首先给出这样一个问题,如果有这么一个函数$f(x) = x^6+x$,那么如何求这个函数的极值点 先在jupyter上简单画个图形 %matplotlib inl ...
- Cordic算法简介
作者:桂. 时间:2017-08-14 19:22:26 链接:http://www.cnblogs.com/xingshansi/p/7359940.html 前言 CORDIC算法常用来求解信号 ...
随机推荐
- highchairts柱状图显示数值并且带单位
$(target).highcharts({ chart: { type: 'bar' }, colors: [ "#1ab394" ], title: { text: title ...
- TOP 10 BEST LINUX GAMES RELEASED IN 2016
Gaming on Linux used to be a very rare phrase. But since the arrival of Steam on Linux, the Linux ga ...
- 洛谷P1251 餐巾(网络流)
P1251 餐巾 15通过 95提交 题目提供者该用户不存在 标签网络流贪心 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 为什么我全部10个测试点都对… 题目描述 一个餐厅在相继的N天里 ...
- parseInt在IE8转换返回不相等(parseInt("08")返回0等以0开头大于7的数字串)
描述 在IE8内核下parseInt("08")返回0,等以0开头大于7的数字串返回的值不相等 解决方法 parseInt当不指定radix时,当以0x开头时,s按照十六进制计算的 ...
- CSS其他
1.元素的宽度由内容撑开 display:inline;——不支持高度 display:inline-block;——在IE6下,不支持块标签 float position:absolute——每项设 ...
- Part 8 Coalesce function in sql server
- lua技巧分享之保护执行
我们在c#/c++里为了防止调用出现异常的时候程序可以正常的执行,经常使用try{}catch{}的结构, 那么,语言简单的lua是怎么做到的呢?答案就在pcall 先简单的介绍一下这个函数: --尝 ...
- 【学习笔记】【C语言】数据
1. 什么是数据 生活中时时刻刻都在跟数据打交道,比如体重数据.血压数据.股价数据等.在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文字数据.用迅 ...
- Window下配置NodeJs环境详解
今年打算学习Web这块,所以就买了本Node.js+MongoDb+AngularJS这本书,这周天也比较忙,想着录视频(拍小片,不是AV,不要误会,是在线课程)的事情,这周又将Asp.Net ...
- ESB数据发布思路
通过esb已经将数据采集进数据库,现在需要开放一个接口,接受请求参数,进而通过参数进行数据查询,返回一段json格式的数据. ▼流程图: 刚开始尝试了很多个版本,可能是esb开发工具还用不熟练的原因吧 ...