# Finding the last value of a difference equation

조회 수: 2 (최근 30일)
Nick Vasilakis . 2022년 1월 24일
편집: Yongjian Feng . 2022년 1월 27일
Hello!
So I've been assigned to solve this equation: where A is a positive nymber and 0<=n<= N-1, while also N=30
Furthermore I have an initial value of y(-1)=3. I'm looking to find the last value of this equation (so for n=29).
Last, I want my function to be called back by using this code:
result = my_matlab_function(A,N);
disp(['A= ' num2str(A) 'Result=' num2str(result)])
This is what I've managed to write so far, yet MATLAB won't accept it:
function res = my_matlab_function(A,n)
assume(A,'positive');
n:0:1:29;
y(-1)=3;
y(n)=(1/2)*(y(n-1)+(A^2)/(y(n-1)));
result = my_matlab_function(A,N);
disp(['A= ' num2str(A) 'Result=' num2str(result)])
end
##### 댓글 수: 2표시 이전 댓글 수: 1숨기기 이전 댓글 수: 1
Nick Vasilakis 2022년 1월 24일
Ok, but i want for the first value of n (meaning n=0), and given that y(-1)=3 to begin the calculations. So I've got to declare it somewhere!

댓글을 달려면 로그인하십시오.

### 답변 (2개)

Yongjian Feng 2022년 1월 24일
Use:
y(end) = -3
##### 댓글 수: 5표시 이전 댓글 수: 4숨기기 이전 댓글 수: 4
Yongjian Feng 2022년 1월 27일
편집: Yongjian Feng 님. 2022년 1월 27일
You need to call this function with an A value.
1. Save the function as my_matlab_function.m. It is a function that takes an input argument A.
function res = my_matlab_function(A)
if A < 0
% you don't really need this. You use A^2 later, it doesn't really
% matter A < 0 or not
disp('A must be positive');
return;
end
% initialize the first one in the list
y(1) = 3;
% you want apply the expression from n = -1 to n = 29
% but matlab has to start with i = 0. So it is i from 1 to 31
N = 31;
for i=2:N
% each y(i) depends on y(i-1)
y(i)=0.5*(y(i-1)+((A^2)/y(i-1)));
end
% plot it if you want to see how it goes through different n
% plot(1:N, y);
disp(['A= ' num2str(A) '; Result=' num2str(y(N))]);
res = y(N);
end
1. From command line, call this function with an A value. Something like:
my_matlab_function(100)

댓글을 달려면 로그인하십시오.

Torsten 2022년 1월 24일
Then iterate 2-times more starting with n=1 instead of n=-1.
function res = my_matlab_function(A,N)
y = zeros(N+1,1)
y(1) = 3;
for i = 1:N
y(i+1) = 0.5*(y(i) + A^2/y(i))
end
res = y(end)
end
##### 댓글 수: 6표시 이전 댓글 수: 5숨기기 이전 댓글 수: 5
Torsten 2022년 1월 26일
Well, maybe I was not clear in my answer: A has to be prescribed, it can't be deduced.
At least if you don't modify your question somehow.
And again: Arrays in Matlab start with index 1. 0 gives an error message.

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

R2021b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!