matlab两条曲线方程求交点_帮忙matlab求两条曲线交点程序,不知问题出在哪里。...
展开全部
您好,
1. 如果您想用solve算子来得出交点值,您需要把您方程适中除自变量外所有32313133353236313431303231363533e59b9ee7ad9431333330346631的其它参数用数字的形式直接写出来,而不是继续用变量名!
请把您在注释% junction point T z 之后的语句替换为下面的语句 即可成功运行:
zR = solve('1/(0.00379-0.000283*log10(0.101325+1030*9.81*(750+z)*0.000001))-273.15-(2.2+0.054*z+2*erfc(z/2*sqrt(3E-7*500)))','z');
tR = 1/(0.00379-0.000283*log10(0.101325+1030*9.81*(750+zR)*0.000001))-273.15;
zSol = double(zR);
tSol = double(tR);
str = sprintf('The intersection of 2 lines is : \n z = %f \n t = %f', zSol,tSol);
disp(str);
plot(tSol,zSol,'r+','LineWidth',3,'MarkerSize',13);
P.S. 如果您需要查看十分十分确切的结果。请直接在命令窗口(Command Window)中输入:zR 或者tR,便会显示其小数点后二十多位的数值结果。
zR = 162.4976393478409132553141680058
tR = 11.293566711605738946287734914997
2.我看了您上面写的内容。感觉您应该是属于工程领域的吧?由于,我是搞工科的。所以这样的话,我觉得您并不需要使用solve算子来求出理论交点。即使求出来了,也没有太大的实际意义。往往我们需要的数值顶多在小数点后3~6位左右就差不多了。太深的数值精度对于工科而言毫无意义。
3.基于上面的第二点,我修改了您的命令文档。然后通过赋予容忍度1e-5来确定交点。主要思想是:先重新定义z向量(在这里我是用了1e6个点来描述1~300区间内的z值,并将之存储为double双精度类型变量);重新计算T1与TB;用T1-TB得出residu ;然后对于residu中凡是绝对值
4.下面是我修改后的m文件。您直接复制粘贴后运行就行了。另外我额外做了一些图像处理并修改了一些您以前命令中的一些错误,希望能够帮助到您。
clear all
clc
% temperature diffusion 温度扩散曲线
z = 0:300; %depth in mbsf 深度
t1 = 500; % time
b = 0.054; %thermal gradient
DT = 2; %temperature change
k = 3E-7; %thermal diffusivity
To = 2.2; %initial temperature
T1 = To+b.*z+DT.*erfc(z./2.*sqrt(k.*t1)); % 温度随深度扩散曲线
%plot temperature diffusion line
figure('Name', 'Diagram for wulude','NumberTitle','off');
hold on
title('The intersection of 2 lines','FontSize',12);
plot(T1,z,'g','LineWidth',2); %green
xlabel('Temperature (C)','Color','b','FontWeight','bold');
ylabel('Depth (mbsf)','Color','b','FontWeight','bold');
grid on
% hydrate stability Line 稳定方程曲线
% 3.35% salt water 100% pure methane
P = 0.101325+1030.*9.81.*(750+z).*0.000001; %净水压力
LP = log10(P);
TB = 1./(0.00379-0.000283.*LP)-273.15; %稳定方程曲线
% plot hydrate equilibrium
plot(TB,z,'m--','LineWidth',2); %megenta dash
%到这里都没问题
% junction point T z 求两条曲线交点,下面这行出错。
tolerance = 1e-5;
% all the value which is smaller than this will be
% considered as 0
% here, in order to find a good result, we'll use a range more precise
% and recalculate the 2 functions
clear T1 TB z residu
z = linspace(1,300,1e6); % this time, we define 1e6 points between 1 and 300
T1 = To+b.*z+DT.*erfc(z./2.*sqrt(k.*t1));
P = 0.101325+1030.*9.81.*(750+z).*0.000001; %净水压力
LP = log10(P);
TB = 1./(0.00379-0.000283.*LP)-273.15;
residu = T1 - TB; % the difference between 2 functions
% some post-traitement of the result
% therefore we can locate the intersection point
results = [];
for i = 1 : length(z)
if abs(residu(i))
results = [results,i];
end;
end;
l = length(results);
zResult = z(results(1):results(l));
tResult = T1(results(1):results(l));
zSol = mean(zResult);
tSol = mean(tResult);
% draw the point in the figure
plot(tSol,zSol,'r+','LineWidth',3,'MarkerSize',13);
disp('Reel Solution Found');
str = sprintf('The intersection of 2 lines \n z = %f t = %f',zSol,tSol);
disp(str);
title(str,'FontSize',12);
5.最后,由于我电脑装的是32位系统,所以我的最多只能用1e6个点来描述1~300这个区间。如果您使用的是64为系统+64位MATLAB,您可以增大这个数值,并且相应的减小容忍度,来无限接近理论交点——如果您的确需要一个十分十分精确的交点坐标
相反,您可以通过减少点数,增大容忍度,来快速定位您的交点——特别是当如果您处理多条有多个交点的函数时,此方法能够节省很多时间。并且满足您所要求的精确度。
希望上述两种求解方法都能帮助到您~
很高兴为您解答~
matlab两条曲线方程求交点_帮忙matlab求两条曲线交点程序,不知问题出在哪里。...相关推荐
- matlab双纵坐标的绘图命令_[转载]MATLAB画双纵坐标 plotyy的用法 对数坐标
具有两个纵坐标标度的图形 在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数.调用格式为: plotyy(x1,y1,x2,y2) 其中x1,y1对应一条曲线, ...
- java求约数_[转载]Java求最大公约数与最小公倍数
(看到一份不错的总结,拿来收着) 如果数a能被数b整除,a就叫做b的倍数,b就叫做作a的约数.约数和倍数都表示一个数与另一个数的关系,不能单独存在.如只能说16是某数的倍数,2是某数的约数,而不能孤立 ...
- python调用matlab环境配置、非常详细!!!_[python][matlab]使用python调用matlab程序
问题引入 在做实验的时候,需要用到python和matlab工具来进行不同的处理,比如在run神经网络的时候,需要使用pytorch框架得到网络的各个参数,在得到参数后需要使用matlab进行聚类规划 ...
- 对抽象函数求导_抽象函数的求导方法怎么?
2005-10-31 什么是洛必达法则,用它求极限就是求导吗? 我们知道,在求极限时,常会遇到两个无穷小之比的极限或两个无穷大之比的极限.这些极限有的存在,有的不存在.通常称这类极限为"未定 ...
- java三次样条函数求导_利用java语言对三次样条曲线的实现
Java语言中关于曲线问题的高级应用开发在jdk尚未支援2D图形之前,只可以画出直的.相同粗细的线条.现在可以通过2DAPI绘出不同粗细的线条及圆滑的曲线.通过系统java.awt.geom包中提供了 ...
- java高深技术总结_一名25K以上的高薪Java程序员总结出的技术以及学习技能
原标题:一名25K以上的高薪Java程序员总结出的技术以及学习技能 总所周知,Java是目前使用最为广泛的网络编程语言之一. 它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点. 一般 ...
- java 求导函数_在MATLAB中计算数值导数的最佳方法是什么?
这些只是一些快速而肮脏的建议 . 希望有人会发现它们有用! 1. Do you have a symbolic function or a set of points? 如果您有符号功能,您可以分析计 ...
- matlab浮点数求绝对值_在matlab编程中遇到绝对值符号怎么办
fun=@(x,y)y.*log10(y)-x创建关于x,y的匿名函数 log10(x)由于Matlab中自然对数的符号是log(与我们数学上的不同),以10为底的对数符号是log10,同理有log2 ...
- matlab如何泰勒公式用求近似值_用泰勒公式求sin(x)的近似值
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define PI 3.1415927 double FACT(double x); double fact(int ...
- matlab将二值图像与原图重叠_图像处理matlab及图像融合图像镶嵌图像拼接
要把double的图像(范围是0到1)再次转化为256灰度值的,可以这样 Igrey= uint8(I2*255) 图像类型转换函数: dither() 通过颜色抖动,把真彩图像转换成索引图像或灰度图 ...
最新文章
- php 带下划线的函数,[宜配屋]听图阁
- 网络营销——网站在网络营销优化中不收录了怎么办呢?
- quant companies
- Debug Docker: Error response from daemon: dial unix docker.raw.sock: connect: connection refused
- mysql数据库实现主从复制
- 小米蓝牙左右互联_解决不同品牌智能家居的兼容问题,小米米家智能多模网关发布...
- 计算机专业实践试题,计算机专业实践综合试题答案..doc
- /var/spool/postfix/maildrop小文件太多造成inode索引使用完解决
- vue中v-for的使用以及注意事项
- MySQL的show profile(已过时)简介以及该功能在MySQL 5.7中performance_schema中的替代
- 简易python爬虫 - 爬取站长论坛信息
- Python在线 基础教程
- 编译原理(第3版) 清华大学出版社 黄贤英等人著作 课程知识点总结
- 《罪恶街区/Vice Street》手游用户协议
- 从编程角度阐述有限元最佳入门方法:以Abaqus 和OpenSees 为例
- 【资源下载】分享个嵌入式开发的入门教程(包含视频)
- 百度联合哈尔滨发布城市大模型“冰城-百度·文心”, 助力城市智能化建设
- 概率论 1 随机试验 样本空间 随机事件事件间的运算
- 4800u功耗测试软件,ryzen controller---移动端锐龙处理器解锁功耗工具(附使用方法)...
- HDU 2188 经典巴什博弈
热门文章
- How to craw the Info of BiliBIli with python
- 介绍一个免费的开源网站(BootCDN)
- 路由器 OSPF 路由汇总配置
- Percent百分比布局用法
- 安徽省二级计算机证书,在哪个网站打印安徽省二级计算机证书?
- java 版剑指offer算法集锦
- Summary of defect detection algorithms based on deep learning
- VIT实战总结:非常简单的VIT入门教程,一定不要错过
- OBS 卡顿原因 及 优化策略
- 【Excel】Excel读取数据时,提示“服务器连接异常”