octave - 以八度计算逆
问题描述
我是八度的新手。我被要求编写一个函数 [k,y,info]=ivs(a,b,fun,N) 计算给定单变量函数的逆的近似值:fun:[a,b] -->R ; 在区间 [fun(a),fun(b)](或 [fun(b),fun(a)])上的 N 个等距点。y 是结果 k - 反函数的近似值的向量(在等距点上评估) y - 等距点的向量 info - 如果计算以成功结束,则为 0,否则为 0
我写了一些代码,它不起作用,我收到很多错误,但我无法从中找出问题所在。我预计这段代码会有很多错误。我希望有人指出什么是错的。
function [k,y,info]=ivs(a,b,fun,N)
if(a-b==0)
error('computation cannot take place, a=b');
else
if(fun(a)=fun(b))
error('we have a problem, interval is zero length')
end
if(fun(a)<fun(b))
x=linspace(fun(a), fun(b), N);
for l in 1:N
[j,FS,info,out]=fzero(@(j) fun(j)-x(l),[f(a),f(b)]);
y(i)=j;
if(info!=1)
error("Something went wrong with fzero()");
end
end
else
x=linspace(fun(b), fun(a), N);
for l in 1:N
[j,FS,info,out]=fzero(@(j) fun(j)-x(l),[f(a),f(b)]);
y(l)=j;
if(info!=1)
warning("Something went wrong with fzero()");
end
end
end
end
end
解决方案
打字有几个错误,逻辑上也有
您正在声明k
输出但从未创建它。
fun(a)=fun(b)
是作业而不是测试。
for l in 1:N
不是 a 的正确方法for
。
您使用l
的是循环而不是使用i
索引y
。
在调用fzero
区间寻找解决方案不是[f(a),f(b)]
。
修正这些问题,我猜你的功能应该是:
function [k,y,info]=ltrigp(a,b,fun,N)
if(a-b==0)
error('computation cannot take place, a=b');
else
if(fun(a)==fun(b))
error('we have a problem, interval is zero length')
end
if(fun(a)<fun(b))
x=linspace(fun(a), fun(b), N);
for l = 1:N
[j,FS,info,out]=fzero(@(j) fun(j)-x(l),[a,b]);
y(l)=j;
k(l)=x(l);
if(info!=1)
error("Something went wrong with fzero()");
end
end
else
x=linspace(fun(b), fun(a), N);
for l = 1:N
[j,FS,info,out]=fzero(@(j) fun(j)-x(l),[a,b]);
y(l)=j;
k(l)=x(l);
if(info!=1)
warning("Something went wrong with fzero()");
end
end
end
end
end
并像这样工作:
a=1;
b=4;
N=10;
[k,y,info]=ltrigp(a,b,@exp,N)
k =
Columns 1 through 8:
2.7183 8.4827 14.2471 20.0116 25.7760 31.5404 37.3049 43.0693
Columns 9 and 10:
48.8337 54.5982
y =
Columns 1 through 8:
1.0000 2.1380 2.6566 2.9963 3.2494 3.4513 3.6191 3.7628
Columns 9 and 10:
3.8884 4.0000
info = 1
推荐阅读
- reactjs - 反应不从 docker 容器发出请求
- swift - SwiftUI:从另一个初始化程序调用它时,如何让我的闭包返回“内容”而不是“某些视图”?
- excel - VBA粘贴剪贴板内容(唯一值)
- html - 如何在不加倍边框或使用边框折叠的情况下圆桌边框?
- macos - 检测主机是否可以通过跳转主机访问
- java - Spring QueryDsl 分页过滤器按 ACL 权限
- windows - 在 Windows 10 中启用剪贴板历史记录
- laravel - 根据 Laravel 中的下拉选择发送电子邮件
- html - 如何排除 Pug 中的路径?
- c++ - 在 Visual Studio 中模拟 GCC 的 __builtin_unreachable?