求解MATLAB非线性方程参数求解

文档分类:
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,
下载前请先预览,预览内容跟原文是一样的,在线预览图片经过高度压缩,下载原文更清晰。
您的浏览器不支持进度条
下载文档到电脑,查找使用更方便
还剩?页未读,继续阅读
播放器加载中,请稍候...
该用户其他文档
下载所得到的文件列表用matlab求解非线性方程组的几种方法之程序.pdf
文档介绍:
第二章非线性方程(组)的数值解法的MATLAB程序
.高等教育出版社 教育电子音像出版社作者:任玉杰本章主要介绍方程根的有关概念,求方程根的步骤,确定根的初始近似值的方法(作图法,逐步搜索法等),求根的方法(二分法,迭代法,牛顿法,割线法,米勒(Müller)法和迭代法的加速等)及其MATLAB 程序,求解非线性方程组的方法及其MATLAB 程序. .
方程方程方程方程((((组组组组))))的根及其的根及其的根及其的根及其MATLABMATLABMATLABMATLAB 命令命令命令命令 ..
求解方程求解方程求解方程求解方程((((组组组组))))的的的的solve命令命令命令命令求方程f(x)=q(x)的根可以用MATLAB命令: && x=solve('方程f(x)=q(x)',’待求符号变量x’)求方程组fi(x,…,xn)=qi(x,…,xn) (i=,,…,n)的根可以用MATLAB命令: &&E=sym('方程f(x,…,xn)=q(x,…,xn)'); ……………………………………………………. En=sym('方程fn(x,…,xn)=qn(x,…,xn)'); [x,x,…,xn]=solve(E,E,…,En, x,…,xn) ..
求解求解求解求解多项式多项式多项式多项式方程方程方程方程((((组组组组))))的的的的roots命令命令命令命令如果)(xf为多项式,则可分别用如下命令求方程)(=xf的根,或求导数)('xf(见表 -). 表 -
求解多项式方程(组)的roots命令命令
功能xk =roots(fa) 输入多项式)(xf的系数fa(按降幂排列),运行后输出xk为)(=xf的全部根. dfa=polyder(fa) 输入多项式)(xf的系数fa(按降幂排列),运行后输出dfa为多项式)(xf的导数)('xf的系数.dfx=polysym(dfa) 输入多项式)(xf的导数)('xf的系数dfa(按降幂排列),运行后输出dfx为多项式)(xf的导数)('xf. .. .. .. ..
求解方程求解方程求解方程求解方程((((组组组组))))的的的的fsolve命令命令命令命令如果非线性方程(组)是多项式形式,求这样方程(组)的数值解可以直接调用上面已经介绍过的roots命令.如果非线性方程(组)是含有超越函数,则无法使用roots命令,需要调用MATLAB系统中提供的另一个程序fsolve来求解.当然,程序fsolve也可以用于多项式方程(组),但是它的计算量明显比roots命令的大. fsolve命令使用最小二乘法(least squares method)解非线性方程(组) (FX=)的数值解,其中X和F(X)可以是向量或矩阵.此种方法需要尝试着输入解X的初始值(向量或矩阵)X,即使程序中的迭代序列收敛,也不一定收敛到(FX=)的根(见例..). fsolve的调用格式的调用格式的调用格式的调用格式: X=fsolve(F,X)第二章第二章第二章第二章 非线性方程非线性方程非线性方程非线性方程((((组组组组))))的数值解法的数值解法的数值解法的数值解法第二章非线性方程(组)的数值解法的MATLAB程序
.高等教育出版社 教育电子音像出版社作者:任玉杰输入函数)(xF的M文件名和解X的初始值(向量或矩阵)X,尝试着解方程(组)(FX=),运行后输出(FX=)解的估计值(向量或矩阵)X.要了解更多的调用格式和功能请输入:help fsolve,查看说明. . . . .
搜索根的方法及其搜索根的方法及其搜索根的方法及其搜索根的方法及其MATLABMATLABMATLABMATLAB 程序程序程序程序求解非线性方程根的近似值时,首先需要判断方程有没有根?如果有根,有几个根?如果有根,需要搜索根所在的区间或确定根的初始近似值(简称初始值).搜索根的近似位置的常用方法有三种:作图法、逐步搜索法和二分法等,使用这些方法的前提是高等数学中的零点定理. ........
作图法及其作图法及其作图法及其作图法及其MATLABMATLABMATLABMATLAB 程序程序程序程序作函数的图形的方法很多,如用计算机软件的图形功能画图,或用高等数学中应用导数作图,或用初等数学的函数叠加法作图等.下面介绍两种作图程序. 作函数作函数作函数作函数)(xfy====在区间在区间在区间在区间 [[[[a,ba,ba,ba,b] ] ] ] 的图形的的图形的的图形的的图形的MATLABMATLABMATLABMATLAB 程序一程序一程序一程序一 x=a:h:b; % h是步长y=f(x); plot(x,y) grid, gtext('y=f(x)')说明:⑴此程序在MATLAB 的工作区输入,运行后即可出现函数)(xfy=的图形.此图形与x轴交点的横坐标即为所要求的根的近似值. ⑵区间[a,b] 的两个端点的距离b-a和步长h的绝对值越小,图形越精确. 作函数作函数作函数作函数)(xfy====在区间在区间在区间在区间 [[[[a,ba,ba,ba,b]]]]上的图形的上的图形的上的图形的上的图形的MATLABMATLABMATLABMATLAB 程序二程序二程序二程序二将)(xfy=化为)()(xgxh=,其中)()(xgxh和是两个相等的简单函数 x=a:h:b; y=h(x); y=g(x); plot(x, y, x, y) grid,gtext(' y=h(x),y=g(x)')说明:此程序在MATLAB 的工作区输入,运行后即可出现函数)()(xgyxhy==和的图形.两图形交点的横坐标即为所要求的根的近似值. 下面举例说明如何用计算机软件MATLAB的图形功能作图. .. .. .. ..
逐步搜索法逐步搜索法逐步搜索法逐步搜索法及其及其及其及其MATLABMATLABMATLABMATLAB 程序程序程序程序逐步搜索法也称试算法.它是求方程)(=xf根的近似值位置的一种常用的方法. 逐步搜索法依赖于寻找连续函数)(xf满足)(af与)(bf异号的区间],[ba.一旦找到区间,无论区间多大,通过某种方法总会找到一个根. MATLAB 的库函数中没有逐步搜索法的程序,现提供根据逐步搜索法的计算步骤和它的收敛判定准则编写其主程序,命名为zhubuss.m.逐步搜索法的逐步搜索法的逐步搜索法的逐步搜索法的MATLABMATLABMATLABMATLAB 主程序主程序主程序主程序输入区间端点a和b的值,步长h和精度tol,运行后输出迭代次数k=(b-a)/h+,方程)(=xf根的近似值r.fu1
内容来自淘豆网转载请标明出处.
浏览:48次下次自动登录
现在的位置:
& 综合 & 正文
matlab实现牛顿迭代法求解非线性方程组
/aillieo/blog/item/ac9a.html
已知非线性方程组如下3*x1-cos(x2*x3)-1/2=0
x1^2-81*(x2+0.1)^2+sin(x3)+1.06=0
exp(-x1*x2)+20*x3+(10*pi-3)/3=0
求解要求精度达到0.00001
————————————————————————————————
首先建立函数fun
储存方程组编程如下将fun.m保存到工作路径中:
function f=fun(x);
%定义非线性方程组如下
%变量x1 x2 x3
%函数f1 f2 f3
syms x1 x2 x3
f1=3*x1-cos(x2*x3)-1/2;
f2=x1^2-81*(x2+0.1)^2+sin(x3)+1.06;
f3=exp(-x1*x2)+20*x3+(10*pi-3)/3;
f=[f1 f2 f3];
————————————————————————————————
建立函数dfun
用来求方程组的雅克比矩阵将dfun.m保存到工作路径中:
function df=dfun(x);
%用来求解方程组的雅克比矩阵储存在dfun中
df=[diff(f,'x1');diff(f,'x2');diff(f,'x3')];
df=conj(df');
————————————————————————————————
编程牛顿法求解非线性方程组将newton.m保存到工作路径中:
function x=newton(x0,eps,N);
%其中x0为迭代初值eps为精度要求N为最大迭代步数con用来记录结果是否收敛
for i=1:N;
f=subs(fun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)});
df=subs(dfun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)});
for j=1:length(x0);
il(i,j)=x(j);
if norm(x-x0)&eps
%以下是将迭代过程写入txt文档文件名为iteration.txt
fid=fopen('iteration.txt','w');
fprintf(fid,'iteration');
for j=1:length(x0)
fprintf(fid,'
fprintf(fid,'\n%6d
for k=1:length(x0)
fprintf(fid,' %10.6f',il(j,k));
fprintf(fid,'\n计算结果收敛!');
fprintf(fid,'\n迭代步数过多可能不收敛!');
fclose(fid);
————————————————————————————————
在matlab中输入以下内容
newton([0.1 0.1 -0.1],0.00001,20)
————————————————————————————————
<span style="font-size:18 color:#ff0
<span style="font-size:18 color:#ff0
——————————————————————————————————————————————————
在iteration中查看迭代过程
计算结果收敛!
&&&&推荐文章:
【上篇】【下篇】查看: 3248|回复: 15|关注: 0
非线性方程组求解
<h1 style="color:# 麦片财富积分
新手, 积分 14, 距离下一级还需 36 积分
关注者: 1
请问这样的方程组怎么用matlab求解,谢谢大家
论坛优秀回答者
<h1 style="color:#11 麦片财富积分
关注者: 309
参考fzero:
<h1 style="color:# 麦片财富积分
关注者: 1
参考fzero:
/thread--1.html
非常感谢您,我试试
<h1 style="color:# 麦片财富积分
关注者: 1
参考fzero:
/thread--1.html
您好我的M文件如下所示,结果出现了
错误使用 feval
错误: 文件:myfun222.m 行:3 列:11
&a& 以前用作变量,与其在此处作为函数或命令名称的用法冲突。
请参阅 MATLAB 文档中的“MATLAB 如何识别命令语法” 了解详细信息。
function F=myfun222(x)
a=500-4*sqrt(400-x(1)^2)-3*x(1)*x(2);
i1=quadl(@a,-1-x(1),2+x(1));
b=500-4*sqrt(400-x(1)^2)-3*x(1)*x(2);
i2=quadl(@b,-1-x(1),2+x(2));
F(1)=i1+i2-20*x(1);
F(2)=x(1)+x(2)-3;
请问是哪里出错了
论坛优秀回答者
<h1 style="color:#11 麦片财富积分
关注者: 309
您好我的M文件如下所示,结果出现了
错误使用 feval
错误: 文件:myfun222.m 行:3 列:11
原方程你最好将二式代入一式消去y之后进行求解~
你代码中的错误主要是匿名函数的写法不对,比如你消去y之后,第一个积分应该这么写:
a=@(x)500-4*sqrt(400-x^2)-3*x*(3-x);
f1=@(x)quadl(a,-1-x,2+x)
<h1 style="color:# 麦片财富积分
关注者: 1
原方程你最好将二式代入一式消去y之后进行求解~
你代码中的错误主要是匿名函数的写法不对,比如你消去y之 ...
哥,我想求的方程组是一个更复杂的含积分方程组,y并不能用x简单的表示,不能有想我这样的格式的正确表示方法吗?
论坛优秀回答者
<h1 style="color:#11 麦片财富积分
关注者: 309
|此回复为最佳答案
哥,我想求的方程组是一个更复杂的含积分方程组,y并不能用x简单的表示,不能有想我这样的格式的正确表示 ...
不能消去变量的话就用fsolve咯~你的写法差不多是对的,还有一些小错误:
function main
[sol,fval]=fsolve(@myfun222,[1,1])
function F=myfun222(x)
a=@(xx)500-4.*sqrt(400-xx.^2)-3.*xx.*x(2);
i1=quadl(a,-1-x(1),2+x(1));
b=@(xx)500-4.*sqrt(400-xx.^2)-3.*xx.*x(2);
i2=quadl(b,-1-x(1),2+x(2));
F(1)=i1+i2-20.*x(1);
F(2)=x(1)+x(2)-3;复制代码
这里需要注意的就是你积分函数中的x和你需要求解的x其实是两回事,最好你把积分函数中的x用别的字母来替换,不然容易弄混,这里我用的是xx
<h1 style="color:# 麦片财富积分
关注者: 1
不能消去变量的话就用fsolve咯~你的写法差不多是对的,还有一些小错误:
这里需要注意的就是你积分函数 ...
谢谢大神了
<h1 style="color:# 麦片财富积分
关注者: 1
不能消去变量的话就用fsolve咯~你的写法差不多是对的,还有一些小错误:
这里需要注意的就是你积分函数 ...
不好意思,我刚刚用您教的方法,求解我那个非常复杂的方程组,出现了这个问题。我的M文件在附件中错误使用 realmin
输入必须为 'single' 或 'double'。
出错 quadl (line 85)
r = abs(Q2-Q0)/abs(Q1-Q0+realmin(class(Q0)));
出错 myfun111 (line 5)
i1=quadl(f1,y,-1.897-x(1),2.613-x(1));
出错 fsolve (line 217)
& && && && &fuser = feval(funfcn{3},x,varargin{:});
& & Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue
21:01 上传
点击文件名下载附件
2.37 KB, 下载次数: 7
论坛优秀回答者
<h1 style="color:#11 麦片财富积分
关注者: 309
不好意思,我刚刚用您教的方法,求解我那个非常复杂的方程组,出现了这个问题。我的M文件在附件中错误使 ...
首先是quadl的用法你没搞清楚,第一个参数是函数句柄,第二个和第三个参数是积分上下限,你一共输入了4个参数,所以报错
其次你这里完全都是用数值解法,第一句中的syms y z不需要
另外你这个代码写的有些混乱,可能是里面有些变量你自己都搞混了,这一句
f3=@(y)(.04.*sqrt(100-x(1).^2)-15.95.*x(1).*y-1255.81.*y).*(1-exp(-sqrt((0.134.*sqrt(100-z(1).^2)+...
& & 0.19+0.5.*y).^2+(0.5.*sqrt(100-x(1).^2)+1.732/2.*y+x(1)-1.903).^2)/0.12)).*((-x(2))./sqrt(y.^2+x(2).^2))*(-0.304);
为什么会有z的出现?用fsolve求解的话,z应该是用x(3)来表示吧
站长推荐 /2
机器视觉和人工智能在医疗设备中的应用及实现
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区&>&非线性方程组求解matlab程序
非线性方程组求解matlab程序
上传大小:11KB
mulStablePoint 用不动点迭代法求非线性方程组的一个根
mulNewton 用牛顿法法求非线性方程组的一个根
mulDiscNewton 用离散牛顿法法求非线性方程组的一个根
用牛顿-雅可比迭代法求非线性方程组的一个根
mulNewtonSOR 用牛顿-SOR迭代法求非线性方程组的一个根
mulDNewton 用牛顿下山法求非线性方程组的一个根
用两点割线法的第一种形式求非线性方程组的一个根
用两点割线法的第二种形式求非线性方程组的一个根
mulVNewton 用拟牛顿法求非线性方程组的一组解
mulRank1 用对称秩1算法求非线性方程组的一个根
用D-F-P算法求非线性方程组的一组解
用B-F-S算法求非线性方程组的一个根
mulNumYT 用数值延拓法求非线性方程组的一组解
DiffParam1 用参数微分法中的欧拉法求非线性方程组的一组解
DiffParam2 用参数微分法中的中点积分法求非线性方程组的一组解
mulFastDown 用最速下降法求非线性方程组的一组解
用高斯牛顿法求非线性方程组的一组解
用共轭梯度法求非线性方程组的一组解
用阻尼最小二乘法求非线性方程组的一组解...展开收缩
综合评分:4.4(100位用户评分)
所需积分/C币:
下载个数:557
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有28条
挺好用的,好
非常有用,谢谢分享!
很好,多谢
代码还不错,有参考价值
大而全 太用有了
内容还比较多 谢谢分享
但是没有注释 ,没接触过算法
程序简短好用,省了好多时间。缺少注释,不过还是能看懂
很多方法,不错。
东西挺不错的,就是没有各参数的意义说明!
审核通过送C币
计算机算法数学基础
创建者:lijunhu
计算机算法
创建者:lijunhu
创建者:lijunhu
上传者其他资源上传者专辑
matlab混合编程pdf文集
MATLAB混合编程与工程应用.pdf
MATLAB函数大全
matlab自带的一些常用分布的分布律或概率密度
写给matlab新手的几句话
开发技术热门标签
VIP会员动态
CSDN下载频道积分调整公告V1710.17
开通VIP,海量IT资源任性下载
找不到资源?发布悬赏任务百万程序猿帮你提供!
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
CSDN&VIP年卡&4000万程序员的必选
非线性方程组求解matlab程序
会员到期时间:
剩余下载个数:
剩余C币:200
剩余积分:6726
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
全站1200个资源免积分下载
资源所需积分/C币
当前拥有积分
当前拥有C币
全站1200个资源免积分下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
全站1200个资源免积分下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
非线性方程组求解matlab程序MATLAB应用 求解非线性方程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
MATLAB应用 求解非线性方程
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩12页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 c 求解非线性方程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信