43..利用fsolve函数解对应lambda下的方程组(matlab程序)

news2024/11/28 18:56:08

1.简述

      

fsolve的基本用法 : x = fsolve(fun,x0)

其中fun应为函数句柄,x0为搜索的种子,即预估的fun=0的解的大致位置。

函数句柄的定义方式主要有两种:

1.定义函数文件,使用@操作符

定义function文件root2d.m, 如下:

function F = root2d(x)
    F(1) = exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2);
    F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;
end

命令行运行:

fun = @root2d;      % 获得函数句柄 
x0 = [0,0];         % 定义种子 
x = fsolve(fun,x0)  % 求解

或者

x0 = [0,0];         % 定义种子 
x = fsolve(@root2d,x0)  % 求解

即可获得目标解。

这时会有提示:

fsolve completed because the vector of function values is near zero

意思是:fsolve完成,因为函数值的向量接近零。这代表求解成功,其他情况的提示一般为求解失败,各种报错陆续更新。


fsolve的进阶用法

上面的定义方式可以很简单的获得非线性方程的根,但是需要定义function文件,使用起来不是很方便,尤其是当需要求解 �(�)=�0 时,反复修改function是非常不划算的。这时候,采用匿名函数进行求解就非常方便了。

以求解 �∗�∗�=[1,2;3,4] 为例,运行

fun = @(x)x*x*x - [1,2;3,4]; 
x0 = ones(2);
fsolve(fun,x0)

即可获得想要的结果。

以求解上一节中的问题为例

fun = @(x)[exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2);...
x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;] - [0.1 0.1];
x0 = [0,0];  
fsolve(fun,x0)

2.代码

function equation()
global sigma mu T lambda
sigma=5;   %定义sigma的值
mu=0.4;    %定义mu的值
T=1.7;     %定义T的值
N=1;
for lambda=0:0.05:1   %lambda从0到1,隔0.05计算一个点
    x0=[0.5000 0.5000 1.1817 1.1817 1.0000 1.0000 0.9354 0.9354]*1;    %定义迭代初值
    x=fsolve(@myfun,x0);    %采用fsolve函数解对应lambda下的方程组,结果保存在x里
    value(N)=x(7)-x(8);     %求出对应lambda下的omega1-omega2的值,保存在value里
    N=N+1;
end
lambda=0:0.05:1;
plot(lambda,value)   %绘图
title(['T=',num2str(T)])   %给出图的标题


end

function F=myfun(x)
global sigma mu T lambda
%x(1)~x(8)分别对应8个未知数
Y1=x(1);    
Y2=x(2);
G1=x(3);
G2=x(4);
w1=x(5);
w2=x(6);
omega1=x(7);
omega2=x(8);
%定义8个方程
eq1=Y1-mu*lambda*w1-(1-mu)/2;
eq2=Y2-mu*(1-lambda)*w2-(1-mu)/2;
eq3=G1-(lambda*w1^(1-sigma)+(1-lambda)*(w2*T)^(1-sigma))^(1/(1-sigma));
eq4=G2-(lambda*(w1*T)^(1-sigma)+(1-lambda)*w2^(1-sigma))^(1/(1-sigma));
eq5=w1-(Y1*G1^(sigma-1)+Y2*(G2^(sigma-1))*T^(1-sigma))^(1/sigma);
eq6=w2-(Y1*(G1^(sigma-1))*T^(1-sigma)+Y2*G2^(sigma-1))^(1/sigma);
eq7=omega1-w1*G1^(-mu);
eq8=omega2-w2*G2^(-mu);
%返回方程组
F=[eq1;eq2;eq3;eq4;eq5;eq6;eq7;eq8];
end


 

3.运行结果

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/843683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nvm下载node导致npm报错无法使用

有个依赖库需要更新下node,用nvm下载后项目跑不起来了,npm -v 还报错 其实一开始是npm下载不来,然后换了淘宝镜像后还是报错 然后就只能手动下载下了 进入node.js官网 https://nodejs.org/en/download 下载后注意要安装在你nvm目录中&#x…

httpd+Tomcat(jk)的Web动静分离搭建

动静分离是指将动态请求和静态请求分别交给不同的服务器来处理,可以提高服务器的效率和性能。在Java Web开发中,常见的动态请求处理方式是通过Tomcat来处理,而静态请求则可以通过Apache服务器来处理。本文将详细讲解如何结合Apache和Tomcat来…

MySQL的数据插入总结(不存在就插入,存在就更新)

MySQL的数据插入总结(不存在就插入,存在就更新) 1. on duplicate key update 当在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的…

高性能计算集群使用

一、PuTTY的下载与安装 PuTTY是一款开源的连接软件,是 SSH、Telnet、Rlogin 和 SUPDUP 网络协议的客户端程序。 下载网址:Download PuTTY - a free SSH and telnet client for Windows 安装好后连接自己的服务器 输入用户名和密码,回车登录…

前端安全XSS和CSRF讲解

文章目录 XSSXSS攻击原理常见的攻击方式预防措施 CSRFCSRF攻击原理常见攻击情景预防措施: CSRF和XSS的区别 XSS 全称Cross Site Scripting,名为跨站脚本攻击。为啥不是单词第一个字母组合CSS,大概率与样式名称css进行区分。 XSS攻击原理 不…

【数据结构】单链表OJ题(二)

🔥博客主页:小王又困了 📚系列专栏:数据结构 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、链表分割 💡方法一: 二、链表的回文 &#x…

5个可以创意灵感的AI绘画工具

当设计灵感耗尽,陷入创作瓶颈时,人工智能艺术生成器可能会为您提供新的启示。这些基于深度学习和发展“神经网络”的工具可以将输入的文本描述或图像转换成各种风格的艺术作品,并提供丰富的风格参数和材料库,让您可以自由调整和创…

Web3 solidity编写交易所合约 编写ETH和自定义代币存入逻辑 并带着大家手动测试

上文 Web3 叙述交易所授权置换概念 编写transferFrom与approve函数我们写完一个简单授权交易所的逻辑 但是并没有测试 其实也不是我不想 主要是 交易所也没实例化 现在也测试不了 我们先运行 ganache 启动一个虚拟的区块链环境 先发布 在终端执行 truffle migrate如果你跟着我…

C++初阶缺省参数

目录 缺省参数全缺省半缺省有意义的使用场景注意点 缺省参数 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。 举例:Func(2),那么a就是2,Fu…

LeetCode[210]课程表II

难度:Medium 题目: 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。 例如,想要学…

8.7面经

1.字符串是怎么实现不可变的,不可变类,字符串不可变的好处 (1)保存字符串的数组被 final 修饰且为私有的,并且String 类没有提供/暴露修改这个字符串的方法。 (2)String 类被 final 修饰导致其不能被继承&#xff0c…

2023上半年京东烘干机行业品牌销售排行榜(京东商品数据)

随着人们消费水平的提高,追求健康品质消费的用户越来越多,这样的消费升级为市场的发展带来很大的动力。同时,随着洗衣机市场趋向饱和,增长趋于平缓,更新换代和结构升级成为行业的主旋律。 在这一市场背景下&#xff0…

【VUE】项目本地开启https访问模式(vite4)

在实际开发中,有时候需要项目以https形式进行页面访问/调试,下面介绍下非vue-cli创建的vue项目如何开启https 环境 vue: ^3.2.47vite: ^4.1.4 根据官方文档:开发服务器选项 | Vite 官方中文文档 ps:首次操作,不要被类…

Crond计划任务和用户权限提升(三十七)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、一次性任务 二、周期性任务 ​编辑 三、用户权限提升 3.1 su 3.2 sudo提权 总结 前言 计划任务是在指定的时间间隔内自动执行的任务。在Linux系统中&#xff…

开源项目如何贡献代码

以腾讯犀牛鸟开源项目ncnn为例 目录 fork项目仓库 添加远程仓库 同步更新仓库 贡献代码提交新PR PR未merge更新PR fork项目仓库 只需要做一次 到仓库页面点击fork,然后create forkTencent/ncnn: ncnn is a high-performance neural network inference frame…

Grafana 曲线图报错“parse_exception: Encountered...”

问题现象 配置的Grafana图报错如下: 原因分析 点开报错,可以看到报错详细信息,是查询语句的语法出现了异常。 变量pool的取值为None 解决方案 需要修改变量pool的查询SQL,修改效果如下: 修改后&#x…

Gym 0.26.2版本简明教程【1】

Gym 0.26.2版本简明教程【1】 文章目录 Gym 0.26.2版本简明教程【1】1. 构建gym环境2. gym.Env常用method3. 关于 gym 0.26.2新版本的更改4. Reference 1. 构建gym环境 使用gym.make(id,render_mode)我们可以注册一个环境,然后我们可以查看一下这个环境的一些信息&…

自动化处理,web自动化测试处理多窗口+切换iframe框架页总结(超细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 web 自动化之处理…

TVS二极管能替代稳压二极管吗?有什么区别?

经常有应用工程师询问:TVS二极管能否替代替换稳压二极管?接下来,TVS厂家东我电子针对TVS二极管和稳压二极管这个话题,详细讲解下这两者的相同点和不同点。 TVS二极管英文名是:Transient voltage suppression diode&am…

3.01 用户在确认订单页收货地址操作

用户在确认订单页面,可以针对收货地址做如下操作: 1. 查询用户的所有收货地址列表 2. 新增收货地址 3. 删除收货地址 4. 修改收货地址 5. 设置默认地址步骤1:创建对应用户地址BO public class AddressBO {private String addressId;private…