Skip to main content

Generate fibonacci numbers in Matlab whose values are less than the given number n using functions

Problem: Generate Fibonacci numbers whose values are less than the given number n. Use the function name 'fibon'. For example fibon(10) should give output as 1 2 3 5 8


Solution: In this function we will generate the fibonacci numbers first by taking the basic numbers in the fibonacci numbers a, b as 0,1 respectively. we will add them to generate the fibonacci numbers using the loop. while we will use the loop the condition is that the value of the sum(generated Fibonacci number) is less than the given number n. But it can be found that for the last iteration the value of the fibonacci number will be less than the given number n and thus the loop goes on and a fibonacci number is generated which is greater than the given number n. Thus finally we will trim off the last number from our vector. You can understand this easily by seeing the program.

Program is as follows:



function fib = fibon(n)
%this function generates fibonacci numbers
%whose values are less than the given number n
%For example the fibon(10) = 1 2 3 5 8

%Create the starting number for the fibonacci sequence
a = 0;
%Basic number#2
b = 1;
%Create an empty vector fib to store the values of the fibonacci numbers
%generated
fib = [];
%Variable to get the fibonacci number after adding a+b
sum = 0;
%while loop to check whether the number is less than the given number n
while sum<n
    sum = a+b;
    fib = [fib sum];
    a = b;
    b = sum;
end

%As we have used while loop we get an additional number greater than the 
%number n and thus we will eliminate the last number to get the desired
%output.
fib = fib(1:length(fib)-1);

You can get teh matlab file of the above script from here: fibon.m

You can get the pdf version of this post with more detailed explanation from here: fibon.pdf

code formatting using hilite.me

Run the program and comment below the output you are getting for a given input.
Keywords: Fibonacci numbers, Matlab function

Popular posts from this blog

Project Euler Problem 67 Solution with Python

Maximum path sum II By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23. 3 7 4 2 4 6 8 5 9 3 That is, 3 + 7 + 4 + 9 = 23. Find the maximum total from top to bottom in triangle.txt (right click and 'Save Link/Target As...'), a 15K text file containing a triangle with one-hundred rows.

Problem 60 Project Euler Solution with python

Prime pair sets The primes 3, 7, 109, and 673, are quite remarkable. By taking any two primes and concatenating them in any order the result will always be prime. For example, taking 7 and 109, both 7109 and 1097 are prime. The sum of these four primes, 792, represents the lowest sum for a set of four primes with this property. Find the lowest sum for a set of five primes for which any two primes concatenate to produce another prime. This problem is j u st a brute force problem. If you have come here because you don't know the limit upto which you will h ave to gener ate the prime numbers t hen go ahe ad and t r y with 10,000 . When I first start ed solving the problem I chose 1 million(beca use most of the problem s on project E uler have this limit ), but it took very long for the computer to fin d the solution. After searching on the internet then I found many people choosing 10, 000 so I have changed my in put f rom 1 million to 10000 and the output was f ast. He...

Project Euler Problem 66 Solution with python

Diophantine equation ¶ Consider quadratic Diophantine equations of the form: $$ x^{2} – Dy^{2} = 1 $$ For example, when $D = 13$, the minimal solution in $ x $ is $ 649^{2} – 13 \times 180^{2} = 1 $ It can be assumed that there are no solutions in positive integers when $ D $ is square. By finding minimal solutions in $ x $ for $ D = {2, 3, 5, 6, 7} $, we obtain the following: $$ 3^{2} – 2×2^{2} = 1 $$ $$ 2^{2} – 3×1^{2} = 1 $$ $$ 9^{2} – 5×4^{2} = 1 $$ $$ 5^{2} – 6×2^{2} = 1 $$ $$ 8^{2} – 7×3^{2} = 1 $$ Hence, by considering minimal solutions in $ x $ for $ D ≤ 7 $, the largest $ x $ is obtained when $ D = 5 $. Find the value of $ D ≤ 1000 $ in minimal solutions of $ x $ for which the largest value of $ x $ is obtained.